Skip to content

Commit 342ee5c

Browse files
committed
Minor tweak
1 parent dd9885d commit 342ee5c

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

parquet-variant-compute/src/shred_variant.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,7 @@ impl<'a> ArrayVariantToArrowRowBuilder<'a> {
327327
) -> Result<Self> {
328328
use ArrayVariantToArrowRowBuilder::*;
329329

330+
// Make List/ListView builders without repeating the constructor boilerplate.
330331
macro_rules! make_list_builder {
331332
($variant:ident, $offset:ty, $is_view:expr, $field:ident) => {
332333
$variant(VariantToListArrowRowBuilder::<$offset, $is_view>::try_new(
@@ -401,11 +402,12 @@ where
401402
cast_options: &'a CastOptions,
402403
capacity: usize,
403404
) -> Result<Self> {
404-
let mut offsets = Vec::with_capacity(capacity.checked_add(1).ok_or_else(|| {
405-
ArrowError::ComputeError(
406-
"Capacity exceeded usize::MAX when reserving list offsets".to_string(),
407-
)
408-
})?);
405+
if capacity >= isize::MAX as usize {
406+
return Err(ArrowError::ComputeError(
407+
"Capacity exceeds isize::MAX when reserving list offsets".to_string(),
408+
));
409+
}
410+
let mut offsets = Vec::with_capacity(capacity + 1);
409411
offsets.push(O::ZERO);
410412
let element_builder = make_variant_to_shredded_variant_arrow_row_builder(
411413
element_data_type,
@@ -449,7 +451,8 @@ where
449451
);
450452

451453
if IS_VIEW {
452-
let mut sizes = Vec::with_capacity(self.offsets.len().saturating_sub(1));
454+
// NOTE: `offsets` is never empty (constructor pushes an entry)
455+
let mut sizes = Vec::with_capacity(self.offsets.len() - 1);
453456
for i in 1..self.offsets.len() {
454457
sizes.push(self.offsets[i] - self.offsets[i - 1]);
455458
}

0 commit comments

Comments
 (0)