Merging upstream version 26.2.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
a5399bd16b
commit
4d0635d636
85 changed files with 57142 additions and 52288 deletions
|
@ -114,12 +114,15 @@ class Generator(metaclass=_Generator):
|
|||
**JSON_PATH_PART_TRANSFORMS,
|
||||
exp.AllowedValuesProperty: lambda self,
|
||||
e: f"ALLOWED_VALUES {self.expressions(e, flat=True)}",
|
||||
exp.AnalyzeColumns: lambda self, e: self.sql(e, "this"),
|
||||
exp.AnalyzeWith: lambda self, e: self.expressions(e, prefix="WITH ", sep=" "),
|
||||
exp.ArrayContainsAll: lambda self, e: self.binary(e, "@>"),
|
||||
exp.ArrayOverlaps: lambda self, e: self.binary(e, "&&"),
|
||||
exp.AutoRefreshProperty: lambda self, e: f"AUTO REFRESH {self.sql(e, 'this')}",
|
||||
exp.BackupProperty: lambda self, e: f"BACKUP {self.sql(e, 'this')}",
|
||||
exp.CaseSpecificColumnConstraint: lambda _,
|
||||
e: f"{'NOT ' if e.args.get('not_') else ''}CASESPECIFIC",
|
||||
exp.Ceil: lambda self, e: self.ceil_floor(e),
|
||||
exp.CharacterSetColumnConstraint: lambda self, e: f"CHARACTER SET {self.sql(e, 'this')}",
|
||||
exp.CharacterSetProperty: lambda self,
|
||||
e: f"{'DEFAULT ' if e.args.get('default') else ''}CHARACTER SET={self.sql(e, 'this')}",
|
||||
|
@ -140,6 +143,7 @@ class Generator(metaclass=_Generator):
|
|||
exp.ExecuteAsProperty: lambda self, e: self.naked_property(e),
|
||||
exp.Except: lambda self, e: self.set_operations(e),
|
||||
exp.ExternalProperty: lambda *_: "EXTERNAL",
|
||||
exp.Floor: lambda self, e: self.ceil_floor(e),
|
||||
exp.GlobalProperty: lambda *_: "GLOBAL",
|
||||
exp.HeapProperty: lambda *_: "HEAP",
|
||||
exp.IcebergProperty: lambda *_: "ICEBERG",
|
||||
|
@ -196,6 +200,7 @@ class Generator(metaclass=_Generator):
|
|||
exp.TransientProperty: lambda *_: "TRANSIENT",
|
||||
exp.Union: lambda self, e: self.set_operations(e),
|
||||
exp.UnloggedProperty: lambda *_: "UNLOGGED",
|
||||
exp.UsingData: lambda self, e: f"USING DATA {self.sql(e, 'this')}",
|
||||
exp.Uuid: lambda *_: "UUID()",
|
||||
exp.UppercaseColumnConstraint: lambda *_: "UPPERCASE",
|
||||
exp.VarMap: lambda self, e: self.func("MAP", e.args["keys"], e.args["values"]),
|
||||
|
@ -1556,7 +1561,8 @@ class Generator(metaclass=_Generator):
|
|||
return f"{prefix}{string}"
|
||||
|
||||
def partition_sql(self, expression: exp.Partition) -> str:
|
||||
return f"PARTITION({self.expressions(expression, flat=True)})"
|
||||
partition_keyword = "SUBPARTITION" if expression.args.get("subpartition") else "PARTITION"
|
||||
return f"{partition_keyword}({self.expressions(expression, flat=True)})"
|
||||
|
||||
def properties_sql(self, expression: exp.Properties) -> str:
|
||||
root_properties = []
|
||||
|
@ -3532,6 +3538,13 @@ class Generator(metaclass=_Generator):
|
|||
|
||||
return "".join(sqls)
|
||||
|
||||
def ceil_floor(self, expression: exp.Ceil | exp.Floor) -> str:
|
||||
to_clause = self.sql(expression, "to")
|
||||
if to_clause:
|
||||
return f"{expression.sql_name()}({self.sql(expression, 'this')} TO {to_clause})"
|
||||
|
||||
return self.function_fallback_sql(expression)
|
||||
|
||||
def function_fallback_sql(self, expression: exp.Func) -> str:
|
||||
args = []
|
||||
|
||||
|
@ -4647,6 +4660,63 @@ class Generator(metaclass=_Generator):
|
|||
|
||||
return f"NAME {name} VALUE {values}"
|
||||
|
||||
def analyzesample_sql(self, expression: exp.AnalyzeSample) -> str:
|
||||
kind = self.sql(expression, "kind")
|
||||
sample = self.sql(expression, "sample")
|
||||
return f"SAMPLE {sample} {kind}"
|
||||
|
||||
def analyzestatistics_sql(self, expression: exp.AnalyzeStatistics) -> str:
|
||||
kind = self.sql(expression, "kind")
|
||||
option = self.sql(expression, "option")
|
||||
option = f" {option}" if option else ""
|
||||
this = self.sql(expression, "this")
|
||||
this = f" {this}" if this else ""
|
||||
columns = self.expressions(expression)
|
||||
columns = f" {columns}" if columns else ""
|
||||
return f"{kind}{option} STATISTICS{this}{columns}"
|
||||
|
||||
def analyzehistogram_sql(self, expression: exp.AnalyzeHistogram) -> str:
|
||||
this = self.sql(expression, "this")
|
||||
columns = self.expressions(expression)
|
||||
inner_expression = self.sql(expression, "expression")
|
||||
inner_expression = f" {inner_expression}" if inner_expression else ""
|
||||
update_options = self.sql(expression, "update_options")
|
||||
update_options = f" {update_options} UPDATE" if update_options else ""
|
||||
return f"{this} HISTOGRAM ON {columns}{inner_expression}{update_options}"
|
||||
|
||||
def analyzedelete_sql(self, expression: exp.AnalyzeDelete) -> str:
|
||||
kind = self.sql(expression, "kind")
|
||||
kind = f" {kind}" if kind else ""
|
||||
return f"DELETE{kind} STATISTICS"
|
||||
|
||||
def analyzelistchainedrows_sql(self, expression: exp.AnalyzeListChainedRows) -> str:
|
||||
inner_expression = self.sql(expression, "expression")
|
||||
return f"LIST CHAINED ROWS{inner_expression}"
|
||||
|
||||
def analyzevalidate_sql(self, expression: exp.AnalyzeValidate) -> str:
|
||||
kind = self.sql(expression, "kind")
|
||||
this = self.sql(expression, "this")
|
||||
this = f" {this}" if this else ""
|
||||
inner_expression = self.sql(expression, "expression")
|
||||
return f"VALIDATE {kind}{this}{inner_expression}"
|
||||
|
||||
def analyze_sql(self, expression: exp.Analyze) -> str:
|
||||
options = self.expressions(expression, key="options", sep=" ")
|
||||
options = f" {options}" if options else ""
|
||||
kind = self.sql(expression, "kind")
|
||||
kind = f" {kind}" if kind else ""
|
||||
this = self.sql(expression, "this")
|
||||
this = f" {this}" if this else ""
|
||||
mode = self.sql(expression, "mode")
|
||||
mode = f" {mode}" if mode else ""
|
||||
properties = self.sql(expression, "properties")
|
||||
properties = f" {properties}" if properties else ""
|
||||
partition = self.sql(expression, "partition")
|
||||
partition = f" {partition}" if partition else ""
|
||||
inner_expression = self.sql(expression, "expression")
|
||||
inner_expression = f" {inner_expression}" if inner_expression else ""
|
||||
return f"ANALYZE{options}{kind}{this}{partition}{mode}{inner_expression}{properties}"
|
||||
|
||||
def xmltable_sql(self, expression: exp.XMLTable) -> str:
|
||||
this = self.sql(expression, "this")
|
||||
passing = self.expressions(expression, key="passing")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue