Skip to content

Commit e187bca

Browse files
committed
Fix: Always support start_* / end_* macros in pre- / post- statements
1 parent 0bb482a commit e187bca

2 files changed

Lines changed: 38 additions & 1 deletion

File tree

sqlmesh/core/model/definition.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,7 @@ def _statement_renderer(self, expression: exp.Expression) -> ExpressionRenderer:
584584
path=self._path,
585585
jinja_macro_registry=self.jinja_macros,
586586
python_env=self.python_env,
587-
only_execution_time=self.kind.only_execution_time,
587+
only_execution_time=False,
588588
default_catalog=self.default_catalog,
589589
model_fqn=self.fqn,
590590
)

tests/core/test_model.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -776,6 +776,43 @@ def multiple_statements(evaluator, t1_value=exp.Literal.number(1)):
776776
assert "exp" in model.python_env
777777

778778

779+
@pytest.mark.parametrize("model_kind", ["FULL", "VIEW"])
780+
def test_model_pre_post_statements_start_end_are_always_available(model_kind: str):
781+
@macro()
782+
def foo(evaluator: MacroEvaluator, start: str, end: str) -> str:
783+
return f"'{start}, {end}'"
784+
785+
@macro()
786+
def bar(evaluator: MacroEvaluator, start: int, end: int) -> str:
787+
return f"'{start}, {end}'"
788+
789+
expressions = d.parse(
790+
f"""
791+
MODEL (
792+
name db.table,
793+
kind {model_kind},
794+
);
795+
796+
@foo(@start_ds, @end_ds);
797+
798+
SELECT 1 AS x;
799+
800+
@bar(@start_millis, @end_millis);
801+
"""
802+
)
803+
model = load_sql_based_model(expressions)
804+
805+
start = "2025-01-01"
806+
end = "2025-01-02"
807+
808+
assert model.render_pre_statements(start=start, end=end) == [
809+
exp.Literal.string(f"{start}, {end}")
810+
]
811+
assert model.render_post_statements(start=start, end=end) == [
812+
exp.Literal.string(f"{to_timestamp(start)}, {to_timestamp('2025-01-03') - 1}")
813+
]
814+
815+
779816
def test_seed_hydration():
780817
expressions = d.parse(
781818
"""

0 commit comments

Comments
 (0)