Skip to content

Commit 6552d09

Browse files
committed
Create TestListLikeArray instead of updating ListLikeArray
1 parent bfc576e commit 6552d09

File tree

2 files changed

+32
-48
lines changed

2 files changed

+32
-48
lines changed

parquet-variant-compute/src/arrow_to_variant.rs

Lines changed: 1 addition & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -553,42 +553,20 @@ impl<'a, L: ListLikeArray> ListArrowToVariantBuilder<'a, L> {
553553
}
554554
}
555555

556-
/// Trait for list-like arrays that can provide common helpers
556+
/// Trait for list-like arrays that can provide element ranges
557557
pub(crate) trait ListLikeArray: Array {
558-
type OffsetSize: OffsetSizeTrait;
559-
560558
/// Get the values array
561559
fn values(&self) -> &ArrayRef;
562560

563-
/// Get the offsets backing the list values
564-
#[cfg(test)]
565-
fn value_offsets(&self) -> Option<&[Self::OffsetSize]>;
566-
567-
/// Size (number of values) for the element at `index`
568-
#[cfg(test)]
569-
fn value_size(&self, index: usize) -> Self::OffsetSize;
570-
571561
/// Get the start and end indices for a list element
572562
fn element_range(&self, index: usize) -> Range<usize>;
573563
}
574564

575565
impl<O: OffsetSizeTrait> ListLikeArray for GenericListArray<O> {
576-
type OffsetSize = O;
577-
578566
fn values(&self) -> &ArrayRef {
579567
self.values()
580568
}
581569

582-
#[cfg(test)]
583-
fn value_offsets(&self) -> Option<&[Self::OffsetSize]> {
584-
Some(GenericListArray::value_offsets(self))
585-
}
586-
587-
#[cfg(test)]
588-
fn value_size(&self, index: usize) -> Self::OffsetSize {
589-
GenericListArray::value_length(self, index)
590-
}
591-
592570
fn element_range(&self, index: usize) -> Range<usize> {
593571
let offsets = self.offsets();
594572
let start = offsets[index].as_usize();
@@ -598,22 +576,10 @@ impl<O: OffsetSizeTrait> ListLikeArray for GenericListArray<O> {
598576
}
599577

600578
impl<O: OffsetSizeTrait> ListLikeArray for GenericListViewArray<O> {
601-
type OffsetSize = O;
602-
603579
fn values(&self) -> &ArrayRef {
604580
self.values()
605581
}
606582

607-
#[cfg(test)]
608-
fn value_offsets(&self) -> Option<&[Self::OffsetSize]> {
609-
Some(GenericListViewArray::value_offsets(self))
610-
}
611-
612-
#[cfg(test)]
613-
fn value_size(&self, index: usize) -> Self::OffsetSize {
614-
GenericListViewArray::value_size(self, index)
615-
}
616-
617583
fn element_range(&self, index: usize) -> Range<usize> {
618584
let offsets = self.value_offsets();
619585
let sizes = self.value_sizes();
@@ -624,22 +590,10 @@ impl<O: OffsetSizeTrait> ListLikeArray for GenericListViewArray<O> {
624590
}
625591

626592
impl ListLikeArray for FixedSizeListArray {
627-
type OffsetSize = i32;
628-
629593
fn values(&self) -> &ArrayRef {
630594
self.values()
631595
}
632596

633-
#[cfg(test)]
634-
fn value_offsets(&self) -> Option<&[Self::OffsetSize]> {
635-
None
636-
}
637-
638-
#[cfg(test)]
639-
fn value_size(&self, _index: usize) -> Self::OffsetSize {
640-
self.value_length()
641-
}
642-
643597
fn element_range(&self, index: usize) -> Range<usize> {
644598
let value_length = self.value_length().as_usize();
645599
let offset = index * value_length;

parquet-variant-compute/src/shred_variant.rs

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -928,9 +928,39 @@ mod tests {
928928
builder.build()
929929
}
930930

931+
trait TestListLikeArray: ListLikeArray {
932+
type OffsetSize: OffsetSizeTrait;
933+
fn value_offsets(&self) -> Option<&[Self::OffsetSize]>;
934+
fn value_size(&self, index: usize) -> Self::OffsetSize;
935+
}
936+
937+
impl<O: OffsetSizeTrait> TestListLikeArray for GenericListArray<O> {
938+
type OffsetSize = O;
939+
940+
fn value_offsets(&self) -> Option<&[Self::OffsetSize]> {
941+
Some(GenericListArray::value_offsets(self))
942+
}
943+
944+
fn value_size(&self, index: usize) -> Self::OffsetSize {
945+
GenericListArray::value_length(self, index)
946+
}
947+
}
948+
949+
impl<O: OffsetSizeTrait> TestListLikeArray for GenericListViewArray<O> {
950+
type OffsetSize = O;
951+
952+
fn value_offsets(&self) -> Option<&[Self::OffsetSize]> {
953+
Some(GenericListViewArray::value_offsets(self))
954+
}
955+
956+
fn value_size(&self, index: usize) -> Self::OffsetSize {
957+
GenericListViewArray::value_size(self, index)
958+
}
959+
}
960+
931961
fn downcast_list_like_array<O: OffsetSizeTrait>(
932962
array: &VariantArray,
933-
) -> &dyn ListLikeArray<OffsetSize = O> {
963+
) -> &dyn TestListLikeArray<OffsetSize = O> {
934964
let typed_value = array.typed_value_field().unwrap();
935965
if let Some(list) = typed_value.as_any().downcast_ref::<GenericListArray<O>>() {
936966
list

0 commit comments

Comments
 (0)