Notify the engine that compaction completed. Remaps PK index entries and removes old delete bitmaps.
(
&mut self,
old_segment_ids: &[u64],
new_segment_id: u64,
row_mapping: &HashMap<(u64, u32), u32>,
)
| 58 | /// |
| 59 | /// Remaps PK index entries and removes old delete bitmaps. |
| 60 | pub fn on_compaction_complete( |
| 61 | &mut self, |
| 62 | old_segment_ids: &[u64], |
| 63 | new_segment_id: u64, |
| 64 | row_mapping: &HashMap<(u64, u32), u32>, |
| 65 | ) -> MutationResult { |
| 66 | // Remap PK index for each old segment. |
| 67 | for &old_seg in old_segment_ids { |
| 68 | self.pk_index.remap_segment(old_seg, |old_row| { |
| 69 | row_mapping |
| 70 | .get(&(old_seg, old_row)) |
| 71 | .map(|&new_row| RowLocation { |
| 72 | segment_id: new_segment_id, |
| 73 | row_index: new_row, |
| 74 | }) |
| 75 | }); |
| 76 | |
| 77 | // Remove old delete bitmap. |
| 78 | self.delete_bitmaps.remove(&old_seg); |
| 79 | } |
| 80 | |
| 81 | let wal = ColumnarWalRecord::CompactionCommit { |
| 82 | collection: self.collection.clone(), |
| 83 | old_segment_ids: old_segment_ids.to_vec(), |
| 84 | new_segment_ids: vec![new_segment_id], |
| 85 | }; |
| 86 | |
| 87 | MutationResult { |
| 88 | wal_records: vec![wal], |
| 89 | } |
| 90 | } |
| 91 | } |
nothing calls this directly
no test coverage detected