Skip to content

Commit

Permalink
feat: Adding NAME data type in Postgres/Redshift (#3128)
Browse files Browse the repository at this point in the history
* feat: Adding NAME data type in Postgres/Redshift

* Changing test case
  • Loading branch information
VaggelisD committed Mar 12, 2024
1 parent 9b25a8e commit 0ea849b
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 1 deletion.
1 change: 1 addition & 0 deletions sqlglot/dialects/postgres.py
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,7 @@ class Tokenizer(tokens.Tokenizer):
"REVOKE": TokenType.COMMAND,
"SERIAL": TokenType.SERIAL,
"SMALLSERIAL": TokenType.SMALLSERIAL,
"NAME": TokenType.NAME,
"TEMP": TokenType.TEMPORARY,
"CSTRING": TokenType.PSEUDO_TYPE,
"OID": TokenType.OBJECT_IDENTIFIER,
Expand Down
2 changes: 2 additions & 0 deletions sqlglot/expressions.py
Original file line number Diff line number Diff line change
Expand Up @@ -3787,6 +3787,7 @@ class Type(AutoName):
MEDIUMINT = auto()
MEDIUMTEXT = auto()
MONEY = auto()
NAME = auto()
NCHAR = auto()
NESTED = auto()
NULL = auto()
Expand Down Expand Up @@ -3843,6 +3844,7 @@ class Type(AutoName):
Type.NVARCHAR,
Type.TEXT,
Type.VARCHAR,
Type.NAME,
}

INTEGER_TYPES = {
Expand Down
1 change: 1 addition & 0 deletions sqlglot/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,7 @@ class Parser(metaclass=_Parser):
TokenType.IPV6,
TokenType.UNKNOWN,
TokenType.NULL,
TokenType.NAME,
*ENUM_TYPE_TOKENS,
*NESTED_TYPE_TOKENS,
*AGGREGATE_TYPE_TOKENS,
Expand Down
1 change: 1 addition & 0 deletions sqlglot/tokens.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ class TokenType(AutoName):
LONGBLOB = auto()
TINYBLOB = auto()
TINYTEXT = auto()
NAME = auto()
BINARY = auto()
VARBINARY = auto()
JSON = auto()
Expand Down
11 changes: 10 additions & 1 deletion tests/dialects/test_postgres.py
Original file line number Diff line number Diff line change
Expand Up @@ -608,7 +608,16 @@ def test_postgres(self):
"postgres": "x / y ^ z",
},
)

self.validate_all(
"CAST(x AS NAME)",
read={
"redshift": "CAST(x AS NAME)",
},
write={
"postgres": "CAST(x AS NAME)",
"redshift": "CAST(x AS NAME)",
},
)
self.assertIsInstance(self.parse_one("id::UUID"), exp.Cast)

def test_ddl(self):
Expand Down
1 change: 1 addition & 0 deletions tests/fixtures/identity.sql
Original file line number Diff line number Diff line change
Expand Up @@ -859,3 +859,4 @@ SELECT only
TRUNCATE(a, b)
SELECT enum
SELECT unlogged
SELECT name

0 comments on commit 0ea849b

Please sign in to comment.