@@ -459,8 +459,6 @@ def _(update: SetSnapshotRefUpdate, base_metadata: TableMetadata, context: _Tabl
459459@_apply_table_update .register (RemoveSnapshotsUpdate )
460460def _ (update : RemoveSnapshotsUpdate , base_metadata : TableMetadata , context : _TableMetadataUpdateContext ) -> TableMetadata :
461461 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 } " )
464462 if not any (s .snapshot_id == remove_snapshot_id for s in base_metadata .snapshots ):
465463 raise ValueError (f"Snapshot with snapshot id { remove_snapshot_id } does not exist: { base_metadata .snapshots } " )
466464
@@ -502,13 +500,11 @@ def _(update: RemoveSnapshotRefUpdate, base_metadata: TableMetadata, context: _T
502500 if base_metadata .snapshot_by_id (existing_ref .snapshot_id ) is None :
503501 raise ValueError (f"Cannot remove { update .ref_name } ref with unknown snapshot { existing_ref .snapshot_id } " )
504502
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
507504
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 }
510506 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 })
512508
513509
514510@_apply_table_update .register (AddSortOrderUpdate )
0 commit comments