File tree Expand file tree Collapse file tree 23 files changed +205
-28
lines changed
decimal-byte-parts/src/decimal_byte_parts
vortex-python/src/arrays/py Expand file tree Collapse file tree 23 files changed +205
-28
lines changed Original file line number Diff line number Diff line change @@ -432,7 +432,7 @@ impl ALPArray {
432432}
433433
434434impl ValidityChild < ALPVTable > for ALPVTable {
435- fn validity_child ( array : & ALPArray ) -> & dyn Array {
435+ fn validity_child ( array : & ALPArray ) -> & ArrayRef {
436436 array. encoded ( )
437437 }
438438}
Original file line number Diff line number Diff line change @@ -368,7 +368,7 @@ impl ALPRDArray {
368368}
369369
370370impl ValidityChild < ALPRDVTable > for ALPRDVTable {
371- fn validity_child ( array : & ALPRDArray ) -> & dyn Array {
371+ fn validity_child ( array : & ALPRDArray ) -> & ArrayRef {
372372 array. left_parts ( )
373373 }
374374}
Original file line number Diff line number Diff line change @@ -278,7 +278,7 @@ impl BaseArrayVTable<DateTimePartsVTable> for DateTimePartsVTable {
278278}
279279
280280impl ValidityChild < DateTimePartsVTable > for DateTimePartsVTable {
281- fn validity_child ( array : & DateTimePartsArray ) -> & dyn Array {
281+ fn validity_child ( array : & DateTimePartsArray ) -> & ArrayRef {
282282 array. days ( )
283283 }
284284}
Original file line number Diff line number Diff line change @@ -269,9 +269,9 @@ impl OperationsVTable<DecimalBytePartsVTable> for DecimalBytePartsVTable {
269269}
270270
271271impl ValidityChild < DecimalBytePartsVTable > for DecimalBytePartsVTable {
272- fn validity_child ( array : & DecimalBytePartsArray ) -> & dyn Array {
272+ fn validity_child ( array : & DecimalBytePartsArray ) -> & ArrayRef {
273273 // validity stored in 0th child
274- array. msp . as_ref ( )
274+ & array. msp
275275 }
276276}
277277
Original file line number Diff line number Diff line change 11// SPDX-License-Identifier: Apache-2.0
22// SPDX-FileCopyrightText: Copyright the Vortex contributors
33
4- use vortex_array:: Array ;
4+ use vortex_array:: ArrayRef ;
55use vortex_array:: vtable:: ValidityChild ;
66
77use super :: FoRVTable ;
88use crate :: FoRArray ;
99
1010impl ValidityChild < FoRVTable > for FoRVTable {
11- fn validity_child ( array : & FoRArray ) -> & dyn Array {
12- array. encoded ( ) . as_ref ( )
11+ fn validity_child ( array : & FoRArray ) -> & ArrayRef {
12+ array. encoded ( )
1313 }
1414}
Original file line number Diff line number Diff line change 11// SPDX-License-Identifier: Apache-2.0
22// SPDX-FileCopyrightText: Copyright the Vortex contributors
33
4- use vortex_array:: Array ;
54use vortex_array:: ArrayRef ;
65use vortex_array:: vtable:: ValidityChild ;
76use vortex_array:: vtable:: ValidityChildSliceHelper ;
@@ -10,8 +9,8 @@ use super::RLEVTable;
109use crate :: RLEArray ;
1110
1211impl ValidityChild < RLEVTable > for RLEVTable {
13- fn validity_child ( array : & RLEArray ) -> & dyn Array {
14- array. indices ( ) . as_ref ( )
12+ fn validity_child ( array : & RLEArray ) -> & ArrayRef {
13+ array. indices ( )
1514 }
1615}
1716
Original file line number Diff line number Diff line change @@ -198,6 +198,8 @@ pub struct FSSTArray {
198198 symbols : Buffer < Symbol > ,
199199 symbol_lengths : Buffer < u8 > ,
200200 codes : VarBinArray ,
201+ /// NOTE(ngates): this === codes, but is stored as an ArrayRef so we can return &ArrayRef!
202+ codes_array : ArrayRef ,
201203 /// Lengths of the original values before compression, can be compressed.
202204 uncompressed_lengths : ArrayRef ,
203205 stats_set : ArrayStats ,
@@ -283,12 +285,14 @@ impl FSSTArray {
283285 Compressor :: rebuild_from ( symbols2. as_slice ( ) , symbol_lengths2. as_slice ( ) )
284286 } )
285287 as Box < dyn Fn ( ) -> Compressor + Send > ) ) ;
288+ let codes_array = codes. to_array ( ) ;
286289
287290 Self {
288291 dtype,
289292 symbols,
290293 symbol_lengths,
291294 codes,
295+ codes_array,
292296 uncompressed_lengths,
293297 stats_set : Default :: default ( ) ,
294298 compressor,
@@ -379,8 +383,8 @@ impl BaseArrayVTable<FSSTVTable> for FSSTVTable {
379383}
380384
381385impl ValidityChild < FSSTVTable > for FSSTVTable {
382- fn validity_child ( array : & FSSTArray ) -> & dyn Array {
383- array. codes ( ) . as_ref ( )
386+ fn validity_child ( array : & FSSTArray ) -> & ArrayRef {
387+ & array. codes_array
384388 }
385389}
386390
Original file line number Diff line number Diff line change @@ -21,6 +21,7 @@ use vortex_array::search_sorted::SearchSortedSide;
2121use vortex_array:: serde:: ArrayChildren ;
2222use vortex_array:: stats:: ArrayStats ;
2323use vortex_array:: stats:: StatsSetRef ;
24+ use vortex_array:: validity:: Validity ;
2425use vortex_array:: vtable;
2526use vortex_array:: vtable:: ArrayId ;
2627use vortex_array:: vtable:: ArrayVTable ;
@@ -427,6 +428,22 @@ impl ValidityVTable<RunEndVTable> for RunEndVTable {
427428 array. values ( ) . all_invalid ( )
428429 }
429430
431+ fn validity ( array : & RunEndArray ) -> VortexResult < Validity > {
432+ Ok ( match array. values ( ) . validity ( ) ? {
433+ Validity :: NonNullable | Validity :: AllValid => Validity :: AllValid ,
434+ Validity :: AllInvalid => Validity :: AllInvalid ,
435+ Validity :: Array ( values_validity) => Validity :: Array ( unsafe {
436+ RunEndArray :: new_unchecked (
437+ array. ends ( ) . clone ( ) ,
438+ values_validity,
439+ array. offset ( ) ,
440+ array. len ( ) ,
441+ )
442+ . into_array ( )
443+ } ) ,
444+ } )
445+ }
446+
430447 fn validity_mask ( array : & RunEndArray ) -> Mask {
431448 match array. values ( ) . validity_mask ( ) {
432449 Mask :: AllTrue ( _) => Mask :: AllTrue ( array. len ( ) ) ,
Original file line number Diff line number Diff line change @@ -19,6 +19,7 @@ use vortex_array::arrays::PrimitiveArray;
1919use vortex_array:: serde:: ArrayChildren ;
2020use vortex_array:: stats:: ArrayStats ;
2121use vortex_array:: stats:: StatsSetRef ;
22+ use vortex_array:: validity:: Validity ;
2223use vortex_array:: vtable;
2324use vortex_array:: vtable:: ArrayId ;
2425use vortex_array:: vtable:: ArrayVTable ;
@@ -413,6 +414,10 @@ impl ValidityVTable<SequenceVTable> for SequenceVTable {
413414 false
414415 }
415416
417+ fn validity ( _array : & SequenceArray ) -> VortexResult < Validity > {
418+ Ok ( Validity :: AllValid )
419+ }
420+
416421 fn validity_mask ( array : & SequenceArray ) -> Mask {
417422 Mask :: AllTrue ( array. len ( ) )
418423 }
Original file line number Diff line number Diff line change @@ -29,6 +29,7 @@ use vortex_array::patches::PatchesMetadata;
2929use vortex_array:: serde:: ArrayChildren ;
3030use vortex_array:: stats:: ArrayStats ;
3131use vortex_array:: stats:: StatsSetRef ;
32+ use vortex_array:: validity:: Validity ;
3233use vortex_array:: vtable;
3334use vortex_array:: vtable:: ArrayId ;
3435use vortex_array:: vtable:: ArrayVTable ;
@@ -410,6 +411,14 @@ impl ValidityVTable<SparseVTable> for SparseVTable {
410411 array. patches ( ) . values ( ) . all_invalid ( )
411412 }
412413
414+ fn validity ( array : & SparseArray ) -> VortexResult < Validity > {
415+ // TODO(ngates): should this be able to execute arrays?
416+ Ok ( Validity :: from_mask (
417+ Self :: validity_mask ( array) ,
418+ Nullability :: Nullable ,
419+ ) )
420+ }
421+
413422 fn validity_mask ( array : & SparseArray ) -> Mask {
414423 let fill_is_valid = array. fill_scalar ( ) . is_valid ( ) ;
415424 let values_validity = array. patches ( ) . values ( ) . validity_mask ( ) ;
You can’t perform that action at this time.
0 commit comments