diff --git a/sqlmesh/core/environment.py b/sqlmesh/core/environment.py index 1762a6275a..9478e2878c 100644 --- a/sqlmesh/core/environment.py +++ b/sqlmesh/core/environment.py @@ -219,7 +219,7 @@ class EnvironmentStatements(PydanticModel): before_all: t.List[str] after_all: t.List[str] python_env: t.Dict[str, Executable] - jinja_macros: JinjaMacroRegistry = JinjaMacroRegistry() + jinja_macros: t.Optional[JinjaMacroRegistry] = None def execute_environment_statements( diff --git a/sqlmesh/core/renderer.py b/sqlmesh/core/renderer.py index 86308b9e97..45683215e0 100644 --- a/sqlmesh/core/renderer.py +++ b/sqlmesh/core/renderer.py @@ -437,7 +437,7 @@ def render_statements( expression, dialect, [], - jinja_macro_registry=jinja_macros or JinjaMacroRegistry(), + jinja_macro_registry=jinja_macros, python_env=python_env, default_catalog=default_catalog, quote_identifiers=False, diff --git a/tests/core/test_integration.py b/tests/core/test_integration.py index cc70cf302e..47cbeb5986 100644 --- a/tests/core/test_integration.py +++ b/tests/core/test_integration.py @@ -5268,3 +5268,32 @@ def add_projection_to_model(model: SqlModel, literal: bool = True) -> SqlModel: "query": model.query.select(one_expr), # type: ignore } return SqlModel.parse_obj(kwargs) + + +def test_plan_environment_statements_doesnt_cause_extra_diff(tmp_path: Path): + model_a = """ + MODEL ( + name test_schema.a, + kind FULL, + ); + + SELECT 1; + """ + + models_dir = tmp_path / "models" + models_dir.mkdir() + + (models_dir / "a.sql").write_text(model_a) + + config = Config( + model_defaults=ModelDefaultsConfig(dialect="duckdb"), + before_all=["select 1 as before_all"], + after_all=["select 2 as after_all"], + ) + ctx = Context(paths=[tmp_path], config=config) + + # first plan - should apply changes + assert ctx.plan(auto_apply=True, no_prompts=True).has_changes + + # second plan - nothing has changed so should report no changes + assert not ctx.plan(auto_apply=True, no_prompts=True).has_changes