Skip to content

Commit

Permalink
update certs
Browse files Browse the repository at this point in the history
  • Loading branch information
buremba committed Feb 10, 2025
1 parent a08a89d commit dc6b930
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 16 deletions.
19 changes: 18 additions & 1 deletion DEVELOPMENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,24 @@
act push --container-architecture linux/amd64 --secret-file .env.act --workflows ./.github/workflows/test.yml --insecure-secrets
```

# [DRAFT] Transformers
# Update certs

1. Start [the instance](https://console.cloud.google.com/compute/instancesDetail/zones/us-central1-a/instances/instance-20240709-162937?inv=1&invt=AbpNfQ&project=jinjat-demo)

2. Connect and update the certs
```bash
gcloud compute ssh --zone "us-central1-a" "instance-20240709-162937" --project "jinjat-demo"
```

Update IP on DNS: https://dash.cloudflare.com/09f0f68ebdbed47d203725997d4cfbdb/localhostcomputing.com/dns/records

```bash
sudo certbot certonly --standalone --domains localhostcomputing.com
```

3. Update the [util.py](/universql/util.py)

# Plugins

If you would like to enable custom logic inside Universql, to support transition in between different dialects or just
```bash
Expand Down
2 changes: 1 addition & 1 deletion universql/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ def snowflake(host, port, ssl_keyfile, ssl_certfile, account, catalog, metrics_p
logger.info(f"Using the SSL keyfile and certfile for {LOCALHOSTCOMPUTING_COM}. DNS resolves to {data}")
if "127.0.0.1" not in data[2]:
logger.error(
f"The DNS setting for f{LOCALHOSTCOMPUTING_COM} doesn't point to localhost, refusing to start. Please update UniverSQL.")
f"The DNS setting for {LOCALHOSTCOMPUTING_COM} doesn't point to localhost, refusing to start. Please update UniverSQL.")
sys.exit(1)
except socket.gaierror as e:
logger.warning(f"Unable to resolve DNS for {LOCALHOSTCOMPUTING_COM}, you're not connected to the internet")
Expand Down
26 changes: 12 additions & 14 deletions universql/util.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import base64
import datetime
import gzip
import importlib
import json
import logging
import os
Expand All @@ -20,6 +20,7 @@
logging.basicConfig(level=logging.INFO, format='%(asctime)s.%(msecs)s %(name)s %(levelname)-6s %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')


class Compute(Enum):
LOCAL = "local"
CLOUD = "cloud"
Expand All @@ -32,13 +33,14 @@ class Compute(Enum):
# LOCALHOST_UNIVERSQL_COM_BYTES = {
# "cert": base64.b64encode("""-----BEGIN CERTIFICATE-----
# -----END CERTIFICATE-----""".encode('utf-8')),
# "key": base64.b64encode("""-----BEGIN PRIVATE KEY-----
# -----END PRIVATE KEY-----""".encode('utf-8'))
# "key": base64.b64encode("""-----BEGIN EC PRIVATE KEY-----
# -----END EC PRIVATE KEY-----""".encode('utf-8'))
# }
# print(LOCALHOST_UNIVERSQL_COM_BYTES)

