diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-08 08:11:53 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-08 08:12:02 +0000 |
commit | 8d36f5966675e23bee7026ba37ae0647fbf47300 (patch) | |
tree | df4227bbb3b07cb70df87237bcff03c8efd7822d /sqlglot/dialects/redshift.py | |
parent | Releasing debian version 22.2.0-1. (diff) | |
download | sqlglot-8d36f5966675e23bee7026ba37ae0647fbf47300.tar.xz sqlglot-8d36f5966675e23bee7026ba37ae0647fbf47300.zip |
Merging upstream version 23.7.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'sqlglot/dialects/redshift.py')
-rw-r--r-- | sqlglot/dialects/redshift.py | 22 |
1 files changed, 5 insertions, 17 deletions
diff --git a/sqlglot/dialects/redshift.py b/sqlglot/dialects/redshift.py index 0db87ec..1f0c411 100644 --- a/sqlglot/dialects/redshift.py +++ b/sqlglot/dialects/redshift.py @@ -92,23 +92,6 @@ class Redshift(Postgres): return self.expression(exp.Pivot, this=table, unpivot=True) if unpivot else table - def _parse_types( - self, check_func: bool = False, schema: bool = False, allow_identifiers: bool = True - ) -> t.Optional[exp.Expression]: - this = super()._parse_types( - check_func=check_func, schema=schema, allow_identifiers=allow_identifiers - ) - - if ( - isinstance(this, exp.DataType) - and this.is_type("varchar") - and this.expressions - and this.expressions[0].this == exp.column("MAX") - ): - this.set("expressions", [exp.var("MAX")]) - - return this - def _parse_convert( self, strict: bool, safe: t.Optional[bool] = None ) -> t.Optional[exp.Expression]: @@ -153,6 +136,7 @@ class Redshift(Postgres): NVL2_SUPPORTED = True LAST_DAY_SUPPORTS_DATE_PART = False CAN_IMPLEMENT_ARRAY_ANY = False + MULTI_ARG_DISTINCT = True TYPE_MAPPING = { **Postgres.Generator.TYPE_MAPPING, @@ -187,9 +171,13 @@ class Redshift(Postgres): ), exp.SortKeyProperty: lambda self, e: f"{'COMPOUND ' if e.args['compound'] else ''}SORTKEY({self.format_args(*e.this)})", + exp.StartsWith: lambda self, + e: f"{self.sql(e.this)} LIKE {self.sql(e.expression)} || '%'", exp.TableSample: no_tablesample_sql, exp.TsOrDsAdd: date_delta_sql("DATEADD"), exp.TsOrDsDiff: date_delta_sql("DATEDIFF"), + exp.UnixToTime: lambda self, + e: f"(TIMESTAMP 'epoch' + {self.sql(e.this)} * INTERVAL '1 SECOND')", } # Postgres maps exp.Pivot to no_pivot_sql, but Redshift support pivots |