summaryrefslogtreecommitdiffstats
path: root/sqlglot/dialects/snowflake.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 16:13:01 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 16:13:01 +0000
commita7044b672667f2a0b48bd0b326b5a55b0815ef79 (patch)
tree4fb5238d47fb4709d47f766a74b8bbaa9c6f17d8 /sqlglot/dialects/snowflake.py
parentReleasing debian version 23.12.1-1. (diff)
downloadsqlglot-a7044b672667f2a0b48bd0b326b5a55b0815ef79.tar.xz
sqlglot-a7044b672667f2a0b48bd0b326b5a55b0815ef79.zip
Merging upstream version 23.13.1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'sqlglot/dialects/snowflake.py')
-rw-r--r--sqlglot/dialects/snowflake.py22
1 files changed, 16 insertions, 6 deletions
diff --git a/sqlglot/dialects/snowflake.py b/sqlglot/dialects/snowflake.py
index dba56c4..b79386a 100644
--- a/sqlglot/dialects/snowflake.py
+++ b/sqlglot/dialects/snowflake.py
@@ -289,6 +289,7 @@ class Snowflake(Dialect):
SUPPORTS_SEMI_ANTI_JOIN = False
PREFER_CTE_ALIAS_COLUMN = True
TABLESAMPLE_SIZE_IS_PERCENT = True
+ COPY_PARAMS_ARE_CSV = False
TIME_MAPPING = {
"YYYY": "%Y",
@@ -439,7 +440,7 @@ class Snowflake(Dialect):
PROPERTY_PARSERS = {
**parser.Parser.PROPERTY_PARSERS,
- "LOCATION": lambda self: self._parse_location(),
+ "LOCATION": lambda self: self._parse_location_property(),
}
SHOW_PARSERS = {
@@ -675,10 +676,13 @@ class Snowflake(Dialect):
self._match_text_seq("WITH")
return self.expression(exp.SwapTable, this=self._parse_table(schema=True))
- def _parse_location(self) -> exp.LocationProperty:
+ def _parse_location_property(self) -> exp.LocationProperty:
self._match(TokenType.EQ)
return self.expression(exp.LocationProperty, this=self._parse_location_path())
+ def _parse_file_location(self) -> t.Optional[exp.Expression]:
+ return self._parse_table_parts()
+
def _parse_location_path(self) -> exp.Var:
parts = [self._advance_any(ignore_reserved=True)]
@@ -715,10 +719,7 @@ class Snowflake(Dialect):
"SQL_DOUBLE": TokenType.DOUBLE,
"SQL_VARCHAR": TokenType.VARCHAR,
"STORAGE INTEGRATION": TokenType.STORAGE_INTEGRATION,
- "TIMESTAMP_LTZ": TokenType.TIMESTAMPLTZ,
- "TIMESTAMP_NTZ": TokenType.TIMESTAMP,
"TIMESTAMP_TZ": TokenType.TIMESTAMPTZ,
- "TIMESTAMPNTZ": TokenType.TIMESTAMP,
"TOP": TokenType.TOP,
}
@@ -745,6 +746,8 @@ class Snowflake(Dialect):
JSON_KEY_VALUE_PAIR_SEP = ","
INSERT_OVERWRITE = " OVERWRITE INTO"
STRUCT_DELIMITER = ("(", ")")
+ COPY_PARAMS_ARE_WRAPPED = False
+ COPY_PARAMS_EQ_REQUIRED = True
TRANSFORMS = {
**generator.Generator.TRANSFORMS,
@@ -845,7 +848,6 @@ class Snowflake(Dialect):
**generator.Generator.TYPE_MAPPING,
exp.DataType.Type.NESTED: "OBJECT",
exp.DataType.Type.STRUCT: "OBJECT",
- exp.DataType.Type.TIMESTAMP: "TIMESTAMPNTZ",
}
STAR_MAPPING = {
@@ -1038,3 +1040,11 @@ class Snowflake(Dialect):
values.append(e)
return self.func("OBJECT_CONSTRUCT", *flatten(zip(keys, values)))
+
+ def copyparameter_sql(self, expression: exp.CopyParameter) -> str:
+ option = self.sql(expression, "this")
+ if option.upper() == "FILE_FORMAT":
+ values = self.expressions(expression, key="expression", flat=True, sep=" ")
+ return f"{option} = ({values})"
+
+ return super().copyparameter_sql(expression)