File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 33
44use crate :: ArrayBufferVisitor ;
55use crate :: ArrayChildVisitor ;
6+ use crate :: ArrayRef ;
67use crate :: arrays:: BoolArray ;
78use crate :: arrays:: BoolVTable ;
89use crate :: vtable:: VisitorVTable ;
10+ use crate :: vtable:: validity_nchildren;
11+ use crate :: vtable:: validity_to_child;
912
1013impl VisitorVTable < BoolVTable > for BoolVTable {
1114 fn visit_buffers ( array : & BoolArray , visitor : & mut dyn ArrayBufferVisitor ) {
@@ -15,4 +18,15 @@ impl VisitorVTable<BoolVTable> for BoolVTable {
1518 fn visit_children ( array : & BoolArray , visitor : & mut dyn ArrayChildVisitor ) {
1619 visitor. visit_validity ( & array. validity , array. len ( ) ) ;
1720 }
21+
22+ fn nchildren ( array : & BoolArray ) -> usize {
23+ validity_nchildren ( & array. validity )
24+ }
25+
26+ fn nth_child ( array : & BoolArray , idx : usize ) -> Option < ArrayRef > {
27+ match idx {
28+ 0 => validity_to_child ( & array. validity , array. len ( ) ) ,
29+ _ => None ,
30+ }
31+ }
1832}
Original file line number Diff line number Diff line change @@ -26,4 +26,15 @@ impl VisitorVTable<ChunkedVTable> for ChunkedVTable {
2626 visitor. visit_child ( chunk) ;
2727 }
2828 }
29+
30+ fn nchildren ( array : & ChunkedArray ) -> usize {
31+ 1 + array. chunks ( ) . len ( )
32+ }
33+
34+ fn nth_child ( array : & ChunkedArray , idx : usize ) -> Option < crate :: ArrayRef > {
35+ match idx {
36+ 0 => Some ( array. chunk_offsets . to_array ( ) ) ,
37+ n => array. chunks ( ) . get ( n - 1 ) . cloned ( ) ,
38+ }
39+ }
2940}
Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ use vortex_buffer::ByteBufferMut;
55
66use crate :: ArrayBufferVisitor ;
77use crate :: ArrayChildVisitor ;
8+ use crate :: ArrayRef ;
89use crate :: arrays:: ConstantArray ;
910use crate :: arrays:: ConstantVTable ;
1011use crate :: buffer:: BufferHandle ;
@@ -21,4 +22,12 @@ impl VisitorVTable<ConstantVTable> for ConstantVTable {
2122 }
2223
2324 fn visit_children ( _array : & ConstantArray , _visitor : & mut dyn ArrayChildVisitor ) { }
25+
26+ fn nchildren ( _array : & ConstantArray ) -> usize {
27+ 0
28+ }
29+
30+ fn nth_child ( _array : & ConstantArray , _idx : usize ) -> Option < ArrayRef > {
31+ None
32+ }
2433}
Original file line number Diff line number Diff line change 33
44use crate :: ArrayBufferVisitor ;
55use crate :: ArrayChildVisitor ;
6+ use crate :: ArrayRef ;
67use crate :: arrays:: DecimalArray ;
78use crate :: arrays:: DecimalVTable ;
89use crate :: vtable:: ValidityHelper ;
910use crate :: vtable:: VisitorVTable ;
11+ use crate :: vtable:: validity_nchildren;
12+ use crate :: vtable:: validity_to_child;
1013
1114impl VisitorVTable < DecimalVTable > for DecimalVTable {
1215 fn visit_buffers ( array : & DecimalArray , visitor : & mut dyn ArrayBufferVisitor ) {
@@ -16,4 +19,15 @@ impl VisitorVTable<DecimalVTable> for DecimalVTable {
1619 fn visit_children ( array : & DecimalArray , visitor : & mut dyn ArrayChildVisitor ) {
1720 visitor. visit_validity ( array. validity ( ) , array. len ( ) )
1821 }
22+
23+ fn nchildren ( array : & DecimalArray ) -> usize {
24+ validity_nchildren ( array. validity ( ) )
25+ }
26+
27+ fn nth_child ( array : & DecimalArray , idx : usize ) -> Option < ArrayRef > {
28+ match idx {
29+ 0 => validity_to_child ( array. validity ( ) , array. len ( ) ) ,
30+ _ => None ,
31+ }
32+ }
1933}
Original file line number Diff line number Diff line change 44use super :: DictVTable ;
55use crate :: ArrayBufferVisitor ;
66use crate :: ArrayChildVisitor ;
7+ use crate :: ArrayRef ;
78use crate :: arrays:: dict:: DictArray ;
89use crate :: vtable:: VisitorVTable ;
910
@@ -14,4 +15,16 @@ impl VisitorVTable<DictVTable> for DictVTable {
1415 visitor. visit_child ( "codes" , array. codes ( ) ) ;
1516 visitor. visit_child ( "values" , array. values ( ) ) ;
1617 }
18+
19+ fn nchildren ( _array : & DictArray ) -> usize {
20+ 2
21+ }
22+
23+ fn nth_child ( array : & DictArray , idx : usize ) -> Option < ArrayRef > {
24+ match idx {
25+ 0 => Some ( array. codes ( ) . clone ( ) ) ,
26+ 1 => Some ( array. values ( ) . clone ( ) ) ,
27+ _ => None ,
28+ }
29+ }
1730}
Original file line number Diff line number Diff line change 33
44use crate :: ArrayBufferVisitor ;
55use crate :: ArrayChildVisitor ;
6+ use crate :: ArrayRef ;
67use crate :: arrays:: extension:: ExtensionArray ;
78use crate :: arrays:: extension:: ExtensionVTable ;
89use crate :: vtable:: VisitorVTable ;
@@ -13,4 +14,15 @@ impl VisitorVTable<ExtensionVTable> for ExtensionVTable {
1314 fn visit_children ( array : & ExtensionArray , visitor : & mut dyn ArrayChildVisitor ) {
1415 visitor. visit_child ( "storage" , & array. storage ) ;
1516 }
17+
18+ fn nchildren ( _array : & ExtensionArray ) -> usize {
19+ 1
20+ }
21+
22+ fn nth_child ( array : & ExtensionArray , idx : usize ) -> Option < ArrayRef > {
23+ match idx {
24+ 0 => Some ( array. storage . clone ( ) ) ,
25+ _ => None ,
26+ }
27+ }
1628}
Original file line number Diff line number Diff line change @@ -176,6 +176,17 @@ impl VisitorVTable<FilterVTable> for FilterVTable {
176176 fn visit_children ( array : & FilterArray , visitor : & mut dyn ArrayChildVisitor ) {
177177 visitor. visit_child ( "child" , & array. child ) ;
178178 }
179+
180+ fn nchildren ( _array : & FilterArray ) -> usize {
181+ 1
182+ }
183+
184+ fn nth_child ( array : & FilterArray , idx : usize ) -> Option < ArrayRef > {
185+ match idx {
186+ 0 => Some ( array. child . clone ( ) ) ,
187+ _ => None ,
188+ }
189+ }
179190}
180191
181192pub struct FilterMetadata ( pub ( super ) Mask ) ;
Original file line number Diff line number Diff line change 33
44use crate :: ArrayBufferVisitor ;
55use crate :: ArrayChildVisitor ;
6+ use crate :: ArrayRef ;
67use crate :: arrays:: FixedSizeListArray ;
78use crate :: arrays:: FixedSizeListVTable ;
89use crate :: vtable:: ValidityHelper ;
910use crate :: vtable:: VisitorVTable ;
11+ use crate :: vtable:: validity_nchildren;
12+ use crate :: vtable:: validity_to_child;
1013
1114impl VisitorVTable < FixedSizeListVTable > for FixedSizeListVTable {
1215 fn visit_buffers ( _array : & FixedSizeListArray , _visitor : & mut dyn ArrayBufferVisitor ) {
@@ -18,4 +21,16 @@ impl VisitorVTable<FixedSizeListVTable> for FixedSizeListVTable {
1821 visitor. visit_child ( "elements" , array. elements ( ) ) ;
1922 visitor. visit_validity ( array. validity ( ) , array. len ( ) ) ;
2023 }
24+
25+ fn nchildren ( array : & FixedSizeListArray ) -> usize {
26+ 1 + validity_nchildren ( array. validity ( ) )
27+ }
28+
29+ fn nth_child ( array : & FixedSizeListArray , idx : usize ) -> Option < ArrayRef > {
30+ match idx {
31+ 0 => Some ( array. elements ( ) . clone ( ) ) ,
32+ 1 => validity_to_child ( array. validity ( ) , array. len ( ) ) ,
33+ _ => None ,
34+ }
35+ }
2136}
Original file line number Diff line number Diff line change 33
44use crate :: ArrayBufferVisitor ;
55use crate :: ArrayChildVisitor ;
6+ use crate :: ArrayRef ;
67use crate :: arrays:: ListArray ;
78use crate :: arrays:: ListVTable ;
89use crate :: vtable:: ValidityHelper ;
910use crate :: vtable:: VisitorVTable ;
11+ use crate :: vtable:: validity_nchildren;
12+ use crate :: vtable:: validity_to_child;
1013
1114impl VisitorVTable < ListVTable > for ListVTable {
1215 fn visit_buffers ( _array : & ListArray , _visitor : & mut dyn ArrayBufferVisitor ) { }
@@ -16,4 +19,17 @@ impl VisitorVTable<ListVTable> for ListVTable {
1619 visitor. visit_child ( "offsets" , array. offsets ( ) ) ;
1720 visitor. visit_validity ( array. validity ( ) , array. len ( ) ) ;
1821 }
22+
23+ fn nchildren ( array : & ListArray ) -> usize {
24+ 2 + validity_nchildren ( array. validity ( ) )
25+ }
26+
27+ fn nth_child ( array : & ListArray , idx : usize ) -> Option < ArrayRef > {
28+ match idx {
29+ 0 => Some ( array. elements ( ) . clone ( ) ) ,
30+ 1 => Some ( array. offsets ( ) . clone ( ) ) ,
31+ 2 => validity_to_child ( array. validity ( ) , array. len ( ) ) ,
32+ _ => None ,
33+ }
34+ }
1935}
Original file line number Diff line number Diff line change 33
44use crate :: ArrayBufferVisitor ;
55use crate :: ArrayChildVisitor ;
6+ use crate :: ArrayRef ;
67use crate :: arrays:: ListViewArray ;
78use crate :: arrays:: ListViewVTable ;
89use crate :: vtable:: ValidityHelper ;
910use crate :: vtable:: VisitorVTable ;
11+ use crate :: vtable:: validity_nchildren;
12+ use crate :: vtable:: validity_to_child;
1013
1114impl VisitorVTable < ListViewVTable > for ListViewVTable {
1215 fn visit_buffers ( _array : & ListViewArray , _visitor : & mut dyn ArrayBufferVisitor ) {
@@ -19,4 +22,18 @@ impl VisitorVTable<ListViewVTable> for ListViewVTable {
1922 visitor. visit_child ( "sizes" , array. sizes ( ) ) ;
2023 visitor. visit_validity ( array. validity ( ) , array. len ( ) ) ;
2124 }
25+
26+ fn nchildren ( array : & ListViewArray ) -> usize {
27+ 3 + validity_nchildren ( array. validity ( ) )
28+ }
29+
30+ fn nth_child ( array : & ListViewArray , idx : usize ) -> Option < ArrayRef > {
31+ match idx {
32+ 0 => Some ( array. elements ( ) . clone ( ) ) ,
33+ 1 => Some ( array. offsets ( ) . clone ( ) ) ,
34+ 2 => Some ( array. sizes ( ) . clone ( ) ) ,
35+ 3 => validity_to_child ( array. validity ( ) , array. len ( ) ) ,
36+ _ => None ,
37+ }
38+ }
2239}
You can’t perform that action at this time.
0 commit comments