summaryrefslogtreecommitdiffstats
path: root/sqlglot/dialects/redshift.py
diff options
context:
space:
mode:
Diffstat (limited to 'sqlglot/dialects/redshift.py')
-rw-r--r--sqlglot/dialects/redshift.py18
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(