Skip to content

Commit 5299215

Browse files
committed
Fixes for snowflake
1 parent 47fc25f commit 5299215

File tree

3 files changed

+15
-5
lines changed

3 files changed

+15
-5
lines changed

preql/core/sql.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1096,7 +1096,7 @@ def compile_type_def(table_name, table) -> Sql:
10961096
posts.append(s)
10971097

10981098
if pks and db.supports_foreign_key:
1099-
names = ", ".join(pks)
1099+
names = ", ".join(map(quote_name, pks))
11001100
posts.append(f"PRIMARY KEY ({names})")
11011101

11021102
# Consistent among SQL databases

preql/modules/__builtins__.pql

+1
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,7 @@ if (db_type == "postgres" or db_type == "redshift") {
398398
func commit() = null
399399
} else if (db_type == "snowflake") {
400400
func _random() = SQL(float, "uniform(0::float, 1, random())")
401+
func _now() = SQL(timestamp, "CURRENT_TIMESTAMP()")
401402
//
402403
} else if (db_type == "presto") {
403404
//

preql/sql_interface.py

+13-4
Original file line numberDiff line numberDiff line change
@@ -499,14 +499,22 @@ def __init__(self, account, user, password, warehouse, schema, database, role=No
499499
schema=schema,
500500
)
501501

502+
self._schema = schema
502503
self._print_sql = print_sql
503504

504-
def commit(self):
505-
self._client.commit()
505+
def qualified_name(self, name):
506+
"Ensure the name has a dataset"
507+
assert isinstance(name, Id)
508+
if len(name.parts) > 1:
509+
# already has dataset
510+
return name
511+
return Id(self._schema, name.parts[-1])
506512

507513
def quote_name(self, name):
508-
# TODO is this right?
509-
return name
514+
return f'"{name}"'
515+
516+
def commit(self):
517+
self._client.commit()
510518

511519
def table_exists(self, name):
512520
assert isinstance(name, Id)
@@ -576,6 +584,7 @@ def _import_result(self, sql_type, c):
576584
raise DatabaseQueryError(msg%(e))
577585

578586
return sql_result_to_python(Const(sql_type, res))
587+
579588
def _execute_sql(self, sql_type, sql_code):
580589
import snowflake.connector
581590
cs = self._client.cursor()

0 commit comments

Comments
 (0)