()
| 265 | |
| 266 | #[test] |
| 267 | fn remap_segment() { |
| 268 | let mut idx = PkIndex::new(); |
| 269 | let pks: Vec<Vec<u8>> = (0..5).map(|i| encode_pk(&Value::Integer(i))).collect(); |
| 270 | idx.bulk_insert(0, &pks).expect("bulk insert"); |
| 271 | |
| 272 | // Remap segment 0 → segment 1, shifting row indices by +10. |
| 273 | // Remove row 2 (deleted during compaction). |
| 274 | idx.remap_segment(0, |old_row| { |
| 275 | if old_row == 2 { |
| 276 | None // Deleted. |
| 277 | } else { |
| 278 | Some(RowLocation { |
| 279 | segment_id: 1, |
| 280 | row_index: old_row + 10, |
| 281 | }) |
| 282 | } |
| 283 | }); |
| 284 | |
| 285 | assert_eq!(idx.len(), 4); // Row 2 was removed. |
| 286 | let loc = idx.get(&pks[0]).expect("row 0"); |
| 287 | assert_eq!(loc.segment_id, 1); |
| 288 | assert_eq!(loc.row_index, 10); |
| 289 | |
| 290 | assert!(idx.get(&pks[2]).is_none()); // Row 2 was deleted. |
| 291 | } |
| 292 | |
| 293 | #[test] |
| 294 | fn remove_segment() { |
nothing calls this directly
no test coverage detected