diff --git a/sqlglot/dialects/teradata.py b/sqlglot/dialects/teradata.py index 2be1a62526..163cc1370c 100644 --- a/sqlglot/dialects/teradata.py +++ b/sqlglot/dialects/teradata.py @@ -95,6 +95,9 @@ class Parser(parser.Parser): STATEMENT_PARSERS = { **parser.Parser.STATEMENT_PARSERS, + TokenType.DATABASE: lambda self: self.expression( + exp.Use, this=self._parse_table(schema=False) + ), TokenType.REPLACE: lambda self: self._parse_create(), } @@ -165,6 +168,7 @@ class Generator(generator.Generator): exp.Select: transforms.preprocess([transforms.eliminate_distinct_on]), exp.StrToDate: lambda self, e: f"CAST({self.sql(e, 'this')} AS DATE FORMAT {self.format_time(e)})", exp.ToChar: lambda self, e: self.function_fallback_sql(e), + exp.Use: lambda self, e: f"DATABASE {self.sql(e, 'this')}", } def partitionedbyproperty_sql(self, expression: exp.PartitionedByProperty) -> str: diff --git a/tests/dialects/test_teradata.py b/tests/dialects/test_teradata.py index 4d322419e5..32bdc719fa 100644 --- a/tests/dialects/test_teradata.py +++ b/tests/dialects/test_teradata.py @@ -4,6 +4,18 @@ class TestTeradata(Validator): dialect = "teradata" + def test_teradata(self): + self.validate_all( + "DATABASE tduser", + read={ + "databricks": "USE tduser", + }, + write={ + "databricks": "USE tduser", + "teradata": "DATABASE tduser", + }, + ) + def test_translate(self): self.validate_all( "TRANSLATE(x USING LATIN_TO_UNICODE)",