diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2022-11-05 18:41:12 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2022-11-05 18:41:12 +0000 |
commit | 7ff5bab54e3298dd89132706f6adee17f5164f6d (patch) | |
tree | 9b5896df787dbce648aa95d02c5c15ff34beb1c6 /sqlglot/generator.py | |
parent | Releasing debian version 9.0.3-1. (diff) | |
download | sqlglot-7ff5bab54e3298dd89132706f6adee17f5164f6d.tar.xz sqlglot-7ff5bab54e3298dd89132706f6adee17f5164f6d.zip |
Merging upstream version 9.0.6.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'sqlglot/generator.py')
-rw-r--r-- | sqlglot/generator.py | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/sqlglot/generator.py b/sqlglot/generator.py index 1784287..ca14425 100644 --- a/sqlglot/generator.py +++ b/sqlglot/generator.py @@ -65,6 +65,9 @@ class Generator: exp.VolatilityProperty: lambda self, e: self.sql(e.name), } + # whether 'CREATE ... TRANSIENT ... TABLE' is allowed + # can override in dialects + CREATE_TRANSIENT = False # whether or not null ordering is supported in order by NULL_ORDERING_SUPPORTED = True # always do union distinct or union all @@ -368,15 +371,14 @@ class Generator: expression_sql = self.sql(expression, "expression") expression_sql = f"AS{self.sep()}{expression_sql}" if expression_sql else "" temporary = " TEMPORARY" if expression.args.get("temporary") else "" + transient = " TRANSIENT" if self.CREATE_TRANSIENT and expression.args.get("transient") else "" replace = " OR REPLACE" if expression.args.get("replace") else "" exists_sql = " IF NOT EXISTS" if expression.args.get("exists") else "" unique = " UNIQUE" if expression.args.get("unique") else "" materialized = " MATERIALIZED" if expression.args.get("materialized") else "" properties = self.sql(expression, "properties") - expression_sql = ( - f"CREATE{replace}{temporary}{unique}{materialized} {kind}{exists_sql} {this}{properties} {expression_sql}" - ) + expression_sql = f"CREATE{replace}{temporary}{transient}{unique}{materialized} {kind}{exists_sql} {this}{properties} {expression_sql}" return self.prepend_ctes(expression, expression_sql) def describe_sql(self, expression): @@ -716,15 +718,21 @@ class Generator: def lateral_sql(self, expression): this = self.sql(expression, "this") + if isinstance(expression.this, exp.Subquery): - return f"LATERAL{self.sep()}{this}" - op_sql = self.seg(f"LATERAL VIEW{' OUTER' if expression.args.get('outer') else ''}") + return f"LATERAL {this}" + alias = expression.args["alias"] table = alias.name table = f" {table}" if table else table columns = self.expressions(alias, key="columns", flat=True) columns = f" AS {columns}" if columns else "" - return f"{op_sql}{self.sep()}{this}{table}{columns}" + + if expression.args.get("view"): + op_sql = self.seg(f"LATERAL VIEW{' OUTER' if expression.args.get('outer') else ''}") + return f"{op_sql}{self.sep()}{this}{table}{columns}" + + return f"LATERAL {this}{table}{columns}" def limit_sql(self, expression): this = self.sql(expression, "this") |