Adding upstream version 26.3.8.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
7ee28625fb
commit
b80c44840a
89 changed files with 59179 additions and 57645 deletions
|
@ -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}"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue