From 78da996924c17116656609237f7120b033d11577 Mon Sep 17 00:00:00 2001 From: George Sittas Date: Sat, 17 Jun 2023 21:16:32 +0300 Subject: [PATCH] Fix(teradata): add support for the SELECT TOP N syntax --- sqlglot/dialects/teradata.py | 13 +++++++------ tests/dialects/test_dialect.py | 1 + 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/sqlglot/dialects/teradata.py b/sqlglot/dialects/teradata.py index d5e5dd81dd..d9a5417a65 100644 --- a/sqlglot/dialects/teradata.py +++ b/sqlglot/dialects/teradata.py @@ -31,18 +31,19 @@ class Tokenizer(tokens.Tokenizer): # https://docs.teradata.com/r/Teradata-Database-SQL-Functions-Operators-Expressions-and-Predicates/March-2017/Comparison-Operators-and-Functions/Comparison-Operators/ANSI-Compliance KEYWORDS = { **tokens.Tokenizer.KEYWORDS, + "^=": TokenType.NEQ, "BYTEINT": TokenType.SMALLINT, - "SEL": TokenType.SELECT, + "GE": TokenType.GTE, + "GT": TokenType.GT, "INS": TokenType.INSERT, - "MOD": TokenType.MOD, - "LT": TokenType.LT, "LE": TokenType.LTE, - "GT": TokenType.GT, - "GE": TokenType.GTE, - "^=": TokenType.NEQ, + "LT": TokenType.LT, + "MOD": TokenType.MOD, "NE": TokenType.NEQ, "NOT=": TokenType.NEQ, + "SEL": TokenType.SELECT, "ST_GEOMETRY": TokenType.GEOMETRY, + "TOP": TokenType.TOP, } # Teradata does not support % as a modulo operator diff --git a/tests/dialects/test_dialect.py b/tests/dialects/test_dialect.py index 07ff4e4771..76c04ae850 100644 --- a/tests/dialects/test_dialect.py +++ b/tests/dialects/test_dialect.py @@ -1300,6 +1300,7 @@ def test_limit(self): self.validate_all( "SELECT x FROM y LIMIT 10", read={ + "teradata": "SELECT TOP 10 x FROM y", "tsql": "SELECT TOP 10 x FROM y", }, write={