From d6b32a8bf03c9f5b1bbb225fd0d6d7dde1bde5e9 Mon Sep 17 00:00:00 2001 From: Moira Tagle Date: Mon, 1 Jul 2024 22:22:14 -0700 Subject: [PATCH] fix(teradata): use timestamp with time zone over timstamptz; current_timestamp fix. cloes 3722 --- sqlglot/dialects/teradata.py | 4 +++- tests/dialects/test_teradata.py | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/sqlglot/dialects/teradata.py b/sqlglot/dialects/teradata.py index e7302357a..3120203ad 100644 --- a/sqlglot/dialects/teradata.py +++ b/sqlglot/dialects/teradata.py @@ -223,11 +223,13 @@ class Generator(generator.Generator): TABLESAMPLE_KEYWORDS = "SAMPLE" LAST_DAY_SUPPORTS_DATE_PART = False CAN_IMPLEMENT_ARRAY_ANY = True + TZ_TO_WITH_TIME_ZONE = True TYPE_MAPPING = { **generator.Generator.TYPE_MAPPING, exp.DataType.Type.GEOMETRY: "ST_GEOMETRY", exp.DataType.Type.DOUBLE: "DOUBLE PRECISION", + exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP", } PROPERTIES_LOCATION = { @@ -254,7 +256,7 @@ class Generator(generator.Generator): exp.ToChar: lambda self, e: self.function_fallback_sql(e), exp.ToNumber: to_number_with_nls_param, exp.Use: lambda self, e: f"DATABASE {self.sql(e, 'this')}", - exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP", + exp.CurrentTimestamp: lambda self, e: "CURRENT_TIMESTAMP" if not e.this else f"CURRENT_TIMESTAMP({self.sql(e, 'this')})", exp.DateAdd: _date_add_sql("+"), exp.DateSub: _date_add_sql("-"), exp.Quarter: lambda self, e: self.sql(exp.Extract(this="QUARTER", expression=e.this)), diff --git a/tests/dialects/test_teradata.py b/tests/dialects/test_teradata.py index 1f681fd2b..3945ca38d 100644 --- a/tests/dialects/test_teradata.py +++ b/tests/dialects/test_teradata.py @@ -12,7 +12,6 @@ def test_teradata(self): "teradata": "RANDOM(l, u)", }, ) - self.validate_identity("TO_NUMBER(expr, fmt, nlsparam)") self.validate_identity("SELECT TOP 10 * FROM tbl") self.validate_identity("SELECT * FROM tbl SAMPLE 5") @@ -220,6 +219,8 @@ def test_cast(self): ) def test_time(self): + self.validate_identity("CAST(CURRENT_TIMESTAMP(6) AS TIMESTAMP WITH TIME ZONE)") + self.validate_all( "CURRENT_TIMESTAMP", read={