LOCALHOST_UNIVERSQL_COM_BYTES = {
'cert': b'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURqRENDQXhLZ0F3SUJBZ0lTQTlISENaclNzdVFhVUxmNk1Cd1BsemdRTUFvR0NDcUdTTTQ5QkFNRE1ESXgKQ3pBSkJnTlZCQVlUQWxWVE1SWXdGQVlEVlFRS0V3MU1aWFFuY3lCRmJtTnllWEIwTVFzd0NRWURWUVFERXdKRgpOVEFlRncweU5ERXhNVEl4TkRJMU16ZGFGdzB5TlRBeU1UQXhOREkxTXpaYU1DRXhIekFkQmdOVkJBTVRGbXh2ClkyRnNhRzl6ZEdOdmJYQjFkR2x1Wnk1amIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBVDcKeWxDU0cvNXlqRWNlYXFVaEI3Q0tZRzRGL21oZEJhN2lOcFZQZXh0TDhHT2VWK0tQa1hGYkp5eUUwYmdtV3J4Tgo2MXo3c2FvMXFDOGNISGtWOFdZT280SUNGekNDQWhNd0RnWURWUjBQQVFIL0JBUURBZ2VBTUIwR0ExVWRKUVFXCk1CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFQWpBQU1CMEdBMVVkRGdRV0JCVEgKN296ZWdCc0M3M3g3WWhSdWNDRU9CSkhPY2pBZkJnTlZIU01FR0RBV2dCU2ZLMS9QUENGUG5RUzM3U3NzeE1adwppOUxYRFRCVkJnZ3JCZ0VGQlFjQkFRUkpNRWN3SVFZSUt3WUJCUVVITUFHR0ZXaDBkSEE2THk5bE5TNXZMbXhsCmJtTnlMbTl5WnpBaUJnZ3JCZ0VGQlFjd0FvWVdhSFIwY0RvdkwyVTFMbWt1YkdWdVkzSXViM0puTHpBaEJnTlYKSFJFRUdqQVlnaFpzYjJOaGJHaHZjM1JqYjIxd2RYUnBibWN1WTI5dE1CTUdBMVVkSUFRTU1Bb3dDQVlHWjRFTQpBUUlCTUlJQkF3WUtLd1lCQkFIV2VRSUVBZ1NCOUFTQjhRRHZBSFlBb3VNSzVFWHZ2YTJiZmpqdFIyZDNVOWVDClc0U1UxeXRlR3l6RXVWQ2tSK2NBQUFHVElQbVNGQUFBQkFNQVJ6QkZBaUF3MkdKSGhIQUs0STZJQjJKWjlaRzEKeDk4Mzlhc0Q3Q0FUVlFRL2YrUjFSd0loQU8xZm5WSy9JMVduZ1BSRDczejN1SE5LelN6S1NQVU9WSlVVSlNGNAphN2VGQUhVQXp4Rlc3dFV1ZksvemgxdlphUzZiNlJweFowcXdGK3lzQWRKYmQ4N01Pd2dBQUFHVElQbVNRd0FBCkJBTUFSakJFQWlBelhBdnQ1MzJlaFBhMndGN0E5Zk9UL0lnQ1pQNHhYV2JpN2FRaTg5RmU2UUlnYndjcHJWaWMKOEh3SncyTURKbVRmZEg0TlpRVWNsbXcvZ0xBNzFSVU1LUEF3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl3R2pSVwpqRGZmQVdHb2pDM08zVUhnS3l1NEZFK2IyaVNyTzZvN1ZLaU84bjJldjZlWXY3OEhGdEVVazUxWnk3MXhBakVBCnFWSTh4UUxnZHRIcnZiaW0wSlU0a2JpK3R4OTJkVzUwS2ovb3Yxckd1bXJRQWhPc3hIa1B3WXBUd1hZTXZ3SWoKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRVZ6Q0NBaitnQXdJQkFnSVJBSU9QYkdQT3NUbU1ZZ1ppZ3hYSi9kNHdEUVlKS29aSWh2Y05BUUVMQlFBdwpUekVMTUFrR0ExVUVCaE1DVlZNeEtUQW5CZ05WQkFvVElFbHVkR1Z5Ym1WMElGTmxZM1Z5YVhSNUlGSmxjMlZoCmNtTm9JRWR5YjNWd01SVXdFd1lEVlFRREV3eEpVMUpISUZKdmIzUWdXREV3SGhjTk1qUXdNekV6TURBd01EQXcKV2hjTk1qY3dNekV5TWpNMU9UVTVXakF5TVFzd0NRWURWUVFHRXdKVlV6RVdNQlFHQTFVRUNoTU5UR1YwSjNNZwpSVzVqY25sd2RERUxNQWtHQTFVRUF4TUNSVFV3ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBUU5DenFLCmEyR090dS9jWDFqbnhrSkZWS3RqOW1aaFNBb3VXWFcwZ1FJM1VMYy9Gbm5jbU95aEtKZHlJQndzejlWOFVpQk8KVkhoYmhCUnJ3SkN1aGV6QVVVRThXb2QvQmszVS9tRFIrbXd0NFgyVkVJaWlDRlFQbVJwTTV1b0tyTmlqZ2ZndwpnZlV3RGdZRFZSMFBBUUgvQkFRREFnR0dNQjBHQTFVZEpRUVdNQlFHQ0NzR0FRVUZCd01DQmdnckJnRUZCUWNECkFUQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQjBHQTFVZERnUVdCQlNmSzEvUFBDRlBuUVMzN1Nzc3hNWncKaTlMWERUQWZCZ05WSFNNRUdEQVdnQlI1dEZubWU3Ymw1QUZ6Z0FpSXlCcFk5dW1iYmpBeUJnZ3JCZ0VGQlFjQgpBUVFtTUNRd0lnWUlLd1lCQlFVSE1BS0dGbWgwZEhBNkx5OTRNUzVwTG14bGJtTnlMbTl5Wnk4d0V3WURWUjBnCkJBd3dDakFJQmdabmdRd0JBZ0V3SndZRFZSMGZCQ0F3SGpBY29CcWdHSVlXYUhSMGNEb3ZMM2d4TG1NdWJHVnUKWTNJdWIzSm5MekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBZ0VBSDNLZE5FVkNRZHFrMExLeXVOSW1US2RSSlkxQwoydXcyU0phanVocWt5R1BZOEMrenpzdWZaK21nbmhucTFBMktWUU9TeWtPRW5VYngxY3k2MzdyQkFpaHg5N3IrCmJjd2JaTTZzVERJYUVyaVIvUExrNkxLczlCZTB1b1Z4Z09LRGNwRzlzdkQzM0orRzlMY2Z2MUs5bHVEbVNUZ0cKNlhORklONXZmSTVncy9sTVB5b2pFTWRJeks5YmxjbDIvMXZLeE84V0dDY2p2c1ExbkovUHd0OExRWkJmT0Z5VgpYUDh1YkFwL2F1M2RjNEVLV0c5TU81emN4MXFUOStOWFJHZFZXeEd2bUJGUkFhamNpTWZYTUUxWnVHbWszL0dPCmtvQU03WmtqWm1sZXlva1AxTEd6bWZKY1VkOXM3ZWV1MS85L2VnNVhsWGQvNTVHdFlqQU0rQzRERzVpN2VhTnEKY20yRit5eFlJUHQ2Y2JidFlWTkpDR2ZIV3FIRVE0RllTdFV5Rm52OHNqeXFVOHlwZ1phTko5YVZjV1NJQ0xPSQpFMS9Rdi83b0tzblpDV0o5MjZ3VTZScUcxT1lQR09pMXp1QUJoTHc2MWN1UFZEVDI4blFTL2U2ejk1Y0pYcTBlCksxQmNhSjZmSlpzbWJqUmdENXAzbXZFZjV2ZFFNN01DRXZVMHRIYnN4Mkk1bUhISm9BQkhiOEtWQmdXcC9sY1gKR1dpV2FlT3lCN1JQK09mRHR2aTJPc2FweFhpVjd2TlZzN2ZNbHJSalkxam9LYXFtbXljbkJ2QXExNEFFYnR5TApzVmZPUzY2QjhhcGtlRlgyTlk0WFBFWVY0WlNDZThWSFByZHJFUmsyd0lMRzNUL0VHbVNJa0NZVlVNU25qbUpkClZRRDlGNk5hLyt6bVhDYz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ==',
'key': b'LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JR0hBZ0VBTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ0FUQmR4ZVhWdEcrSFpLREEKdll0eFR6alFLNHFYZnlnVXFBeDBYTy9lSWlPaFJBTkNBQVQ3eWxDU0cvNXlqRWNlYXFVaEI3Q0tZRzRGL21oZApCYTdpTnBWUGV4dEw4R09lVitLUGtYRmJKeXlFMGJnbVdyeE42MXo3c2FvMXFDOGNISGtWOFdZTwotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0t'}
'cert': b'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURqVENDQXhPZ0F3SUJBZ0lTQTgycTJLRVpFRHhhakRoUENObnpuR3F1TUFvR0NDcUdTTTQ5QkFNRE1ESXgKQ3pBSkJnTlZCQVlUQWxWVE1SWXdGQVlEVlFRS0V3MU1aWFFuY3lCRmJtTnllWEIwTVFzd0NRWURWUVFERXdKRgpOVEFlRncweU5UQXlNVEF4TlRNME5USmFGdzB5TlRBMU1URXhOVE0wTlRGYU1DRXhIekFkQmdOVkJBTVRGbXh2ClkyRnNhRzl6ZEdOdmJYQjFkR2x1Wnk1amIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUjEKU01Ua0NDZjJnMUhYcGIxRGNUT1YrWm4wY0xuY2hVZDVURXNiSmYweFhMNk9xY2ZZbWMwL0s3MTNQbk55SFVpNQpwdzh4NXlSNkpHd05xS1FHaWN2b280SUNHRENDQWhRd0RnWURWUjBQQVFIL0JBUURBZ2VBTUIwR0ExVWRKUVFXCk1CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFQWpBQU1CMEdBMVVkRGdRV0JCVEgKTEF2aUJqeHc3K05jOTB1NTllNCsvNGRlY0RBZkJnTlZIU01FR0RBV2dCU2ZLMS9QUENGUG5RUzM3U3NzeE1adwppOUxYRFRCVkJnZ3JCZ0VGQlFjQkFRUkpNRWN3SVFZSUt3WUJCUVVITUFHR0ZXaDBkSEE2THk5bE5TNXZMbXhsCmJtTnlMbTl5WnpBaUJnZ3JCZ0VGQlFjd0FvWVdhSFIwY0RvdkwyVTFMbWt1YkdWdVkzSXViM0puTHpBaEJnTlYKSFJFRUdqQVlnaFpzYjJOaGJHaHZjM1JqYjIxd2RYUnBibWN1WTI5dE1CTUdBMVVkSUFRTU1Bb3dDQVlHWjRFTQpBUUlCTUlJQkJBWUtLd1lCQkFIV2VRSUVBZ1NCOVFTQjhnRHdBSFlBNXRJeFkwQjNqTUVRUVFiWGNibk93ZEpBCjlwYUVodnU2aHpJZC9SNDNqbEFBQUFHVThMVlRyd0FBQkFNQVJ6QkZBaUVBeUNSNlZlMVNoYWFicFMzeDNUL3QKSWl3VDNpRHovS0xWWEszNFcyMC9LdEVDSUhpMDdkcDB2SHlGd3hRb3FWMVlONHJxTGNDdFE3R0REODFkRENsVQo2TmhaQUhZQVRuV2pKMXlhRU1NNFcyelUzejlTNngzdzRJNGJqV25Bc2Zwa3NXS2FPZDhBQUFHVThMVlRvd0FBCkJBTUFSekJGQWlFQS9NbUxVRmhiRjNBbXVad1Y0cU11ZHJoTkVVWWJRWEdFMTQvZU5OeUJ4aDhDSUFzWDVrSk8KYjFtR0NTOFoyT0F0cGRuQ3JVcjVneXF5OG1DVnhkbWowak4xTUFvR0NDcUdTTTQ5QkFNREEyZ0FNR1VDTVFDRAowWmxQbnBlUEdsZDdMVnloQTFFVXlHVVhZb2o2ZUs0Ynd1VUJnZFhWMXphRkhlUGlDYjV0VHMxNm4wM1g5eVlDCk1GQkwrQjZLTWR2Y0s0bnIxVlU5aEd3cmJuK3dUa1J5NVpBL2toWjRQSSswVmh2OWIzNkN2MEt5ZytNLzJOODEKcGc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlFVnpDQ0FqK2dBd0lCQWdJUkFJT1BiR1BPc1RtTVlnWmlneFhKL2Q0d0RRWUpLb1pJaHZjTkFRRUxCUUF3ClR6RUxNQWtHQTFVRUJoTUNWVk14S1RBbkJnTlZCQW9USUVsdWRHVnlibVYwSUZObFkzVnlhWFI1SUZKbGMyVmgKY21Ob0lFZHliM1Z3TVJVd0V3WURWUVFERXd4SlUxSkhJRkp2YjNRZ1dERXdIaGNOTWpRd016RXpNREF3TURBdwpXaGNOTWpjd016RXlNak0xT1RVNVdqQXlNUXN3Q1FZRFZRUUdFd0pWVXpFV01CUUdBMVVFQ2hNTlRHVjBKM01nClJXNWpjbmx3ZERFTE1Ba0dBMVVFQXhNQ1JUVXdkakFRQmdjcWhrak9QUUlCQmdVcmdRUUFJZ05pQUFRTkN6cUsKYTJHT3R1L2NYMWpueGtKRlZLdGo5bVpoU0FvdVdYVzBnUUkzVUxjL0ZubmNtT3loS0pkeUlCd3N6OVY4VWlCTwpWSGhiaEJScndKQ3VoZXpBVVVFOFdvZC9CazNVL21EUittd3Q0WDJWRUlpaUNGUVBtUnBNNXVvS3JOaWpnZmd3CmdmVXdEZ1lEVlIwUEFRSC9CQVFEQWdHR01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUNCZ2dyQmdFRkJRY0QKQVRBU0JnTlZIUk1CQWY4RUNEQUdBUUgvQWdFQU1CMEdBMVVkRGdRV0JCU2ZLMS9QUENGUG5RUzM3U3NzeE1adwppOUxYRFRBZkJnTlZIU01FR0RBV2dCUjV0Rm5tZTdibDVBRnpnQWlJeUJwWTl1bWJiakF5QmdnckJnRUZCUWNCCkFRUW1NQ1F3SWdZSUt3WUJCUVVITUFLR0ZtaDBkSEE2THk5NE1TNXBMbXhsYm1OeUxtOXlaeTh3RXdZRFZSMGcKQkF3d0NqQUlCZ1puZ1F3QkFnRXdKd1lEVlIwZkJDQXdIakFjb0JxZ0dJWVdhSFIwY0RvdkwzZ3hMbU11YkdWdQpZM0l1YjNKbkx6QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFIM0tkTkVWQ1FkcWswTEt5dU5JbVRLZFJKWTFDCjJ1dzJTSmFqdWhxa3lHUFk4Qyt6enN1ZlorbWduaG5xMUEyS1ZRT1N5a09FblVieDFjeTYzN3JCQWloeDk3cisKYmN3YlpNNnNURElhRXJpUi9QTGs2TEtzOUJlMHVvVnhnT0tEY3BHOXN2RDMzSitHOUxjZnYxSzlsdURtU1RnRwo2WE5GSU41dmZJNWdzL2xNUHlvakVNZEl6SzlibGNsMi8xdkt4TzhXR0NjanZzUTFuSi9Qd3Q4TFFaQmZPRnlWClhQOHViQXAvYXUzZGM0RUtXRzlNTzV6Y3gxcVQ5K05YUkdkVld4R3ZtQkZSQWFqY2lNZlhNRTFadUdtazMvR08Ka29BTTdaa2pabWxleW9rUDFMR3ptZkpjVWQ5czdlZXUxLzkvZWc1WGxYZC81NUd0WWpBTStDNERHNWk3ZWFOcQpjbTJGK3l4WUlQdDZjYmJ0WVZOSkNHZkhXcUhFUTRGWVN0VXlGbnY4c2p5cVU4eXBnWmFOSjlhVmNXU0lDTE9JCkUxL1F2LzdvS3NuWkNXSjkyNndVNlJxRzFPWVBHT2kxenVBQmhMdzYxY3VQVkRUMjhuUVMvZTZ6OTVjSlhxMGUKSzFCY2FKNmZKWnNtYmpSZ0Q1cDNtdkVmNXZkUU03TUNFdlUwdEhic3gySTVtSEhKb0FCSGI4S1ZCZ1dwL2xjWApHV2lXYWVPeUI3UlArT2ZEdHZpMk9zYXB4WGlWN3ZOVnM3Zk1sclJqWTFqb0thcW1teWNuQnZBcTE0QUVidHlMCnNWZk9TNjZCOGFwa2VGWDJOWTRYUEVZVjRaU0NlOFZIUHJkckVSazJ3SUxHM1QvRUdtU0lrQ1lWVU1TbmptSmQKVlFEOUY2TmEvK3ptWENjPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t',
'key': b'LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSU1yQWxNMDJySG5vNm02b3BhU0YvNk9OS2o0bkhzTStJSlRiS3Mwck1NUnJvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFZFVqRTVBZ245b05SMTZXOVEzRXpsZm1aOUhDNTNJVkhlVXhMR3lYOU1WeStqcW5IMkpuTgpQeXU5ZHo1emNoMUl1YWNQTWVja2VpUnNEYWlrQm9uTDZBPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQ=='}


class Catalog(Enum):
Expand Down Expand Up @@ -236,9 +238,6 @@ class Catalog(Enum):
# {"name": "CLIENT_STAGE_ARRAY_BINDING_THRESHOLD", "value": 65280}]





@dataclass
class TextLiteral:
value: str
Expand Down Expand Up @@ -288,6 +287,7 @@ def session_from_request(sessions: List[str], request: Request):
detail="User must login again to access the service. Maybe server restarted? Restarting Universql aborts all the concurrent sessions.")
return sessions[token]


def pprint_secs(secs):
"""Format seconds in a human readable form."""
now = time.time()
Expand All @@ -309,7 +309,7 @@ def get_friendly_time_since(start_time, performance_counter):
suppress=["days"], format="%0.3f")


def prepend_to_lines(input_string, prepend_string=" ", vertical_string='------', max = 2500):
def prepend_to_lines(input_string, prepend_string=" ", vertical_string='------', max=2500):
if len(input_string) > max:
input_string = input_string[0:max] + '[striped due to max 2500 character limit]'
lines = input_string.split('\n')
Expand Down Expand Up @@ -395,7 +395,7 @@ def parse_compute(warehouse):
matches = (('duckdb', ''), ('snowflake', f'warehouse={warehouse}'))
else:
# try locally if warehouse is not provided
matches = (('duckdb', ''), )
matches = (('duckdb', ''),)

result = []
for func_name, args_str in matches:
Expand Down Expand Up @@ -454,8 +454,8 @@ def parse_snowflake_account(account_identifier: str) -> SnowflakeAccount:

return SnowflakeAccount(account, region, cloud)

def full_qualifier(table: sqlglot.exp.Table, credentials: dict):

def full_qualifier(table: sqlglot.exp.Table, credentials: dict):
catalog = sqlglot.exp.Identifier(this=credentials.get('database')) \
if table.args.get('catalog') is None else table.args.get('catalog')
db = sqlglot.exp.Identifier(this=credentials.get('schema')) \
Expand All @@ -464,14 +464,14 @@ def full_qualifier(table: sqlglot.exp.Table, credentials: dict):
return new_table



MODULES = [
"universql.warehouse.duckdb",
"universql.warehouse.bigquery",
"universql.warehouse.snowflake",
"universql.warehouse.snowflake",
]


def load_catalogs():
"""
Import a predefined list of modules.
Expand All @@ -481,5 +481,3 @@ def load_catalogs():
__import__(module_path)
except Exception as e:
print(f"Failed to load {module_path}: {e}")


0 comments on commit dc6b930

Please sign in to comment.