diff options
Diffstat (limited to 'sqlglot/dialects/hive.py')
-rw-r--r-- | sqlglot/dialects/hive.py | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/sqlglot/dialects/hive.py b/sqlglot/dialects/hive.py index 088555c..ead13b1 100644 --- a/sqlglot/dialects/hive.py +++ b/sqlglot/dialects/hive.py @@ -175,14 +175,6 @@ class Hive(Dialect): ESCAPES = ["\\"] ENCODE = "utf-8" - NUMERIC_LITERALS = { - "L": "BIGINT", - "S": "SMALLINT", - "Y": "TINYINT", - "D": "DOUBLE", - "F": "FLOAT", - "BD": "DECIMAL", - } KEYWORDS = { **tokens.Tokenizer.KEYWORDS, "ADD ARCHIVE": TokenType.COMMAND, @@ -191,9 +183,21 @@ class Hive(Dialect): "ADD FILES": TokenType.COMMAND, "ADD JAR": TokenType.COMMAND, "ADD JARS": TokenType.COMMAND, + "MSCK REPAIR": TokenType.COMMAND, "WITH SERDEPROPERTIES": TokenType.SERDE_PROPERTIES, } + NUMERIC_LITERALS = { + "L": "BIGINT", + "S": "SMALLINT", + "Y": "TINYINT", + "D": "DOUBLE", + "F": "FLOAT", + "BD": "DECIMAL", + } + + IDENTIFIER_CAN_START_WITH_DIGIT = True + class Parser(parser.Parser): STRICT_CAST = False @@ -315,6 +319,7 @@ class Hive(Dialect): exp.RowFormatSerdeProperty: lambda self, e: f"ROW FORMAT SERDE {self.sql(e, 'this')}", exp.SerdeProperties: lambda self, e: self.properties(e, prefix="WITH SERDEPROPERTIES"), exp.NumberToStr: rename_func("FORMAT_NUMBER"), + exp.LastDateOfMonth: rename_func("LAST_DAY"), } WITH_PROPERTIES = {exp.Property} @@ -342,4 +347,6 @@ class Hive(Dialect): and not expression.expressions ): expression = exp.DataType.build("text") + elif expression.this in exp.DataType.TEMPORAL_TYPES: + expression = exp.DataType.build(expression.this) return super().datatype_sql(expression) |