Skip to content

Commit e77991d

Browse files
authored
feat(duckdb): Add support for SET VARIABLE (#5360)
1 parent eae64e1 commit e77991d

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

sqlglot/dialects/duckdb.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,11 @@ class Parser(parser.Parser):
484484
TokenType.SHOW: lambda self: self._parse_show(),
485485
}
486486

487+
SET_PARSERS = {
488+
**parser.Parser.SET_PARSERS,
489+
"VARIABLE": lambda self: self._parse_set_item_assignment("VARIABLE"),
490+
}
491+
487492
def _parse_lambda(self, alias: bool = False) -> t.Optional[exp.Expression]:
488493
index = self._index
489494
if not self._match_text_seq("LAMBDA"):

tests/dialects/test_duckdb.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1686,3 +1686,12 @@ def test_extract_date_parts(self):
16861686
with self.subTest(f"Testing DuckDB EXTRACT({part} FROM foo)"):
16871687
# All of these should remain as is, they don't have synonyms
16881688
self.validate_identity(f"EXTRACT({part} FROM foo)")
1689+
1690+
def test_set_item(self):
1691+
self.validate_identity("SET memory_limit = '10GB'")
1692+
self.validate_identity("SET SESSION default_collation = 'nocase'")
1693+
self.validate_identity("SET GLOBAL sort_order = 'desc'")
1694+
self.validate_identity("SET VARIABLE my_var = 30")
1695+
self.validate_identity("SET VARIABLE location_map = (SELECT foo FROM bar)")
1696+
1697+
self.validate_identity("SET VARIABLE my_var TO 30", "SET VARIABLE my_var = 30")

0 commit comments

Comments
 (0)