Skip to content

Commit a2c8fe0

Browse files
committed
Pass snapshots and deployability_index to session properties renderer
1 parent fb399e2 commit a2c8fe0

File tree

3 files changed

+26
-9
lines changed

3 files changed

+26
-9
lines changed

sqlmesh/core/plan/evaluator.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,8 @@ def visit_virtual_layer_update_stage(
342342
self._demote_snapshots(
343343
[stage.all_snapshots[s.snapshot_id] for s in stage.demoted_snapshots],
344344
stage.demoted_environment_naming_info,
345+
snapshots=stage.all_snapshots,
346+
deployability_index=stage.deployability_index,
345347
on_complete=lambda s: self.console.update_promotion_progress(s, False),
346348
)
347349

@@ -384,10 +386,16 @@ def _demote_snapshots(
384386
self,
385387
target_snapshots: t.Iterable[Snapshot],
386388
environment_naming_info: EnvironmentNamingInfo,
389+
snapshots: t.Dict[SnapshotId, Snapshot],
390+
deployability_index: t.Optional[DeployabilityIndex] = None,
387391
on_complete: t.Optional[t.Callable[[SnapshotInfoLike], None]] = None,
388392
) -> None:
389393
self.snapshot_evaluator.demote(
390-
target_snapshots, environment_naming_info, on_complete=on_complete
394+
target_snapshots,
395+
environment_naming_info,
396+
snapshots=snapshots,
397+
deployability_index=deployability_index,
398+
on_complete=on_complete,
391399
)
392400

393401
def _restatement_intervals_across_all_environments(

sqlmesh/core/snapshot/evaluator.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,8 @@ def demote(
278278
self,
279279
target_snapshots: t.Iterable[Snapshot],
280280
environment_naming_info: EnvironmentNamingInfo,
281+
snapshots: t.Dict[SnapshotId, Snapshot],
282+
deployability_index: t.Optional[DeployabilityIndex] = None,
281283
on_complete: t.Optional[t.Callable[[SnapshotInfoLike], None]] = None,
282284
) -> None:
283285
"""Demotes the given collection of snapshots in the target environment by removing its view.
@@ -290,7 +292,9 @@ def demote(
290292
with self.concurrent_context():
291293
concurrent_apply_to_snapshots(
292294
target_snapshots,
293-
lambda s: self._demote_snapshot(s, environment_naming_info, on_complete),
295+
lambda s: self._demote_snapshot(
296+
s, environment_naming_info, snapshots, deployability_index, on_complete
297+
),
294298
self.ddl_concurrent_tasks,
295299
)
296300

@@ -1014,6 +1018,8 @@ def _demote_snapshot(
10141018
self,
10151019
snapshot: Snapshot,
10161020
environment_naming_info: EnvironmentNamingInfo,
1021+
snapshots: t.Dict[SnapshotId, Snapshot],
1022+
deployability_index: t.Optional[DeployabilityIndex],
10171023
on_complete: t.Optional[t.Callable[[SnapshotInfoLike], None]],
10181024
) -> None:
10191025
if snapshot.is_model:
@@ -1029,7 +1035,10 @@ def _demote_snapshot(
10291035
adapter.transaction(),
10301036
adapter.session(
10311037
snapshot.model.render_session_properties(
1032-
engine_adapter=adapter, runtime_stage=RuntimeStage.PROMOTING
1038+
engine_adapter=adapter,
1039+
snapshots=snapshots,
1040+
deployability_index=deployability_index,
1041+
runtime_stage=RuntimeStage.PROMOTING,
10331042
)
10341043
),
10351044
):

tests/core/test_snapshot_evaluator.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ def test_demote(mocker: MockerFixture, adapter_mock, make_snapshot):
320320
snapshot = make_snapshot(model)
321321
snapshot.categorize_as(SnapshotChangeCategory.BREAKING)
322322

323-
evaluator.demote([snapshot], EnvironmentNamingInfo(name="test_env"))
323+
evaluator.demote([snapshot], EnvironmentNamingInfo(name="test_env"), snapshots={})
324324

325325
adapter_mock.transaction.assert_called()
326326
adapter_mock.session.assert_called()
@@ -2694,7 +2694,7 @@ def test_standalone_audit(mocker: MockerFixture, adapter_mock, make_snapshot):
26942694
adapter_mock.session.assert_not_called()
26952695

26962696
# Demote
2697-
evaluator.demote([snapshot], EnvironmentNamingInfo(name="test_env"))
2697+
evaluator.demote([snapshot], EnvironmentNamingInfo(name="test_env"), snapshots={})
26982698

26992699
adapter_mock.assert_not_called()
27002700
adapter_mock.transaction.assert_not_called()
@@ -3837,7 +3837,7 @@ def test_multiple_engine_creation(snapshot: Snapshot, adapters, make_snapshot):
38373837
assert len(post_calls) == 1
38383838
assert post_calls[0].sql(dialect="postgres") == expected_call
38393839

3840-
evaluator.demote([snapshot_2], EnvironmentNamingInfo(name="test_env"))
3840+
evaluator.demote([snapshot_2], EnvironmentNamingInfo(name="test_env"), snapshots={})
38413841
engine_adapters["secondary"].drop_view.assert_not_called()
38423842
engine_adapters["default"].drop_view.assert_called_once_with(
38433843
"test_schema__test_env.test_model",
@@ -4083,7 +4083,7 @@ def model_with_statements(context, **kwargs):
40834083
engine_adapters["default"].get_catalog_type.assert_not_called()
40844084
assert len(engine_adapters["secondary"].get_catalog_type.call_args_list) == 2
40854085

4086-
evaluator.demote([snapshot], environment_naming_info)
4086+
evaluator.demote([snapshot], environment_naming_info, snapshots={})
40874087
engine_adapters["default"].drop_view.assert_called_once_with(
40884088
"db__test_env.multi_engine_test_model",
40894089
cascade=False,
@@ -4097,7 +4097,7 @@ def model_with_statements(context, **kwargs):
40974097
assert view_args[0][0][0] == "db__test_env.multi_engine_test_model"
40984098

40994099
# Similarly for demotion
4100-
evaluator.demote([snapshot], environment_naming_info_gw)
4100+
evaluator.demote([snapshot], environment_naming_info_gw, snapshots={})
41014101
engine_adapters["secondary"].drop_view.assert_called_once_with(
41024102
"db__test_env.multi_engine_test_model",
41034103
cascade=False,
@@ -4155,7 +4155,7 @@ def test_multiple_engine_virtual_layer(snapshot: Snapshot, adapters, make_snapsh
41554155
assert view_args_secondary[0][0][0] == "test_schema__test_env.test_model"
41564156

41574157
# Demotion will follow with the same pattern
4158-
evaluator.demote([snapshot_2, snapshot], environment_naming_info)
4158+
evaluator.demote([snapshot_2, snapshot], environment_naming_info, snapshots={})
41594159
engine_adapters["default"].drop_view.assert_called_once_with(
41604160
"db__test_env.model",
41614161
cascade=False,

0 commit comments

Comments
 (0)