Skip to content

Commit c3a4b7c

Browse files
committed
Chore: log rendered jinja right before parsing it to improve debugging
1 parent e430f50 commit c3a4b7c

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

sqlmesh/core/renderer.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,9 @@ def _resolve_table(table: str | exp.Table) -> str:
215215
try:
216216
expressions = []
217217
rendered_expression = jinja_env.from_string(self._expression.name).render()
218+
logger.debug(
219+
f"Rendered Jinja expression for model '{self._model_fqn}' at '{self._path}': {rendered_expression}"
220+
)
218221
if rendered_expression.strip():
219222
expressions = [e for e in parse(rendered_expression, read=self._dialect) if e]
220223

tests/core/test_model.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8534,6 +8534,38 @@ def test_comments_in_jinja_query():
85348534
model.render_query()
85358535

85368536

8537+
def test_jinja_render_debug_logging(caplog):
8538+
"""Test that rendered Jinja expressions are logged for debugging."""
8539+
import logging
8540+
8541+
# Set log level to DEBUG to capture debug logs
8542+
caplog.set_level(logging.DEBUG, logger="sqlmesh.core.renderer")
8543+
8544+
# Create a model with unparseable Jinja that will be rendered
8545+
expressions = d.parse(
8546+
"""
8547+
MODEL (name db.test_model);
8548+
8549+
JINJA_QUERY_BEGIN;
8550+
{{ 'SELECT invalid syntax here!' }}
8551+
JINJA_END;
8552+
"""
8553+
)
8554+
8555+
model = load_sql_based_model(expressions)
8556+
8557+
# Attempt to render - this should fail due to invalid SQL syntax
8558+
with pytest.raises(ConfigError, match=r"Could not render or parse jinja"):
8559+
model.render_query()
8560+
8561+
# Check that the rendered Jinja was logged
8562+
assert any(
8563+
'Rendered Jinja expression for model \'"db"."test_model"\'' in record.message
8564+
and "SELECT invalid syntax here!" in record.message
8565+
for record in caplog.records
8566+
)
8567+
8568+
85378569
def test_staged_file_path():
85388570
expressions = d.parse(
85398571
"""

0 commit comments

Comments
 (0)