Skip to content

Commit 3ad7ee0

Browse files
authored
Fix: Check whether the snapshot is paused or not when promoting it in a dev environment (#1544)
1 parent 00af89e commit 3ad7ee0

2 files changed

Lines changed: 44 additions & 1 deletion

File tree

sqlmesh/core/snapshot/evaluator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -472,7 +472,7 @@ def _promote_snapshot(
472472
is_dev: bool,
473473
on_complete: t.Optional[t.Callable[[SnapshotInfoLike], None]],
474474
) -> None:
475-
table_name = snapshot.table_name(is_dev=is_dev, for_read=True)
475+
table_name = snapshot.table_name_for_mapping(is_dev=is_dev)
476476
_evaluation_strategy(snapshot, self.adapter).promote(
477477
snapshot.qualified_view_name, environment_naming_info, table_name, snapshot
478478
)

tests/core/test_snapshot_evaluator.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
)
2424
from sqlmesh.core.node import IntervalUnit
2525
from sqlmesh.core.snapshot import Snapshot, SnapshotChangeCategory, SnapshotEvaluator
26+
from sqlmesh.utils.date import to_timestamp
2627
from sqlmesh.utils.errors import ConfigError, SQLMeshError
2728
from sqlmesh.utils.metaprogramming import Executable
2829

@@ -192,6 +193,48 @@ def test_promote(mocker: MockerFixture, adapter_mock, make_snapshot):
192193
)
193194

194195

196+
def test_promote_forward_only(mocker: MockerFixture, adapter_mock, make_snapshot):
197+
evaluator = SnapshotEvaluator(adapter_mock)
198+
199+
model = SqlModel(
200+
name="test_schema.test_model",
201+
kind=IncrementalByTimeRangeKind(time_column="a"),
202+
query=parse_one("SELECT a FROM tbl WHERE ds BETWEEN @start_ds and @end_ds"),
203+
)
204+
205+
snapshot = make_snapshot(model)
206+
snapshot.categorize_as(SnapshotChangeCategory.FORWARD_ONLY)
207+
snapshot.version = "test_version"
208+
209+
evaluator.promote([snapshot], EnvironmentNamingInfo(name="test_env"), is_dev=True)
210+
211+
snapshot.unpaused_ts = to_timestamp("2023-01-01")
212+
evaluator.promote([snapshot], EnvironmentNamingInfo(name="test_env"), is_dev=True)
213+
214+
adapter_mock.create_schema.assert_has_calls(
215+
[
216+
call("test_schema__test_env", catalog_name=None),
217+
call("test_schema__test_env", catalog_name=None),
218+
]
219+
)
220+
adapter_mock.create_view.assert_has_calls(
221+
[
222+
call(
223+
"test_schema__test_env.test_model",
224+
parse_one(
225+
f"SELECT * FROM sqlmesh__test_schema.test_schema__test_model__{snapshot.fingerprint.to_version()}__temp"
226+
),
227+
),
228+
call(
229+
"test_schema__test_env.test_model",
230+
parse_one(
231+
"SELECT * FROM sqlmesh__test_schema.test_schema__test_model__test_version"
232+
),
233+
),
234+
]
235+
)
236+
237+
195238
def test_cleanup(mocker: MockerFixture, adapter_mock, make_snapshot):
196239
evaluator = SnapshotEvaluator(adapter_mock)
197240

0 commit comments

Comments
 (0)