Merging upstream version 26.1.3.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
829d661a08
commit
c8d4d2df63
119 changed files with 71635 additions and 68059 deletions
|
@ -1861,7 +1861,8 @@ class Generator(metaclass=_Generator):
|
|||
set_keyword = "SET " if self.DUPLICATE_KEY_UPDATE_WITH_SET else ""
|
||||
expressions = f" {set_keyword}{expressions}"
|
||||
|
||||
return f"{conflict}{constraint}{conflict_keys}{action}{expressions}"
|
||||
where = self.sql(expression, "where")
|
||||
return f"{conflict}{constraint}{conflict_keys}{action}{expressions}{where}"
|
||||
|
||||
def returning_sql(self, expression: exp.Returning) -> str:
|
||||
return f"{self.seg('RETURNING')} {self.expressions(expression, flat=True)}"
|
||||
|
@ -1988,6 +1989,7 @@ class Generator(metaclass=_Generator):
|
|||
|
||||
def pivot_sql(self, expression: exp.Pivot) -> str:
|
||||
expressions = self.expressions(expression, flat=True)
|
||||
direction = "UNPIVOT" if expression.unpivot else "PIVOT"
|
||||
|
||||
if expression.this:
|
||||
this = self.sql(expression, "this")
|
||||
|
@ -1995,14 +1997,15 @@ class Generator(metaclass=_Generator):
|
|||
return f"UNPIVOT {this}"
|
||||
|
||||
on = f"{self.seg('ON')} {expressions}"
|
||||
into = self.sql(expression, "into")
|
||||
into = f"{self.seg('INTO')} {into}" if into else ""
|
||||
using = self.expressions(expression, key="using", flat=True)
|
||||
using = f"{self.seg('USING')} {using}" if using else ""
|
||||
group = self.sql(expression, "group")
|
||||
return f"PIVOT {this}{on}{using}{group}"
|
||||
return f"{direction} {this}{on}{into}{using}{group}"
|
||||
|
||||
alias = self.sql(expression, "alias")
|
||||
alias = f" AS {alias}" if alias else ""
|
||||
direction = self.seg("UNPIVOT" if expression.unpivot else "PIVOT")
|
||||
|
||||
field = self.sql(expression, "field")
|
||||
|
||||
|
@ -2014,7 +2017,7 @@ class Generator(metaclass=_Generator):
|
|||
|
||||
default_on_null = self.sql(expression, "default_on_null")
|
||||
default_on_null = f" DEFAULT ON NULL ({default_on_null})" if default_on_null else ""
|
||||
return f"{direction}{nulls}({expressions} FOR {field}{default_on_null}){alias}"
|
||||
return f"{self.seg(direction)}{nulls}({expressions} FOR {field}{default_on_null}){alias}"
|
||||
|
||||
def version_sql(self, expression: exp.Version) -> str:
|
||||
this = f"FOR {expression.name}"
|
||||
|
@ -4637,3 +4640,18 @@ class Generator(metaclass=_Generator):
|
|||
every.this.replace(exp.Literal.number(every.name))
|
||||
|
||||
return f"START {self.wrap(start)} END {self.wrap(end)} EVERY {self.wrap(self.sql(every))}"
|
||||
|
||||
def unpivotcolumns_sql(self, expression: exp.UnpivotColumns) -> str:
|
||||
name = self.sql(expression, "this")
|
||||
values = self.expressions(expression, flat=True)
|
||||
|
||||
return f"NAME {name} VALUE {values}"
|
||||
|
||||
def xmltable_sql(self, expression: exp.XMLTable) -> str:
|
||||
this = self.sql(expression, "this")
|
||||
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='')}"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue