Skip to content

Commit dea22ca

Browse files
authored
Feat(singlestore)!: support RECORD type (#6635)
1 parent 00c80b1 commit dea22ca

File tree

2 files changed

+4
-1
lines changed

2 files changed

+4
-1
lines changed

sqlglot/dialects/singlestore.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ class Tokenizer(MySQL.Tokenizer):
8282
"::$": TokenType.DCOLONDOLLAR,
8383
"::%": TokenType.DCOLONPERCENT,
8484
"::?": TokenType.DCOLONQMARK,
85+
"RECORD": TokenType.STRUCT,
8586
}
8687

8788
class Parser(MySQL.Parser):
@@ -328,6 +329,7 @@ class Generator(MySQL.Generator):
328329
SUPPORTS_UESCAPE = False
329330
NULL_ORDERING_SUPPORTED = True
330331
MATCH_AGAINST_TABLE_PREFIX = "TABLE "
332+
STRUCT_DELIMITER = ("(", ")")
331333

332334
@staticmethod
333335
def _unicode_substitute(m: re.Match[str]) -> str:
@@ -613,7 +615,6 @@ def _unicode_substitute(m: re.Match[str]) -> str:
613615
exp.DataType.Type.SERIAL,
614616
exp.DataType.Type.SMALLSERIAL,
615617
exp.DataType.Type.SMALLMONEY,
616-
exp.DataType.Type.STRUCT,
617618
exp.DataType.Type.SUPER,
618619
exp.DataType.Type.TIMETZ,
619620
exp.DataType.Type.TIMESTAMPNTZ,
@@ -654,6 +655,7 @@ def _unicode_substitute(m: re.Match[str]) -> str:
654655
exp.DataType.Type.LINESTRING: "GEOGRAPHY",
655656
exp.DataType.Type.POLYGON: "GEOGRAPHY",
656657
exp.DataType.Type.MULTIPOLYGON: "GEOGRAPHY",
658+
exp.DataType.Type.STRUCT: "RECORD",
657659
exp.DataType.Type.JSONB: "BSON",
658660
exp.DataType.Type.TIMESTAMP: "TIMESTAMP",
659661
exp.DataType.Type.TIMESTAMP_S: "TIMESTAMP",

tests/dialects/test_singlestore.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ def test_singlestore(self):
2020
self.validate_identity("SELECT 1")
2121
self.validate_identity("SELECT * FROM `users` ORDER BY ALL")
2222
self.validate_identity("SELECT ELT(2, 'foo', 'bar', 'baz')")
23+
self.validate_identity("SELECT TO_JSON(ROW(1, 2) :> RECORD(a INT, b INT))")
2324

2425
def test_byte_strings(self):
2526
self.validate_identity("SELECT e'text'")

0 commit comments

Comments
 (0)