summaryrefslogtreecommitdiffstats
path: root/sqlglot/dialects/dialect.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-02-16 05:45:52 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-02-16 05:45:52 +0000
commit3d48060515ba25b4c49d975a520ee0682327d1b7 (patch)
treee8730f509026e866d77c459f74a384505425363a /sqlglot/dialects/dialect.py
parentReleasing debian version 21.0.2-1. (diff)
downloadsqlglot-3d48060515ba25b4c49d975a520ee0682327d1b7.tar.xz
sqlglot-3d48060515ba25b4c49d975a520ee0682327d1b7.zip
Merging upstream version 21.1.1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'sqlglot/dialects/dialect.py')
-rw-r--r--sqlglot/dialects/dialect.py29
1 files changed, 5 insertions, 24 deletions
diff --git a/sqlglot/dialects/dialect.py b/sqlglot/dialects/dialect.py
index 6e2d190..0440a99 100644
--- a/sqlglot/dialects/dialect.py
+++ b/sqlglot/dialects/dialect.py
@@ -654,28 +654,6 @@ def time_format(
return _time_format
-def create_with_partitions_sql(self: Generator, expression: exp.Create) -> str:
- """
- In Hive and Spark, the PARTITIONED BY property acts as an extension of a table's schema. When the
- PARTITIONED BY value is an array of column names, they are transformed into a schema. The corresponding
- columns are removed from the create statement.
- """
- has_schema = isinstance(expression.this, exp.Schema)
- is_partitionable = expression.args.get("kind") in ("TABLE", "VIEW")
-
- if has_schema and is_partitionable:
- prop = expression.find(exp.PartitionedByProperty)
- if prop and prop.this and not isinstance(prop.this, exp.Schema):
- schema = expression.this
- columns = {v.name.upper() for v in prop.this.expressions}
- partitions = [col for col in schema.expressions if col.name.upper() in columns]
- schema.set("expressions", [e for e in schema.expressions if e not in partitions])
- prop.replace(exp.PartitionedByProperty(this=exp.Schema(expressions=partitions)))
- expression.set("this", schema)
-
- return self.create_sql(expression)
-
-
def parse_date_delta(
exp_class: t.Type[E], unit_mapping: t.Optional[t.Dict[str, str]] = None
) -> t.Callable[[t.List], E]:
@@ -742,7 +720,10 @@ def timestamptrunc_sql(self: Generator, expression: exp.TimestampTrunc) -> str:
def no_timestamp_sql(self: Generator, expression: exp.Timestamp) -> str:
if not expression.expression:
- return self.sql(exp.cast(expression.this, to=exp.DataType.Type.TIMESTAMP))
+ from sqlglot.optimizer.annotate_types import annotate_types
+
+ target_type = annotate_types(expression).type or exp.DataType.Type.TIMESTAMP
+ return self.sql(exp.cast(expression.this, to=target_type))
if expression.text("expression").lower() in TIMEZONES:
return self.sql(
exp.AtTimeZone(
@@ -750,7 +731,7 @@ def no_timestamp_sql(self: Generator, expression: exp.Timestamp) -> str:
zone=expression.expression,
)
)
- return self.function_fallback_sql(expression)
+ return self.func("TIMESTAMP", expression.this, expression.expression)
def locate_to_strposition(args: t.List) -> exp.Expression: