Skip to content

Commit 491c407

Browse files
authored
Fix(clickhouse)!: parse parameter key as Var instead of Identifier (#4888)
1 parent 0ba1cfc commit 491c407

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

sqlglot/dialects/clickhouse.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -609,6 +609,9 @@ def _parse_query_parameter(self) -> t.Optional[exp.Expression]:
609609
elif not self._match(TokenType.R_BRACE):
610610
self.raise_error("Expecting }")
611611

612+
if isinstance(this, exp.Identifier) and not this.quoted:
613+
this = exp.var(this.name)
614+
612615
return self.expression(exp.Placeholder, this=this, kind=kind)
613616

614617
def _parse_bracket(

tests/dialects/test_clickhouse.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from sqlglot.dialects import ClickHouse
44
from sqlglot.expressions import convert
55
from sqlglot.optimizer import traverse_scope
6+
from sqlglot.optimizer.qualify_columns import quote_identifiers
67
from tests.dialects.test_dialect import Validator
78
from sqlglot.errors import ErrorLevel
89

@@ -11,6 +12,9 @@ class TestClickhouse(Validator):
1112
dialect = "clickhouse"
1213

1314
def test_clickhouse(self):
15+
expr = quote_identifiers(self.parse_one("{start_date:String}"), dialect="clickhouse")
16+
self.assertEqual(expr.sql("clickhouse"), "{start_date: String}")
17+
1418
for string_type_enum in ClickHouse.Generator.STRING_TYPE_MAPPING:
1519
self.validate_identity(f"CAST(x AS {string_type_enum.value})", "CAST(x AS String)")
1620

0 commit comments

Comments
 (0)