Skip to content

Commit bbdd501

Browse files
authored
fix: allow macro defs to references dates and other builtins (#4157)
1 parent 6c7cf7a commit bbdd501

2 files changed

Lines changed: 31 additions & 5 deletions

File tree

sqlmesh/core/renderer.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -213,17 +213,17 @@ def _render(
213213
environment_naming_info=environment_naming_info,
214214
)
215215

216+
macro_evaluator.locals.update(render_kwargs)
217+
218+
if variables:
219+
macro_evaluator.locals.setdefault(c.SQLMESH_VARS, {}).update(variables)
220+
216221
for definition in self._macro_definitions:
217222
try:
218223
macro_evaluator.evaluate(definition)
219224
except Exception as ex:
220225
raise_config_error(f"Failed to evaluate macro '{definition}'. {ex}", self._path)
221226

222-
macro_evaluator.locals.update(render_kwargs)
223-
224-
if variables:
225-
macro_evaluator.locals.setdefault(c.SQLMESH_VARS, {}).update(variables)
226-
227227
resolved_expressions: t.List[t.Optional[exp.Expression]] = []
228228

229229
for expression in expressions:

tests/core/test_model.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8983,3 +8983,29 @@ def test_model(context, **kwargs):
89838983

89848984
assert python_model.kind.disable_restatement is False
89858985
assert python_model.optimize_query is False
8986+
8987+
8988+
def test_var_in_def(assert_exp_eq):
8989+
expressions = d.parse(
8990+
"""
8991+
MODEL (
8992+
name db.table,
8993+
kind INCREMENTAL_BY_TIME_RANGE(
8994+
time_column ds
8995+
),
8996+
);
8997+
8998+
@DEF(var, @start_ds);
8999+
9000+
SELECT @var AS ds
9001+
"""
9002+
)
9003+
9004+
model = load_sql_based_model(expressions)
9005+
9006+
assert_exp_eq(
9007+
model.render_query(),
9008+
"""
9009+
SELECT '1970-01-01' AS "ds"
9010+
""",
9011+
)

0 commit comments

Comments
 (0)