Skip to content

Commit c742bcb

Browse files
authored
Fix: Support comments in Jinja queries coming from dbt models (#3152)
1 parent 925b046 commit c742bcb

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

sqlmesh/core/renderer.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,8 @@ def render(
424424
except ParsetimeAdapterCallError:
425425
return None
426426

427+
expressions = [e for e in expressions if not isinstance(e, exp.Semicolon)]
428+
427429
if not expressions:
428430
raise ConfigError(f"Failed to render query at '{self._path}':\n{self._expression}")
429431

tests/core/test_model.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5858,6 +5858,42 @@ def test_trailing_comments():
58585858
assert not model.render_post_statements()
58595859

58605860

5861+
def test_comments_in_jinja_query():
5862+
expressions = d.parse(
5863+
"""
5864+
MODEL (name db.table);
5865+
5866+
JINJA_QUERY_BEGIN;
5867+
/* some comment A */
5868+
5869+
SELECT 1;
5870+
/* some comment B */
5871+
5872+
JINJA_END;
5873+
"""
5874+
)
5875+
model = load_sql_based_model(expressions)
5876+
assert model.render_query().sql() == '/* some comment A */ SELECT 1 AS "1"'
5877+
5878+
expressions = d.parse(
5879+
"""
5880+
MODEL (name db.table);
5881+
5882+
JINJA_QUERY_BEGIN;
5883+
/* some comment A */
5884+
5885+
SELECT 1;
5886+
SELECT 2;
5887+
/* some comment B */
5888+
5889+
JINJA_END;
5890+
"""
5891+
)
5892+
model = load_sql_based_model(expressions)
5893+
with pytest.raises(ConfigError, match=r"Too many statements in query.*"):
5894+
model.render_query()
5895+
5896+
58615897
def test_staged_file_path():
58625898
expressions = d.parse(
58635899
"""

0 commit comments

Comments
 (0)