Skip to content

Commit 94b048d

Browse files
author
umi
committed
fix
1 parent 3176aa6 commit 94b048d

1 file changed

Lines changed: 26 additions & 11 deletions

File tree

crates/paimon/src/arrow/format/parquet.rs

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1168,33 +1168,48 @@ mod tests {
11681168
#[test]
11691169
fn test_split_unaligned_start_6_to_22mb() {
11701170
// 6MB..22MB, concurrency=4:
1171-
// raw_size = max(4MB, 4MB+1) = 4MB+1
1172-
// expected_size = ceil((4MB+1)/4MB)*4MB = 8MB
1173-
// min_tail_size = 8MB
1174-
// Head: 6..8MB. Loop: 8+8=16 ≤ 22 → 8..16; 16+8=24 > 22 → tail 16..22.
1175-
// Result: [6..8, 8..16, 16..22]
1171+
// raw_size = max(4MB, ceil(16MB/4)) = 4MB
1172+
// expected_size = ceil(4MB/4MB)*4MB = 4MB
1173+
// min_tail_size = max(4MB, 8MB) = 8MB
1174+
// Head: 6..8MB (misalign=2MB).
1175+
// Loop: 22-8=14≥8 → 8..12; 22-12=10≥8 → 12..16; 22-16=6<8 → tail 16..22.
1176+
// Result: [6..8, 8..12, 12..16, 16..22]
11761177
let mb = 1024 * 1024u64;
11771178
#[allow(clippy::single_range_in_vec_init)]
11781179
let merged = vec![6 * mb..22 * mb];
11791180
let result = super::split_ranges_for_concurrency(merged, 4);
11801181
assert_eq!(
11811182
result,
1182-
vec![6 * mb..8 * mb, 8 * mb..16 * mb, 16 * mb..22 * mb]
1183+
vec![
1184+
6 * mb..8 * mb,
1185+
8 * mb..12 * mb,
1186+
12 * mb..16 * mb,
1187+
16 * mb..22 * mb,
1188+
]
11831189
);
11841190
}
11851191

11861192
#[test]
11871193
fn test_split_already_aligned_8_to_24mb() {
11881194
// 8MB..24MB, concurrency=4:
1189-
// raw_size = max(4MB, 4MB+1) = 4MB+1
1190-
// expected_size = 8MB, min_tail_size = 8MB
1191-
// No misalign. Loop: 8+8=16 ≤ 24 → 8..16; 16+8=24 ≤ 24 → 16..24; offset=24 >= end → break.
1192-
// Result: [8..16, 16..24]
1195+
// raw_size = max(4MB, ceil(16MB/4)) = 4MB
1196+
// expected_size = 4MB, min_tail_size = 8MB
1197+
// No misalign.
1198+
// Loop: 24-8=16≥8 → 8..12; 24-12=12≥8 → 12..16; 24-16=8≥8 → 16..20; 24-20=4<8 → tail 20..24.
1199+
// Result: [8..12, 12..16, 16..20, 20..24]
11931200
let mb = 1024 * 1024u64;
11941201
#[allow(clippy::single_range_in_vec_init)]
11951202
let merged = vec![8 * mb..24 * mb];
11961203
let result = super::split_ranges_for_concurrency(merged, 4);
1197-
assert_eq!(result, vec![8 * mb..16 * mb, 16 * mb..24 * mb]);
1204+
assert_eq!(
1205+
result,
1206+
vec![
1207+
8 * mb..12 * mb,
1208+
12 * mb..16 * mb,
1209+
16 * mb..20 * mb,
1210+
20 * mb..24 * mb,
1211+
]
1212+
);
11981213
}
11991214

12001215
#[test]

0 commit comments

Comments
 (0)