|
79 | 79 | AssertTableUUID,
|
80 | 80 | RemovePropertiesUpdate,
|
81 | 81 | RemoveSnapshotRefUpdate,
|
| 82 | + RemoveSnapshotsUpdate, |
82 | 83 | RemoveStatisticsUpdate,
|
83 | 84 | SetDefaultSortOrderUpdate,
|
84 | 85 | SetPropertiesUpdate,
|
@@ -795,6 +796,42 @@ def test_update_metadata_set_snapshot_ref(table_v2: Table) -> None:
|
795 | 796 |
|
796 | 797 |
|
797 | 798 | def test_update_remove_snapshots(table_v2: Table) -> None:
|
| 799 | + REMOVE_SNAPSHOT = 3051729675574597004 |
| 800 | + KEEP_SNAPSHOT = 3055729675574597004 |
| 801 | + # assert fixture data to easily understand the test assumptions |
| 802 | + assert len(table_v2.metadata.snapshots) == 2 |
| 803 | + assert len(table_v2.metadata.snapshot_log) == 2 |
| 804 | + assert len(table_v2.metadata.refs) == 2 |
| 805 | + update = RemoveSnapshotsUpdate(snapshot_ids=[REMOVE_SNAPSHOT]) |
| 806 | + new_metadata = update_table_metadata(table_v2.metadata, (update,)) |
| 807 | + assert len(new_metadata.snapshots) == 1 |
| 808 | + assert new_metadata.snapshots[0].snapshot_id == KEEP_SNAPSHOT |
| 809 | + assert new_metadata.snapshots[0].parent_snapshot_id is None |
| 810 | + assert new_metadata.current_snapshot_id == KEEP_SNAPSHOT |
| 811 | + assert new_metadata.last_updated_ms > table_v2.metadata.last_updated_ms |
| 812 | + assert len(new_metadata.snapshot_log) == 1 |
| 813 | + assert new_metadata.snapshot_log[0].snapshot_id == KEEP_SNAPSHOT |
| 814 | + assert len(new_metadata.refs) == 1 |
| 815 | + assert new_metadata.refs["main"].snapshot_id == KEEP_SNAPSHOT |
| 816 | + |
| 817 | + |
| 818 | +def test_update_remove_snapshots_doesnt_exist(table_v2: Table) -> None: |
| 819 | + update = RemoveSnapshotsUpdate( |
| 820 | + snapshot_ids=[123], |
| 821 | + ) |
| 822 | + with pytest.raises(ValueError, match="Snapshot with snapshot id 123 does not exist"): |
| 823 | + update_table_metadata(table_v2.metadata, (update,)) |
| 824 | + |
| 825 | + |
| 826 | +def test_update_remove_snapshots_remove_current_snapshot_id(table_v2: Table) -> None: |
| 827 | + update = RemoveSnapshotsUpdate(snapshot_ids=[3055729675574597004]) |
| 828 | + new_metadata = update_table_metadata(table_v2.metadata, (update,)) |
| 829 | + assert len(new_metadata.refs) == 1 |
| 830 | + assert new_metadata.refs["test"].snapshot_id == 3051729675574597004 |
| 831 | + assert new_metadata.current_snapshot_id is None |
| 832 | + |
| 833 | + |
| 834 | +def test_update_remove_snapshot_ref(table_v2: Table) -> None: |
798 | 835 | # assert fixture data to easily understand the test assumptions
|
799 | 836 | assert len(table_v2.metadata.refs) == 2
|
800 | 837 | update = RemoveSnapshotRefUpdate(ref_name="test")
|
|
0 commit comments