@@ -3,13 +3,11 @@ use std::cmp::min;
33use itertools:: Itertools ;
44use num_traits:: { AsPrimitive , FromPrimitive } ;
55use vortex_array:: array:: PrimitiveArray ;
6- use vortex_array:: compute:: unary:: scalar_at;
7- use vortex_array:: stats:: { ArrayStatistics , Stat } ;
86use vortex_array:: validity:: Validity ;
97use vortex_array:: variants:: PrimitiveArrayTrait ;
108use vortex_array:: ArrayDType ;
119use vortex_dtype:: { match_each_integer_ptype, match_each_native_ptype, NativePType , Nullability } ;
12- use vortex_error:: { vortex_panic, VortexResult , VortexUnwrap as _ } ;
10+ use vortex_error:: { vortex_panic, VortexResult } ;
1311
1412pub fn runend_encode ( array : & PrimitiveArray ) -> ( PrimitiveArray , PrimitiveArray ) {
1513 let validity = if array. dtype ( ) . nullability ( ) == Nullability :: NonNullable {
@@ -23,48 +21,6 @@ pub fn runend_encode(array: &PrimitiveArray) -> (PrimitiveArray, PrimitiveArray)
2321 ( PrimitiveArray :: from_vec( ends, Validity :: NonNullable ) , PrimitiveArray :: from_vec( values, validity) )
2422 } ) ;
2523
26- // the values array stats are trivially derived
27- compressed_values
28- . statistics ( )
29- . set ( Stat :: RunCount , compressed_values. len ( ) . into ( ) ) ;
30- compressed_values
31- . statistics ( )
32- . set ( Stat :: IsConstant , ( compressed_values. len ( ) == 1 ) . into ( ) ) ;
33- if let Some ( min) = array. statistics ( ) . get ( Stat :: Min ) {
34- compressed_values. statistics ( ) . set ( Stat :: Min , min) ;
35- }
36- if let Some ( max) = array. statistics ( ) . get ( Stat :: Max ) {
37- compressed_values. statistics ( ) . set ( Stat :: Max , max) ;
38- }
39- if let Some ( is_sorted) = array. statistics ( ) . get ( Stat :: IsSorted ) {
40- compressed_values
41- . statistics ( )
42- . set ( Stat :: IsSorted , is_sorted) ;
43- }
44- if let Some ( is_strict_sorted) = array. statistics ( ) . get ( Stat :: IsStrictSorted ) {
45- compressed_values
46- . statistics ( )
47- . set ( Stat :: IsStrictSorted , is_strict_sorted) ;
48- }
49-
50- compressed_ends
51- . statistics ( )
52- . set ( Stat :: IsConstant , ( compressed_ends. len ( ) == 1 ) . into ( ) ) ;
53- compressed_ends
54- . statistics ( )
55- . set ( Stat :: IsSorted , true . into ( ) ) ;
56- compressed_ends
57- . statistics ( )
58- . set ( Stat :: IsStrictSorted , true . into ( ) ) ;
59- if !compressed_ends. is_empty ( ) {
60- compressed_ends
61- . statistics ( )
62- . set ( Stat :: Min , scalar_at ( & compressed_ends, 0 ) . vortex_unwrap ( ) ) ;
63- compressed_ends
64- . statistics ( )
65- . set ( Stat :: Max , ( array. len ( ) as u64 ) . into ( ) ) ;
66- }
67-
6824 assert_eq ! ( array. dtype( ) , compressed_values. dtype( ) ) ;
6925 ( compressed_ends, compressed_values)
7026}
0 commit comments