Merging upstream version 6.2.8.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
87ba722f7f
commit
a62bbc24c3
22 changed files with 361 additions and 98 deletions
|
@ -33,10 +33,10 @@ def _date_add_sql(data_type, kind):
|
|||
return func
|
||||
|
||||
|
||||
def _subquery_to_unnest_if_values(self, expression):
|
||||
if not isinstance(expression.this, exp.Values):
|
||||
return self.subquery_sql(expression)
|
||||
rows = [list(tuple_exp.find_all(exp.Literal)) for tuple_exp in expression.this.find_all(exp.Tuple)]
|
||||
def _derived_table_values_to_unnest(self, expression):
|
||||
if not isinstance(expression.unnest().parent, exp.From):
|
||||
return self.values_sql(expression)
|
||||
rows = [list(tuple_exp.find_all(exp.Literal)) for tuple_exp in expression.find_all(exp.Tuple)]
|
||||
structs = []
|
||||
for row in rows:
|
||||
aliases = [
|
||||
|
@ -99,6 +99,7 @@ class BigQuery(Dialect):
|
|||
"QUALIFY": TokenType.QUALIFY,
|
||||
"UNKNOWN": TokenType.NULL,
|
||||
"WINDOW": TokenType.WINDOW,
|
||||
"NOT DETERMINISTIC": TokenType.VOLATILE,
|
||||
}
|
||||
|
||||
class Parser(Parser):
|
||||
|
@ -140,9 +141,10 @@ class BigQuery(Dialect):
|
|||
exp.TimestampAdd: _date_add_sql("TIMESTAMP", "ADD"),
|
||||
exp.TimestampSub: _date_add_sql("TIMESTAMP", "SUB"),
|
||||
exp.VariancePop: rename_func("VAR_POP"),
|
||||
exp.Subquery: _subquery_to_unnest_if_values,
|
||||
exp.Values: _derived_table_values_to_unnest,
|
||||
exp.ReturnsProperty: _returnsproperty_sql,
|
||||
exp.Create: _create_sql,
|
||||
exp.VolatilityProperty: lambda self, e: f"DETERMINISTIC" if e.name == "IMMUTABLE" else "NOT DETERMINISTIC",
|
||||
}
|
||||
|
||||
TYPE_MAPPING = {
|
||||
|
@ -160,6 +162,16 @@ class BigQuery(Dialect):
|
|||
exp.DataType.Type.NVARCHAR: "STRING",
|
||||
}
|
||||
|
||||
ROOT_PROPERTIES = {
|
||||
exp.LanguageProperty,
|
||||
exp.ReturnsProperty,
|
||||
exp.VolatilityProperty,
|
||||
}
|
||||
|
||||
WITH_PROPERTIES = {
|
||||
exp.AnonymousProperty,
|
||||
}
|
||||
|
||||
def in_unnest_op(self, unnest):
|
||||
return self.sql(unnest)
|
||||
|
||||
|
|
|
@ -77,6 +77,7 @@ class Dialect(metaclass=_Dialect):
|
|||
alias_post_tablesample = False
|
||||
normalize_functions = "upper"
|
||||
null_ordering = "nulls_are_small"
|
||||
wrap_derived_values = True
|
||||
|
||||
date_format = "'%Y-%m-%d'"
|
||||
dateint_format = "'%Y%m%d'"
|
||||
|
@ -169,6 +170,7 @@ class Dialect(metaclass=_Dialect):
|
|||
"alias_post_tablesample": self.alias_post_tablesample,
|
||||
"normalize_functions": self.normalize_functions,
|
||||
"null_ordering": self.null_ordering,
|
||||
"wrap_derived_values": self.wrap_derived_values,
|
||||
**opts,
|
||||
}
|
||||
)
|
||||
|
|
|
@ -177,6 +177,8 @@ class Snowflake(Dialect):
|
|||
exp.ReturnsProperty,
|
||||
exp.LanguageProperty,
|
||||
exp.SchemaCommentProperty,
|
||||
exp.ExecuteAsProperty,
|
||||
exp.VolatilityProperty,
|
||||
}
|
||||
|
||||
def except_op(self, expression):
|
||||
|
|
|
@ -47,6 +47,8 @@ def _unix_to_time(self, expression):
|
|||
|
||||
|
||||
class Spark(Hive):
|
||||
wrap_derived_values = False
|
||||
|
||||
class Parser(Hive.Parser):
|
||||
FUNCTIONS = {
|
||||
**Hive.Parser.FUNCTIONS,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue