Merging upstream version 25.5.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
298e7a8147
commit
029b9c2c73
136 changed files with 80990 additions and 72541 deletions
|
@ -12,6 +12,7 @@ from sqlglot.dialects.dialect import (
|
|||
json_extract_segments,
|
||||
no_tablesample_sql,
|
||||
rename_func,
|
||||
map_date_part,
|
||||
)
|
||||
from sqlglot.dialects.postgres import Postgres
|
||||
from sqlglot.helper import seq_get
|
||||
|
@ -23,7 +24,11 @@ if t.TYPE_CHECKING:
|
|||
|
||||
def _build_date_delta(expr_type: t.Type[E]) -> t.Callable[[t.List], E]:
|
||||
def _builder(args: t.List) -> E:
|
||||
expr = expr_type(this=seq_get(args, 2), expression=seq_get(args, 1), unit=seq_get(args, 0))
|
||||
expr = expr_type(
|
||||
this=seq_get(args, 2),
|
||||
expression=seq_get(args, 1),
|
||||
unit=map_date_part(seq_get(args, 0)),
|
||||
)
|
||||
if expr_type is exp.TsOrDsAdd:
|
||||
expr.set("return_type", exp.DataType.build("TIMESTAMP"))
|
||||
|
||||
|
@ -40,7 +45,6 @@ class Redshift(Postgres):
|
|||
INDEX_OFFSET = 0
|
||||
COPY_PARAMS_ARE_CSV = False
|
||||
HEX_LOWERCASE = True
|
||||
SUPPORTS_COLUMN_JOIN_MARKS = True
|
||||
|
||||
TIME_FORMAT = "'YYYY-MM-DD HH:MI:SS'"
|
||||
TIME_MAPPING = {
|
||||
|
@ -148,6 +152,8 @@ class Redshift(Postgres):
|
|||
MULTI_ARG_DISTINCT = True
|
||||
COPY_PARAMS_ARE_WRAPPED = False
|
||||
HEX_FUNC = "TO_HEX"
|
||||
PARSE_JSON_NAME = "JSON_PARSE"
|
||||
|
||||
# Redshift doesn't have `WITH` as part of their with_properties so we remove it
|
||||
WITH_PROPERTIES_PREFIX = " "
|
||||
|
||||
|
@ -180,7 +186,6 @@ class Redshift(Postgres):
|
|||
exp.JSONExtractScalar: json_extract_segments("JSON_EXTRACT_PATH_TEXT"),
|
||||
exp.GroupConcat: rename_func("LISTAGG"),
|
||||
exp.Hex: lambda self, e: self.func("UPPER", self.func("TO_HEX", self.sql(e, "this"))),
|
||||
exp.ParseJSON: rename_func("JSON_PARSE"),
|
||||
exp.Select: transforms.preprocess(
|
||||
[
|
||||
transforms.eliminate_distinct_on,
|
||||
|
@ -203,13 +208,14 @@ class Redshift(Postgres):
|
|||
# Postgres maps exp.Pivot to no_pivot_sql, but Redshift support pivots
|
||||
TRANSFORMS.pop(exp.Pivot)
|
||||
|
||||
# Postgres doesn't support JSON_PARSE, but Redshift does
|
||||
TRANSFORMS.pop(exp.ParseJSON)
|
||||
|
||||
# Redshift uses the POW | POWER (expr1, expr2) syntax instead of expr1 ^ expr2 (postgres)
|
||||
TRANSFORMS.pop(exp.Pow)
|
||||
|
||||
# Redshift supports ANY_VALUE(..)
|
||||
# Redshift supports these functions
|
||||
TRANSFORMS.pop(exp.AnyValue)
|
||||
|
||||
# Redshift supports LAST_DAY(..)
|
||||
TRANSFORMS.pop(exp.LastDay)
|
||||
TRANSFORMS.pop(exp.SHA2)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue