diff options
Diffstat (limited to '')
-rw-r--r-- | sqlglot/dialects/redshift.py | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/sqlglot/dialects/redshift.py b/sqlglot/dialects/redshift.py index 135ffc6..2201c78 100644 --- a/sqlglot/dialects/redshift.py +++ b/sqlglot/dialects/redshift.py @@ -21,15 +21,15 @@ if t.TYPE_CHECKING: from sqlglot._typing import E -def _parse_date_delta(expr_type: t.Type[E]) -> t.Callable[[t.List], E]: - def _parse_delta(args: t.List) -> E: +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)) if expr_type is exp.TsOrDsAdd: expr.set("return_type", exp.DataType.build("TIMESTAMP")) return expr - return _parse_delta + return _builder class Redshift(Postgres): @@ -55,10 +55,10 @@ class Redshift(Postgres): unit=exp.var("month"), return_type=exp.DataType.build("TIMESTAMP"), ), - "DATEADD": _parse_date_delta(exp.TsOrDsAdd), - "DATE_ADD": _parse_date_delta(exp.TsOrDsAdd), - "DATEDIFF": _parse_date_delta(exp.TsOrDsDiff), - "DATE_DIFF": _parse_date_delta(exp.TsOrDsDiff), + "DATEADD": _build_date_delta(exp.TsOrDsAdd), + "DATE_ADD": _build_date_delta(exp.TsOrDsAdd), + "DATEDIFF": _build_date_delta(exp.TsOrDsDiff), + "DATE_DIFF": _build_date_delta(exp.TsOrDsDiff), "GETDATE": exp.CurrentTimestamp.from_arg_list, "LISTAGG": exp.GroupConcat.from_arg_list, "STRTOL": exp.FromBase.from_arg_list, @@ -171,6 +171,7 @@ class Redshift(Postgres): TZ_TO_WITH_TIME_ZONE = True NVL2_SUPPORTED = True LAST_DAY_SUPPORTS_DATE_PART = False + CAN_IMPLEMENT_ARRAY_ANY = False TYPE_MAPPING = { **Postgres.Generator.TYPE_MAPPING, @@ -192,11 +193,12 @@ class Redshift(Postgres): ), exp.DateAdd: date_delta_sql("DATEADD"), exp.DateDiff: date_delta_sql("DATEDIFF"), - exp.DistKeyProperty: lambda self, e: f"DISTKEY({e.name})", + exp.DistKeyProperty: lambda self, e: self.func("DISTKEY", e.this), exp.DistStyleProperty: lambda self, e: self.naked_property(e), exp.FromBase: rename_func("STRTOL"), exp.GeneratedAsIdentityColumnConstraint: generatedasidentitycolumnconstraint_sql, exp.JSONExtract: json_extract_segments("JSON_EXTRACT_PATH_TEXT"), + exp.JSONExtractScalar: json_extract_segments("JSON_EXTRACT_PATH_TEXT"), exp.GroupConcat: rename_func("LISTAGG"), exp.ParseJSON: rename_func("JSON_PARSE"), exp.Select: transforms.preprocess( |