Skip to content

Commit baeb229

Browse files
committed
Add DEMOTING runtime stage
1 parent d7d96b0 commit baeb229

File tree

4 files changed

+12
-10
lines changed

4 files changed

+12
-10
lines changed

docs/concepts/macros/macro_variables.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,8 @@ SQLMesh provides additional predefined variables used to modify model behavior b
132132
* 'loading' - The project is being loaded into SQLMesh's runtime context.
133133
* 'creating' - The model tables are being created.
134134
* 'evaluating' - The model query logic is being evaluated.
135-
* 'promoting' - The model is being promoted in the target environment (virtual layer update).
135+
* 'promoting' - The model is being promoted in the target environment (view created during virtual layer update).
136+
* 'demoting' - The model is being demoted in the target environment (view dropped during virtual layer update).
136137
* 'auditing' - The audit is being run.
137138
* 'testing' - The model query logic is being evaluated in the context of a unit test.
138139
* @gateway - A string value containing the name of the current [gateway](../../guides/connections.md).

sqlmesh/core/macros.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ class RuntimeStage(Enum):
6767
CREATING = "creating"
6868
EVALUATING = "evaluating"
6969
PROMOTING = "promoting"
70+
DEMOTING = "demoting"
7071
AUDITING = "auditing"
7172
TESTING = "testing"
7273
BEFORE_ALL = "before_all"

sqlmesh/core/snapshot/evaluator.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ def demote(
277277
self,
278278
target_snapshots: t.Iterable[Snapshot],
279279
environment_naming_info: EnvironmentNamingInfo,
280-
snapshots: t.Dict[SnapshotId, Snapshot],
280+
snapshots: t.Optional[t.Dict[SnapshotId, Snapshot]] = None,
281281
deployability_index: t.Optional[DeployabilityIndex] = None,
282282
on_complete: t.Optional[t.Callable[[SnapshotInfoLike], None]] = None,
283283
) -> None:
@@ -1017,7 +1017,7 @@ def _demote_snapshot(
10171017
self,
10181018
snapshot: Snapshot,
10191019
environment_naming_info: EnvironmentNamingInfo,
1020-
snapshots: t.Dict[SnapshotId, Snapshot],
1020+
snapshots: t.Optional[t.Dict[SnapshotId, Snapshot]],
10211021
deployability_index: t.Optional[DeployabilityIndex],
10221022
on_complete: t.Optional[t.Callable[[SnapshotInfoLike], None]],
10231023
) -> None:
@@ -1037,7 +1037,7 @@ def _demote_snapshot(
10371037
engine_adapter=adapter,
10381038
snapshots=snapshots,
10391039
deployability_index=deployability_index,
1040-
runtime_stage=RuntimeStage.PROMOTING,
1040+
runtime_stage=RuntimeStage.DEMOTING,
10411041
)
10421042
),
10431043
):

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"), snapshots={})
323+
evaluator.demote([snapshot], EnvironmentNamingInfo(name="test_env"))
324324

325325
adapter_mock.transaction.assert_called()
326326
adapter_mock.session.assert_called()
@@ -2711,7 +2711,7 @@ def test_standalone_audit(mocker: MockerFixture, adapter_mock, make_snapshot):
27112711
adapter_mock.session.assert_not_called()
27122712

27132713
# Demote
2714-
evaluator.demote([snapshot], EnvironmentNamingInfo(name="test_env"), snapshots={})
2714+
evaluator.demote([snapshot], EnvironmentNamingInfo(name="test_env"))
27152715

27162716
adapter_mock.assert_not_called()
27172717
adapter_mock.transaction.assert_not_called()
@@ -3854,7 +3854,7 @@ def test_multiple_engine_creation(snapshot: Snapshot, adapters, make_snapshot):
38543854
assert len(post_calls) == 1
38553855
assert post_calls[0].sql(dialect="postgres") == expected_call
38563856

3857-
evaluator.demote([snapshot_2], EnvironmentNamingInfo(name="test_env"), snapshots={})
3857+
evaluator.demote([snapshot_2], EnvironmentNamingInfo(name="test_env"))
38583858
engine_adapters["secondary"].drop_view.assert_not_called()
38593859
engine_adapters["default"].drop_view.assert_called_once_with(
38603860
"test_schema__test_env.test_model",
@@ -4100,7 +4100,7 @@ def model_with_statements(context, **kwargs):
41004100
engine_adapters["default"].get_catalog_type.assert_not_called()
41014101
assert len(engine_adapters["secondary"].get_catalog_type.call_args_list) == 2
41024102

4103-
evaluator.demote([snapshot], environment_naming_info, snapshots={})
4103+
evaluator.demote([snapshot], environment_naming_info)
41044104
engine_adapters["default"].drop_view.assert_called_once_with(
41054105
"db__test_env.multi_engine_test_model",
41064106
cascade=False,
@@ -4114,7 +4114,7 @@ def model_with_statements(context, **kwargs):
41144114
assert view_args[0][0][0] == "db__test_env.multi_engine_test_model"
41154115

41164116
# Similarly for demotion
4117-
evaluator.demote([snapshot], environment_naming_info_gw, snapshots={})
4117+
evaluator.demote([snapshot], environment_naming_info_gw)
41184118
engine_adapters["secondary"].drop_view.assert_called_once_with(
41194119
"db__test_env.multi_engine_test_model",
41204120
cascade=False,
@@ -4172,7 +4172,7 @@ def test_multiple_engine_virtual_layer(snapshot: Snapshot, adapters, make_snapsh
41724172
assert view_args_secondary[0][0][0] == "test_schema__test_env.test_model"
41734173

41744174
# Demotion will follow with the same pattern
4175-
evaluator.demote([snapshot_2, snapshot], environment_naming_info, snapshots={})
4175+
evaluator.demote([snapshot_2, snapshot], environment_naming_info)
41764176
engine_adapters["default"].drop_view.assert_called_once_with(
41774177
"db__test_env.model",
41784178
cascade=False,

0 commit comments

Comments
 (0)