in crates/core/src/file_group/file_slice.rs [135:190]
fn test_file_slices_merge() -> Result<()> {
let base = BaseFile::from_str(
"54e9a5e9-ee5d-4ed2-acee-720b5810d380-0_0-7-24_20250109233025121.parquet",
)?;
let mut log_set1 = BTreeSet::new();
log_set1.insert(LogFile::from_str(
".54e9a5e9-ee5d-4ed2-acee-720b5810d380-0_20250109233025121.log.4_0-51-115",
)?);
log_set1.insert(LogFile::from_str(
".54e9a5e9-ee5d-4ed2-acee-720b5810d380-0_20250109233025121.log.2_0-51-115",
)?);
let mut log_set2 = BTreeSet::new();
log_set2.insert(LogFile::from_str(
".54e9a5e9-ee5d-4ed2-acee-720b5810d380-0_20250109233025121.log.3_0-51-115",
)?);
log_set2.insert(LogFile::from_str(
".54e9a5e9-ee5d-4ed2-acee-720b5810d380-0_20250109233025121.log.1_0-51-115",
)?);
log_set1.insert(LogFile::from_str(
".54e9a5e9-ee5d-4ed2-acee-720b5810d380-0_20250109233025121.log.2_0-51-115",
)?);
let mut slice1 = FileSlice {
base_file: base.clone(),
log_files: log_set1,
partition_path: EMPTY_PARTITION_PATH.to_string(),
};
let slice2 = FileSlice {
base_file: base,
log_files: log_set2,
partition_path: EMPTY_PARTITION_PATH.to_string(),
};
slice1.merge(&slice2)?;
// Verify merged result
assert_eq!(slice1.log_files.len(), 4);
let log_file_names = slice1
.log_files
.iter()
.map(|log| log.file_name())
.collect::<Vec<String>>();
assert_eq!(
log_file_names.as_slice(),
&[
".54e9a5e9-ee5d-4ed2-acee-720b5810d380-0_20250109233025121.log.1_0-51-115",
".54e9a5e9-ee5d-4ed2-acee-720b5810d380-0_20250109233025121.log.2_0-51-115",
".54e9a5e9-ee5d-4ed2-acee-720b5810d380-0_20250109233025121.log.3_0-51-115",
".54e9a5e9-ee5d-4ed2-acee-720b5810d380-0_20250109233025121.log.4_0-51-115",
]
);
Ok(())
}