Skip to content

Commit 772b429

Browse files
committed
Fix: Start date for dev plans with enabled previews in which a new forward-only model has been added (#2762)
1 parent df42901 commit 772b429

File tree

2 files changed

+58
-1
lines changed

2 files changed

+58
-1
lines changed

sqlmesh/core/plan/builder.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -736,7 +736,7 @@ def _forward_only_preview_needed(self) -> bool:
736736
self._enable_preview
737737
and any(
738738
snapshot.model.forward_only
739-
for snapshot in self._context_diff.new_snapshots.values()
739+
for snapshot, _ in self._context_diff.modified_snapshots.values()
740740
if snapshot.is_model
741741
)
742742
)

tests/core/test_plan.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2310,3 +2310,60 @@ def test_metadata_change(make_snapshot, mocker: MockerFixture):
23102310
plan.snapshots[updated_snapshot.snapshot_id].change_category
23112311
== SnapshotChangeCategory.METADATA
23122312
)
2313+
2314+
2315+
def test_plan_start_when_preview_enabled(make_snapshot, mocker: MockerFixture):
2316+
model_start = "2024-01-01"
2317+
model = SqlModel(
2318+
name="a",
2319+
query=parse_one("select 1, ds"),
2320+
dialect="duckdb",
2321+
kind=dict(
2322+
name=ModelKindName.INCREMENTAL_BY_TIME_RANGE, time_column="ds", forward_only=True
2323+
),
2324+
start=model_start,
2325+
)
2326+
2327+
snapshot = make_snapshot(model)
2328+
context_diff = ContextDiff(
2329+
environment="test_environment",
2330+
is_new_environment=True,
2331+
is_unfinalized_environment=False,
2332+
create_from="prod",
2333+
added={snapshot.snapshot_id},
2334+
removed_snapshots={},
2335+
modified_snapshots={},
2336+
snapshots={
2337+
snapshot.snapshot_id: snapshot,
2338+
},
2339+
new_snapshots={snapshot.snapshot_id: snapshot},
2340+
previous_plan_id=None,
2341+
previously_promoted_snapshot_ids=set(),
2342+
previous_finalized_snapshots=None,
2343+
)
2344+
2345+
default_start_for_preview = "2024-06-09"
2346+
2347+
# When a model is added SQLMesh should not consider the backfill to be a preview.
2348+
plan_builder = PlanBuilder(
2349+
context_diff,
2350+
DuckDBEngineAdapter.SCHEMA_DIFFER,
2351+
default_start=default_start_for_preview,
2352+
is_dev=True,
2353+
enable_preview=True,
2354+
)
2355+
assert plan_builder.build().start == to_timestamp(model_start)
2356+
2357+
# When a model is modified then the backfill should be a preview.
2358+
snapshot = make_snapshot(model)
2359+
context_diff.added = set()
2360+
context_diff.modified_snapshots = {snapshot.name: (snapshot, snapshot)}
2361+
2362+
plan_builder = PlanBuilder(
2363+
context_diff,
2364+
DuckDBEngineAdapter.SCHEMA_DIFFER,
2365+
default_start=default_start_for_preview,
2366+
is_dev=True,
2367+
enable_preview=True,
2368+
)
2369+
assert plan_builder.build().start == default_start_for_preview

0 commit comments

Comments
 (0)