Skip to content

Commit dd9885d

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

File tree

2 files changed

+44
-63
lines changed

2 files changed

+44
-63
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: 43 additions & 16 deletions
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
@@ -2456,21 +2486,18 @@ mod tests {
24562486

24572487
#[test]
24582488
fn test_variant_schema_builder_with_shred_variant() {
2459-
let mut builder = VariantArrayBuilder::new(3);
2460-
builder
2461-
.new_object()
2462-
.with_field("time", 1234567890i64)
2463-
.with_field("hostname", "server1")
2464-
.with_field("extra", 42)
2465-
.finish();
2466-
builder
2467-
.new_object()
2468-
.with_field("time", 9876543210i64)
2469-
.with_field("hostname", "server2")
2470-
.finish();
2471-
builder.append_null();
2472-
2473-
let input = builder.build();
2489+
let input = build_variant_array(vec![
2490+
VariantRow::Object(vec![
2491+
("time", VariantValue::from(1234567890i64)),
2492+
("hostname", VariantValue::from("server1")),
2493+
("extra", VariantValue::from(42)),
2494+
]),
2495+
VariantRow::Object(vec![
2496+
("time", VariantValue::from(9876543210i64)),
2497+
("hostname", VariantValue::from("server2")),
2498+
]),
2499+
VariantRow::Null,
2500+
]);
24742501

24752502
let shredding_type = ShreddedSchemaBuilder::default()
24762503
.with_path("time", &DataType::Int64)

0 commit comments

Comments
 (0)