Skip to content

Commit 3ee59f9

Browse files
authored
Fix: Set updated_at when updating a snapshot record in state (#1526)
1 parent 07b2076 commit 3ee59f9

File tree

3 files changed

+13
-0
lines changed

3 files changed

+13
-0
lines changed

sqlmesh/core/state_sync/common.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,11 +145,17 @@ def promote(self, environment: Environment, no_gaps: bool = False) -> PromotionR
145145
table_infos -= set(existing_environment.promoted_snapshots)
146146

147147
self._update_environment(environment)
148+
148149
removed = (
149150
list(existing_table_infos.values())
150151
if environment_suffix_target_changed
151152
else [existing_table_infos[name] for name in missing_models]
152153
)
154+
if removed and not environment_suffix_target_changed:
155+
for removed_snapshot in self._get_snapshots(removed).values():
156+
# Update the updated_at attribute.
157+
self._update_snapshot(removed_snapshot)
158+
153159
return PromotionResult(
154160
added=sorted(table_infos),
155161
removed=removed,

sqlmesh/core/state_sync/engine_adapter.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,7 @@ def _update_environment(self, environment: Environment) -> None:
303303
)
304304

305305
def _update_snapshot(self, snapshot: Snapshot) -> None:
306+
snapshot.updated_ts = now_timestamp()
306307
self.engine_adapter.update_table(
307308
self.snapshots_table,
308309
{"snapshot": snapshot.json()},

tests/core/test_state_sync.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,8 @@ def test_promote_snapshots(state_sync: EngineAdapterStateSync, make_snapshot: t.
437437
assert not promotion_result.removed
438438
assert not promotion_result.removed_environment_naming_info
439439

440+
prev_snapshot_c_updated_ts = snapshot_c.updated_ts
441+
440442
promotion_result = promote_snapshots(
441443
state_sync,
442444
[snapshot_a, snapshot_b],
@@ -446,6 +448,10 @@ def test_promote_snapshots(state_sync: EngineAdapterStateSync, make_snapshot: t.
446448
assert set(promotion_result.removed) == {snapshot_c.table_info}
447449
assert promotion_result.removed_environment_naming_info
448450
assert promotion_result.removed_environment_naming_info.suffix_target.is_schema
451+
assert (
452+
state_sync.get_snapshots([snapshot_c])[snapshot_c.snapshot_id].updated_ts
453+
> prev_snapshot_c_updated_ts
454+
)
449455

450456
snapshot_d = make_snapshot(
451457
SqlModel(

0 commit comments

Comments
 (0)