Merging upstream version 10.0.8.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
407314e8d2
commit
efc1e37108
67 changed files with 2461 additions and 840 deletions
|
@ -67,7 +67,7 @@ class Generator:
|
|||
exp.LocationProperty: lambda self, e: self.naked_property(e),
|
||||
exp.ReturnsProperty: lambda self, e: self.naked_property(e),
|
||||
exp.ExecuteAsProperty: lambda self, e: self.naked_property(e),
|
||||
exp.VolatilityProperty: lambda self, e: self.sql(e.name),
|
||||
exp.VolatilityProperty: lambda self, e: e.name,
|
||||
}
|
||||
|
||||
# Whether 'CREATE ... TRANSIENT ... TABLE' is allowed
|
||||
|
@ -94,6 +94,9 @@ class Generator:
|
|||
ROOT_PROPERTIES = {
|
||||
exp.ReturnsProperty,
|
||||
exp.LanguageProperty,
|
||||
exp.DistStyleProperty,
|
||||
exp.DistKeyProperty,
|
||||
exp.SortKeyProperty,
|
||||
}
|
||||
|
||||
WITH_PROPERTIES = {
|
||||
|
@ -241,7 +244,7 @@ class Generator:
|
|||
if not NEWLINE_RE.search(comment):
|
||||
return f"{sql} --{comment.rstrip()}" if single_line else f"{sql} /*{comment}*/"
|
||||
|
||||
return f"/*{comment}*/\n{sql}"
|
||||
return f"/*{comment}*/\n{sql}" if sql else f" /*{comment}*/"
|
||||
|
||||
def wrap(self, expression):
|
||||
this_sql = self.indent(
|
||||
|
@ -475,7 +478,8 @@ class Generator:
|
|||
exists_sql = " IF EXISTS " if expression.args.get("exists") else " "
|
||||
temporary = " TEMPORARY" if expression.args.get("temporary") else ""
|
||||
materialized = " MATERIALIZED" if expression.args.get("materialized") else ""
|
||||
return f"DROP{temporary}{materialized} {kind}{exists_sql}{this}"
|
||||
cascade = " CASCADE" if expression.args.get("cascade") else ""
|
||||
return f"DROP{temporary}{materialized} {kind}{exists_sql}{this}{cascade}"
|
||||
|
||||
def except_sql(self, expression):
|
||||
return self.prepend_ctes(
|
||||
|
@ -915,13 +919,15 @@ class Generator:
|
|||
def subquery_sql(self, expression):
|
||||
alias = self.sql(expression, "alias")
|
||||
|
||||
return self.query_modifiers(
|
||||
sql = self.query_modifiers(
|
||||
expression,
|
||||
self.wrap(expression),
|
||||
self.expressions(expression, key="pivots", sep=" "),
|
||||
f" AS {alias}" if alias else "",
|
||||
)
|
||||
|
||||
return self.prepend_ctes(expression, sql)
|
||||
|
||||
def qualify_sql(self, expression):
|
||||
this = self.indent(self.sql(expression, "this"))
|
||||
return f"{self.seg('QUALIFY')}{self.sep()}{this}"
|
||||
|
@ -1111,9 +1117,12 @@ class Generator:
|
|||
|
||||
def paren_sql(self, expression):
|
||||
if isinstance(expression.unnest(), exp.Select):
|
||||
return self.wrap(expression)
|
||||
sql = self.seg(self.indent(self.sql(expression, "this")), sep="")
|
||||
return f"({sql}{self.seg(')', sep='')}"
|
||||
sql = self.wrap(expression)
|
||||
else:
|
||||
sql = self.seg(self.indent(self.sql(expression, "this")), sep="")
|
||||
sql = f"({sql}{self.seg(')', sep='')}"
|
||||
|
||||
return self.prepend_ctes(expression, sql)
|
||||
|
||||
def neg_sql(self, expression):
|
||||
return f"-{self.sql(expression, 'this')}"
|
||||
|
@ -1173,9 +1182,23 @@ class Generator:
|
|||
zone = self.sql(expression, "this")
|
||||
return f"CURRENT_DATE({zone})" if zone else "CURRENT_DATE"
|
||||
|
||||
def collate_sql(self, expression):
|
||||
return self.binary(expression, "COLLATE")
|
||||
|
||||
def command_sql(self, expression):
|
||||
return f"{self.sql(expression, 'this').upper()} {expression.text('expression').strip()}"
|
||||
|
||||
def transaction_sql(self, *_):
|
||||
return "BEGIN"
|
||||
|
||||
def commit_sql(self, *_):
|
||||
return "COMMIT"
|
||||
|
||||
def rollback_sql(self, expression):
|
||||
savepoint = expression.args.get("savepoint")
|
||||
savepoint = f" TO {savepoint}" if savepoint else ""
|
||||
return f"ROLLBACK{savepoint}"
|
||||
|
||||
def distinct_sql(self, expression):
|
||||
this = self.expressions(expression, flat=True)
|
||||
this = f" {this}" if this else ""
|
||||
|
@ -1193,10 +1216,7 @@ class Generator:
|
|||
def intdiv_sql(self, expression):
|
||||
return self.sql(
|
||||
exp.Cast(
|
||||
this=exp.Div(
|
||||
this=expression.args["this"],
|
||||
expression=expression.args["expression"],
|
||||
),
|
||||
this=exp.Div(this=expression.this, expression=expression.expression),
|
||||
to=exp.DataType(this=exp.DataType.Type.INT),
|
||||
)
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue