1
0
Fork 0

Merging upstream version 26.3.8.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-13 22:00:29 +01:00
parent 34733e7b48
commit c16ed2270a
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
89 changed files with 59179 additions and 57645 deletions

View file

@ -2491,11 +2491,11 @@ class Generator(metaclass=_Generator):
return csv(
*sqls,
*[self.sql(join) for join in expression.args.get("joins") or []],
self.sql(expression, "connect"),
self.sql(expression, "match"),
*[self.sql(lateral) for lateral in expression.args.get("laterals") or []],
self.sql(expression, "prewhere"),
self.sql(expression, "where"),
self.sql(expression, "connect"),
self.sql(expression, "group"),
self.sql(expression, "having"),
*[gen(self, expression) for gen in self.AFTER_HAVING_MODIFIER_TRANSFORMS.values()],
@ -3410,6 +3410,11 @@ class Generator(metaclass=_Generator):
return self.binary(expression, "/")
def safedivide_sql(self, expression: exp.SafeDivide) -> str:
n = exp._wrap(expression.this, exp.Binary)
d = exp._wrap(expression.expression, exp.Binary)
return self.sql(exp.If(this=d.neq(0), true=n / d, false=exp.Null()))
def overlaps_sql(self, expression: exp.Overlaps) -> str:
return self.binary(expression, "OVERLAPS")
@ -3934,6 +3939,16 @@ class Generator(metaclass=_Generator):
def tsordstotime_sql(self, expression: exp.TsOrDsToTime) -> str:
this = expression.this
time_format = self.format_time(expression)
if time_format:
return self.sql(
exp.cast(
exp.StrToTime(this=this, format=expression.args["format"]),
exp.DataType.Type.TIME,
)
)
if isinstance(this, exp.TsOrDsToTime) or this.is_type(exp.DataType.Type.TIME):
return self.sql(this)
@ -4421,6 +4436,10 @@ class Generator(metaclass=_Generator):
return f"{empty}{error}{null}"
def jsonextractquote_sql(self, expression: exp.JSONExtractQuote) -> str:
scalar = " ON SCALAR STRING" if expression.args.get("scalar") else ""
return f"{self.sql(expression, 'option')} QUOTES{scalar}"
def jsonexists_sql(self, expression: exp.JSONExists) -> str:
this = self.sql(expression, "this")
path = self.sql(expression, "path")
@ -4719,9 +4738,15 @@ class Generator(metaclass=_Generator):
def xmltable_sql(self, expression: exp.XMLTable) -> str:
this = self.sql(expression, "this")
namespaces = self.expressions(expression, key="namespaces")
namespaces = f"XMLNAMESPACES({namespaces}), " if namespaces else ""
passing = self.expressions(expression, key="passing")
passing = f"{self.sep()}PASSING{self.seg(passing)}" if passing else ""
columns = self.expressions(expression, key="columns")
columns = f"{self.sep()}COLUMNS{self.seg(columns)}" if columns else ""
by_ref = f"{self.sep()}RETURNING SEQUENCE BY REF" if expression.args.get("by_ref") else ""
return f"XMLTABLE({self.sep('')}{self.indent(this + passing + by_ref + columns)}{self.seg(')', sep='')}"
return f"XMLTABLE({self.sep('')}{self.indent(namespaces + this + passing + by_ref + columns)}{self.seg(')', sep='')}"
def xmlnamespace_sql(self, expression: exp.XMLNamespace) -> str:
this = self.sql(expression, "this")
return this if isinstance(expression.this, exp.Alias) else f"DEFAULT {this}"