@@ -459,8 +459,6 @@ def _(update: SetSnapshotRefUpdate, base_metadata: TableMetadata, context: _Tabl
459
459
@_apply_table_update .register (RemoveSnapshotsUpdate )
460
460
def _ (update : RemoveSnapshotsUpdate , base_metadata : TableMetadata , context : _TableMetadataUpdateContext ) -> TableMetadata :
461
461
for remove_snapshot_id in update .snapshot_ids :
462
- if remove_snapshot_id == base_metadata .current_snapshot_id :
463
- raise ValueError (f"Can't remove current snapshot id { remove_snapshot_id } " )
464
462
if not any (s .snapshot_id == remove_snapshot_id for s in base_metadata .snapshots ):
465
463
raise ValueError (f"Snapshot with snapshot id { remove_snapshot_id } does not exist: { base_metadata .snapshots } " )
466
464
@@ -502,13 +500,11 @@ def _(update: RemoveSnapshotRefUpdate, base_metadata: TableMetadata, context: _T
502
500
if base_metadata .snapshot_by_id (existing_ref .snapshot_id ) is None :
503
501
raise ValueError (f"Cannot remove { update .ref_name } ref with unknown snapshot { existing_ref .snapshot_id } " )
504
502
505
- if update .ref_name == MAIN_BRANCH :
506
- raise ValueError ("Cannot remove main branch" )
503
+ current_snapshot_id = None if update .ref_name == MAIN_BRANCH else base_metadata .current_snapshot_id
507
504
508
- metadata_refs = {** base_metadata .refs }
509
- metadata_refs .pop (update .ref_name , None )
505
+ metadata_refs = {ref_name : ref for ref_name , ref in base_metadata .refs .items () if ref_name != update .ref_name }
510
506
context .add_update (update )
511
- return base_metadata .model_copy (update = {"refs" : metadata_refs })
507
+ return base_metadata .model_copy (update = {"refs" : metadata_refs , "current_snapshot_id" : current_snapshot_id })
512
508
513
509
514
510
@_apply_table_update .register (AddSortOrderUpdate )
0 commit comments