Adding upstream version 26.0.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
522374f608
commit
09521056ff
65 changed files with 45416 additions and 44542 deletions
|
@ -32,7 +32,7 @@ from sqlglot.helper import flatten, is_float, is_int, seq_get
|
|||
from sqlglot.tokens import TokenType
|
||||
|
||||
if t.TYPE_CHECKING:
|
||||
from sqlglot._typing import E
|
||||
from sqlglot._typing import E, B
|
||||
|
||||
|
||||
# from https://docs.snowflake.com/en/sql-reference/functions/to_timestamp.html
|
||||
|
@ -107,11 +107,14 @@ def _build_date_time_add(expr_type: t.Type[E]) -> t.Callable[[t.List], E]:
|
|||
return _builder
|
||||
|
||||
|
||||
def _build_bitor(args: t.List) -> exp.BitwiseOr | exp.Anonymous:
|
||||
if len(args) == 3:
|
||||
return exp.Anonymous(this="BITOR", expressions=args)
|
||||
def _build_bitwise(expr_type: t.Type[B], name: str) -> t.Callable[[t.List], B | exp.Anonymous]:
|
||||
def _builder(args: t.List) -> B | exp.Anonymous:
|
||||
if len(args) == 3:
|
||||
return exp.Anonymous(this=name, expressions=args)
|
||||
|
||||
return binary_from_function(exp.BitwiseOr)(args)
|
||||
return binary_from_function(expr_type)(args)
|
||||
|
||||
return _builder
|
||||
|
||||
|
||||
# https://docs.snowflake.com/en/sql-reference/functions/div0
|
||||
|
@ -398,11 +401,15 @@ class Snowflake(Dialect):
|
|||
end=exp.Sub(this=seq_get(args, 1), expression=exp.Literal.number(1)),
|
||||
step=seq_get(args, 2),
|
||||
),
|
||||
"BITXOR": binary_from_function(exp.BitwiseXor),
|
||||
"BIT_XOR": binary_from_function(exp.BitwiseXor),
|
||||
"BITOR": _build_bitor,
|
||||
"BIT_OR": _build_bitor,
|
||||
"BOOLXOR": binary_from_function(exp.Xor),
|
||||
"BITXOR": _build_bitwise(exp.BitwiseXor, "BITXOR"),
|
||||
"BIT_XOR": _build_bitwise(exp.BitwiseXor, "BITXOR"),
|
||||
"BITOR": _build_bitwise(exp.BitwiseOr, "BITOR"),
|
||||
"BIT_OR": _build_bitwise(exp.BitwiseOr, "BITOR"),
|
||||
"BITSHIFTLEFT": _build_bitwise(exp.BitwiseLeftShift, "BITSHIFTLEFT"),
|
||||
"BIT_SHIFTLEFT": _build_bitwise(exp.BitwiseLeftShift, "BIT_SHIFTLEFT"),
|
||||
"BITSHIFTRIGHT": _build_bitwise(exp.BitwiseRightShift, "BITSHIFTRIGHT"),
|
||||
"BIT_SHIFTRIGHT": _build_bitwise(exp.BitwiseRightShift, "BIT_SHIFTRIGHT"),
|
||||
"BOOLXOR": _build_bitwise(exp.Xor, "BOOLXOR"),
|
||||
"DATE": _build_datetime("DATE", exp.DataType.Type.DATE),
|
||||
"DATE_TRUNC": _date_trunc_to_time,
|
||||
"DATEADD": _build_date_time_add(exp.DateAdd),
|
||||
|
@ -885,8 +892,10 @@ class Snowflake(Dialect):
|
|||
exp.AtTimeZone: lambda self, e: self.func(
|
||||
"CONVERT_TIMEZONE", e.args.get("zone"), e.this
|
||||
),
|
||||
exp.BitwiseXor: rename_func("BITXOR"),
|
||||
exp.BitwiseOr: rename_func("BITOR"),
|
||||
exp.BitwiseXor: rename_func("BITXOR"),
|
||||
exp.BitwiseLeftShift: rename_func("BITSHIFTLEFT"),
|
||||
exp.BitwiseRightShift: rename_func("BITSHIFTRIGHT"),
|
||||
exp.Create: transforms.preprocess([_flatten_structured_types_unless_iceberg]),
|
||||
exp.DateAdd: date_delta_sql("DATEADD"),
|
||||
exp.DateDiff: date_delta_sql("DATEDIFF"),
|
||||
|
@ -1088,7 +1097,11 @@ class Snowflake(Dialect):
|
|||
else:
|
||||
unnest_alias = exp.TableAlias(this="_u", columns=columns)
|
||||
|
||||
explode = f"TABLE(FLATTEN(INPUT => {self.sql(expression.expressions[0])}))"
|
||||
table_input = self.sql(expression.expressions[0])
|
||||
if not table_input.startswith("INPUT =>"):
|
||||
table_input = f"INPUT => {table_input}"
|
||||
|
||||
explode = f"TABLE(FLATTEN({table_input}))"
|
||||
alias = self.sql(unnest_alias)
|
||||
alias = f" AS {alias}" if alias else ""
|
||||
return f"{explode}{alias}"
|
||||
|
@ -1202,3 +1215,12 @@ class Snowflake(Dialect):
|
|||
this = exp.cast(this, exp.DataType.Type.TIMESTAMP)
|
||||
|
||||
return self.func("TO_CHAR", this, self.format_time(expression))
|
||||
|
||||
def datesub_sql(self, expression: exp.DateSub) -> str:
|
||||
value = expression.expression
|
||||
if value:
|
||||
value.replace(value * (-1))
|
||||
else:
|
||||
self.unsupported("DateSub cannot be transpiled if the subtracted count is unknown")
|
||||
|
||||
return date_delta_sql("DATEADD")(self, expression)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue