Skip to content

Commit c7481fe

Browse files
committed
Remove entries from snapshot log
1 parent d515e74 commit c7481fe

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

pyiceberg/table/update/__init__.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,11 @@ def _(update: RemoveSnapshotsUpdate, base_metadata: TableMetadata, context: _Tab
469469
for s in base_metadata.snapshots
470470
if s.snapshot_id not in update.snapshot_ids
471471
]
472+
snapshot_log = [
473+
snapshot_log_entry
474+
for snapshot_log_entry in base_metadata.snapshot_log
475+
if snapshot_log_entry.snapshot_id not in update.snapshot_ids
476+
]
472477

473478
remove_ref_updates = (
474479
RemoveSnapshotRefUpdate(ref_name=ref_name)
@@ -486,7 +491,7 @@ def _(update: RemoveSnapshotsUpdate, base_metadata: TableMetadata, context: _Tab
486491
new_metadata = _apply_table_update(upd, new_metadata, context)
487492

488493
context.add_update(update)
489-
return new_metadata.model_copy(update={"snapshots": snapshots})
494+
return new_metadata.model_copy(update={"snapshots": snapshots, "snapshot_log": snapshot_log})
490495

491496

492497
@_apply_table_update.register(RemoveSnapshotRefUpdate)

tests/table/test_init.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -797,6 +797,7 @@ def test_update_metadata_set_snapshot_ref(table_v2: Table) -> None:
797797
def test_update_remove_snapshots(table_v2: Table) -> None:
798798
# assert fixture data to easily understand the test assumptions
799799
assert len(table_v2.metadata.snapshots) == 2
800+
assert len(table_v2.metadata.snapshot_log) == 2
800801
assert len(table_v2.metadata.refs) == 2
801802
update = RemoveSnapshotsUpdate(snapshot_ids=[3051729675574597004])
802803
new_metadata = update_table_metadata(table_v2.metadata, (update,))
@@ -805,6 +806,8 @@ def test_update_remove_snapshots(table_v2: Table) -> None:
805806
assert new_metadata.snapshots[0].parent_snapshot_id is None
806807
assert new_metadata.current_snapshot_id == 3055729675574597004
807808
assert new_metadata.last_updated_ms > table_v2.metadata.last_updated_ms
809+
assert len(new_metadata.snapshot_log) == 1
810+
assert new_metadata.snapshot_log[0].snapshot_id == 3055729675574597004
808811
assert len(new_metadata.refs) == 1
809812
assert new_metadata.refs["main"].snapshot_id == 3055729675574597004
810813

0 commit comments

Comments
 (0)