summaryrefslogtreecommitdiffstats
path: root/sqlglot/dialects/snowflake.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2022-09-23 17:07:13 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2022-09-23 17:07:13 +0000
commita3a22f545e149b714b6f2b17cd04a5d6e0bd5294 (patch)
treec85091fdb1158b1f0edaf40267d812197c0bc76c /sqlglot/dialects/snowflake.py
parentAdding upstream version 6.1.1. (diff)
downloadsqlglot-bf2dd9169869e3e0ae858b82cc094f241c60fb1f.tar.xz
sqlglot-bf2dd9169869e3e0ae858b82cc094f241c60fb1f.zip
Adding upstream version 6.2.0.upstream/6.2.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'sqlglot/dialects/snowflake.py')
-rw-r--r--sqlglot/dialects/snowflake.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/sqlglot/dialects/snowflake.py b/sqlglot/dialects/snowflake.py
index 8d6ee78..b5d4f0a 100644
--- a/sqlglot/dialects/snowflake.py
+++ b/sqlglot/dialects/snowflake.py
@@ -106,6 +106,11 @@ class Snowflake(Dialect):
"TO_TIMESTAMP": _snowflake_to_timestamp,
}
+ FUNCTION_PARSERS = {
+ **Parser.FUNCTION_PARSERS,
+ "DATE_PART": lambda self: self._parse_extract(),
+ }
+
COLUMN_OPERATORS = {
**Parser.COLUMN_OPERATORS,
TokenType.COLON: lambda self, this, path: self.expression(
@@ -118,10 +123,20 @@ class Snowflake(Dialect):
class Tokenizer(Tokenizer):
QUOTES = ["'", "$$"]
ESCAPE = "\\"
+
+ SINGLE_TOKENS = {
+ **Tokenizer.SINGLE_TOKENS,
+ "$": TokenType.DOLLAR, # needed to break for quotes
+ }
+
KEYWORDS = {
**Tokenizer.KEYWORDS,
"QUALIFY": TokenType.QUALIFY,
"DOUBLE PRECISION": TokenType.DOUBLE,
+ "TIMESTAMP_LTZ": TokenType.TIMESTAMPLTZ,
+ "TIMESTAMP_NTZ": TokenType.TIMESTAMP,
+ "TIMESTAMP_TZ": TokenType.TIMESTAMPTZ,
+ "TIMESTAMPNTZ": TokenType.TIMESTAMP,
}
class Generator(Generator):
@@ -132,6 +147,11 @@ class Snowflake(Dialect):
exp.UnixToTime: _unix_to_time,
}
+ TYPE_MAPPING = {
+ **Generator.TYPE_MAPPING,
+ exp.DataType.Type.TIMESTAMP: "TIMESTAMPNTZ",
+ }
+
def except_op(self, expression):
if not expression.args.get("distinct", False):
self.unsupported("EXCEPT with All is not supported in Snowflake")