Merging upstream version 15.2.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
2e6df1bcfa
commit
3d4adf9c16
81 changed files with 40321 additions and 37940 deletions
|
@ -104,6 +104,10 @@ class _Dialect(type):
|
|||
klass.byte_start, klass.byte_end = get_start_end(TokenType.BYTE_STRING)
|
||||
klass.raw_start, klass.raw_end = get_start_end(TokenType.RAW_STRING)
|
||||
|
||||
klass.tokenizer_class.identifiers_can_start_with_digit = (
|
||||
klass.identifiers_can_start_with_digit
|
||||
)
|
||||
|
||||
return klass
|
||||
|
||||
|
||||
|
@ -111,6 +115,7 @@ class Dialect(metaclass=_Dialect):
|
|||
index_offset = 0
|
||||
unnest_column_only = False
|
||||
alias_post_tablesample = False
|
||||
identifiers_can_start_with_digit = False
|
||||
normalize_functions: t.Optional[str] = "upper"
|
||||
null_ordering = "nulls_are_small"
|
||||
|
||||
|
@ -231,6 +236,7 @@ class Dialect(metaclass=_Dialect):
|
|||
"time_trie": self.inverse_time_trie,
|
||||
"unnest_column_only": self.unnest_column_only,
|
||||
"alias_post_tablesample": self.alias_post_tablesample,
|
||||
"identifiers_can_start_with_digit": self.identifiers_can_start_with_digit,
|
||||
"normalize_functions": self.normalize_functions,
|
||||
"null_ordering": self.null_ordering,
|
||||
**opts,
|
||||
|
@ -443,7 +449,7 @@ def date_trunc_to_time(args: t.List) -> exp.DateTrunc | exp.TimestampTrunc:
|
|||
unit = seq_get(args, 0)
|
||||
this = seq_get(args, 1)
|
||||
|
||||
if isinstance(this, exp.Cast) and this.is_type(exp.DataType.Type.DATE):
|
||||
if isinstance(this, exp.Cast) and this.is_type("date"):
|
||||
return exp.DateTrunc(unit=unit, this=this)
|
||||
return exp.TimestampTrunc(this=this, unit=unit)
|
||||
|
||||
|
@ -468,6 +474,25 @@ def strposition_to_locate_sql(self: Generator, expression: exp.StrPosition) -> s
|
|||
)
|
||||
|
||||
|
||||
def left_to_substring_sql(self: Generator, expression: exp.Left) -> str:
|
||||
expression = expression.copy()
|
||||
return self.sql(
|
||||
exp.Substring(
|
||||
this=expression.this, start=exp.Literal.number(1), length=expression.expression
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def right_to_substring_sql(self: Generator, expression: exp.Left) -> str:
|
||||
expression = expression.copy()
|
||||
return self.sql(
|
||||
exp.Substring(
|
||||
this=expression.this,
|
||||
start=exp.Length(this=expression.this) - exp.paren(expression.expression - 1),
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def timestrtotime_sql(self: Generator, expression: exp.TimeStrToTime) -> str:
|
||||
return f"CAST({self.sql(expression, 'this')} AS TIMESTAMP)"
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue