1
0
Fork 0

Merging upstream version 26.1.3.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-13 21:59:50 +01:00
parent 829d661a08
commit c8d4d2df63
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
119 changed files with 71635 additions and 68059 deletions

View file

@ -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='')}"