diff options
Diffstat (limited to 'sqlglot/dialects/duckdb.py')
-rw-r--r-- | sqlglot/dialects/duckdb.py | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/sqlglot/dialects/duckdb.py b/sqlglot/dialects/duckdb.py index db79d86..43f538c 100644 --- a/sqlglot/dialects/duckdb.py +++ b/sqlglot/dialects/duckdb.py @@ -81,8 +81,21 @@ class DuckDB(Dialect): **tokens.Tokenizer.KEYWORDS, ":=": TokenType.EQ, "ATTACH": TokenType.COMMAND, - "CHARACTER VARYING": TokenType.VARCHAR, + "BINARY": TokenType.VARBINARY, + "BPCHAR": TokenType.TEXT, + "BITSTRING": TokenType.BIT, + "CHAR": TokenType.TEXT, + "CHARACTER VARYING": TokenType.TEXT, "EXCLUDE": TokenType.EXCEPT, + "INT1": TokenType.TINYINT, + "LOGICAL": TokenType.BOOLEAN, + "NUMERIC": TokenType.DOUBLE, + "SIGNED": TokenType.INT, + "STRING": TokenType.VARCHAR, + "UBIGINT": TokenType.UBIGINT, + "UINTEGER": TokenType.UINT, + "USMALLINT": TokenType.USMALLINT, + "UTINYINT": TokenType.UTINYINT, } class Parser(parser.Parser): @@ -115,6 +128,14 @@ class DuckDB(Dialect): "UNNEST": exp.Explode.from_arg_list, } + TYPE_TOKENS = { + *parser.Parser.TYPE_TOKENS, + TokenType.UBIGINT, + TokenType.UINT, + TokenType.USMALLINT, + TokenType.UTINYINT, + } + class Generator(generator.Generator): STRUCT_DELIMITER = ("(", ")") @@ -169,8 +190,14 @@ class DuckDB(Dialect): TYPE_MAPPING = { **generator.Generator.TYPE_MAPPING, # type: ignore - exp.DataType.Type.VARCHAR: "TEXT", + exp.DataType.Type.BINARY: "BLOB", + exp.DataType.Type.CHAR: "TEXT", + exp.DataType.Type.FLOAT: "REAL", + exp.DataType.Type.NCHAR: "TEXT", exp.DataType.Type.NVARCHAR: "TEXT", + exp.DataType.Type.UINT: "UINTEGER", + exp.DataType.Type.VARBINARY: "BLOB", + exp.DataType.Type.VARCHAR: "TEXT", } STAR_MAPPING = { |