@@ -91,13 +91,14 @@ mod tests {
9191 use vortex_error:: VortexResult ;
9292
9393 use crate :: ArrayRef ;
94+ use crate :: ExecutionCtx ;
9495 use crate :: IntoArray ;
95- use crate :: LEGACY_SESSION ;
9696 use crate :: VortexSessionExecute ;
9797 use crate :: aggregate_fn:: DynGroupedAccumulator ;
9898 use crate :: aggregate_fn:: GroupedAccumulator ;
9999 use crate :: aggregate_fn:: NumericalAggregateOpts ;
100100 use crate :: aggregate_fn:: fns:: count:: Count ;
101+ use crate :: array_session;
101102 use crate :: arrays:: FixedSizeListArray ;
102103 use crate :: arrays:: ListViewArray ;
103104 use crate :: arrays:: PrimitiveArray ;
@@ -110,13 +111,17 @@ mod tests {
110111 use crate :: validity:: Validity ;
111112
112113 /// Run a grouped count through the accumulator.
113- fn grouped_count_actual ( groups : & ArrayRef , elem_dtype : & DType ) -> VortexResult < ArrayRef > {
114+ fn grouped_count_actual (
115+ groups : & ArrayRef ,
116+ elem_dtype : & DType ,
117+ ctx : & mut ExecutionCtx ,
118+ ) -> VortexResult < ArrayRef > {
114119 let mut acc = GroupedAccumulator :: try_new (
115120 Count ,
116121 NumericalAggregateOpts :: default ( ) ,
117122 elem_dtype. clone ( ) ,
118123 ) ?;
119- acc. accumulate_list ( groups, & mut LEGACY_SESSION . create_execution_ctx ( ) ) ?;
124+ acc. accumulate_list ( groups, ctx ) ?;
120125 acc. finish ( )
121126 }
122127
@@ -125,7 +130,7 @@ mod tests {
125130 elements : & ArrayRef ,
126131 ranges : & [ ( usize , usize ) ] ,
127132 ) -> VortexResult < ArrayRef > {
128- let mut ctx = LEGACY_SESSION . create_execution_ctx ( ) ;
133+ let mut ctx = array_session ( ) . create_execution_ctx ( ) ;
129134 let counts: Buffer < u64 > = ranges
130135 . iter ( )
131136 . map ( |& ( offset, size) | {
@@ -151,49 +156,46 @@ mod tests {
151156
152157 #[ test]
153158 fn listview_counts_all_valid ( ) -> VortexResult < ( ) > {
154- let assertion_session = crate :: array_session ( ) ;
155- let mut assertion_ctx = assertion_session. create_execution_ctx ( ) ;
159+ let mut ctx = array_session ( ) . create_execution_ctx ( ) ;
156160 let elements =
157161 PrimitiveArray :: new ( buffer ! [ 1i32 , 2 , 3 , 4 , 5 , 6 ] , Validity :: NonNullable ) . into_array ( ) ;
158162 let elem_dtype = DType :: Primitive ( PType :: I32 , NonNullable ) ;
159163 let ranges = [ ( 0 , 2 ) , ( 2 , 1 ) , ( 3 , 3 ) , ( 6 , 0 ) ] ;
160164
161165 let groups = listview ( elements. clone ( ) , & ranges) ?;
162- let actual = grouped_count_actual ( & groups, & elem_dtype) ?;
166+ let actual = grouped_count_actual ( & groups, & elem_dtype, & mut ctx ) ?;
163167 let expected = grouped_count_reference ( & elements, & ranges) ?;
164168
165169 let direct =
166170 PrimitiveArray :: new ( buffer ! [ 2u64 , 1 , 3 , 0 ] , Validity :: NonNullable ) . into_array ( ) ;
167- assert_arrays_eq ! ( & actual, & direct, & mut assertion_ctx ) ;
168- assert_arrays_eq ! ( & actual, & expected, & mut assertion_ctx ) ;
171+ assert_arrays_eq ! ( & actual, & direct, & mut ctx ) ;
172+ assert_arrays_eq ! ( & actual, & expected, & mut ctx ) ;
169173 Ok ( ( ) )
170174 }
171175
172176 #[ test]
173177 fn listview_counts_with_nulls ( ) -> VortexResult < ( ) > {
174- let assertion_session = crate :: array_session ( ) ;
175- let mut assertion_ctx = assertion_session. create_execution_ctx ( ) ;
178+ let mut ctx = array_session ( ) . create_execution_ctx ( ) ;
176179 let elements =
177180 PrimitiveArray :: from_option_iter ( [ Some ( 1i32 ) , None , Some ( 3 ) , None , None , Some ( 9 ) ] )
178181 . into_array ( ) ;
179182 let elem_dtype = DType :: Primitive ( PType :: I32 , Nullable ) ;
180183 let ranges = [ ( 0 , 3 ) , ( 3 , 2 ) , ( 5 , 1 ) ] ;
181184
182185 let groups = listview ( elements. clone ( ) , & ranges) ?;
183- let actual = grouped_count_actual ( & groups, & elem_dtype) ?;
186+ let actual = grouped_count_actual ( & groups, & elem_dtype, & mut ctx ) ?;
184187 let expected = grouped_count_reference ( & elements, & ranges) ?;
185188
186189 // Group 0: {1, null, 3} -> 2. Group 1: {null, null} -> 0. Group 2: {9} -> 1.
187190 let direct = PrimitiveArray :: new ( buffer ! [ 2u64 , 0 , 1 ] , Validity :: NonNullable ) . into_array ( ) ;
188- assert_arrays_eq ! ( & actual, & direct, & mut assertion_ctx ) ;
189- assert_arrays_eq ! ( & actual, & expected, & mut assertion_ctx ) ;
191+ assert_arrays_eq ! ( & actual, & direct, & mut ctx ) ;
192+ assert_arrays_eq ! ( & actual, & expected, & mut ctx ) ;
190193 Ok ( ( ) )
191194 }
192195
193196 #[ test]
194197 fn listview_counts_varbinview_with_nulls ( ) -> VortexResult < ( ) > {
195- let assertion_session = crate :: array_session ( ) ;
196- let mut assertion_ctx = assertion_session. create_execution_ctx ( ) ;
198+ let mut ctx = array_session ( ) . create_execution_ctx ( ) ;
197199 let elements = VarBinViewArray :: from_iter_nullable_str ( [
198200 Some ( "a" ) ,
199201 None ,
@@ -206,17 +208,18 @@ mod tests {
206208 let ranges = [ ( 0 , 2 ) , ( 2 , 2 ) , ( 4 , 1 ) ] ;
207209
208210 let groups = listview ( elements. clone ( ) , & ranges) ?;
209- let actual = grouped_count_actual ( & groups, & elem_dtype) ?;
211+ let actual = grouped_count_actual ( & groups, & elem_dtype, & mut ctx ) ?;
210212 let expected = grouped_count_reference ( & elements, & ranges) ?;
211213
212214 let direct = PrimitiveArray :: new ( buffer ! [ 1u64 , 1 , 1 ] , Validity :: NonNullable ) . into_array ( ) ;
213- assert_arrays_eq ! ( & actual, & direct, & mut assertion_ctx ) ;
214- assert_arrays_eq ! ( & actual, & expected, & mut assertion_ctx ) ;
215+ assert_arrays_eq ! ( & actual, & direct, & mut ctx ) ;
216+ assert_arrays_eq ! ( & actual, & expected, & mut ctx ) ;
215217 Ok ( ( ) )
216218 }
217219
218220 #[ test]
219221 fn fixed_size_counts_float_nans ( ) -> VortexResult < ( ) > {
222+ let mut ctx = array_session ( ) . create_execution_ctx ( ) ;
220223 let elements =
221224 PrimitiveArray :: from_option_iter ( [ Some ( 1.0f64 ) , Some ( f64:: NAN ) , None , Some ( 2.0 ) ] )
222225 . into_array ( ) ;
@@ -225,32 +228,31 @@ mod tests {
225228 FixedSizeListArray :: try_new ( elements, 2 , Validity :: NonNullable , 2 ) ?. into_array ( ) ;
226229
227230 // NaNs are excluded by default and counted otherwise.
228- let actual = grouped_count_actual ( & groups, & elem_dtype) ?;
231+ let actual = grouped_count_actual ( & groups, & elem_dtype, & mut ctx ) ?;
229232 let expected = PrimitiveArray :: new ( buffer ! [ 1u64 , 1 ] , Validity :: NonNullable ) . into_array ( ) ;
230- assert_arrays_eq ! ( & actual, & expected) ;
233+ assert_arrays_eq ! ( & actual, & expected, & mut ctx ) ;
231234
232235 let mut acc =
233236 GroupedAccumulator :: try_new ( Count , NumericalAggregateOpts :: include_nans ( ) , elem_dtype) ?;
234- acc. accumulate_list ( & groups, & mut LEGACY_SESSION . create_execution_ctx ( ) ) ?;
237+ acc. accumulate_list ( & groups, & mut ctx ) ?;
235238 let actual = acc. finish ( ) ?;
236239 let expected = PrimitiveArray :: new ( buffer ! [ 2u64 , 1 ] , Validity :: NonNullable ) . into_array ( ) ;
237- assert_arrays_eq ! ( & actual, & expected) ;
240+ assert_arrays_eq ! ( & actual, & expected, & mut ctx ) ;
238241 Ok ( ( ) )
239242 }
240243
241244 #[ test]
242245 fn fixed_size_counts_with_nulls ( ) -> VortexResult < ( ) > {
243- let assertion_session = crate :: array_session ( ) ;
244- let mut assertion_ctx = assertion_session. create_execution_ctx ( ) ;
246+ let mut ctx = array_session ( ) . create_execution_ctx ( ) ;
245247 let elements =
246248 PrimitiveArray :: from_option_iter ( [ Some ( 1i32 ) , None , Some ( 3 ) , Some ( 4 ) ] ) . into_array ( ) ;
247249 let elem_dtype = DType :: Primitive ( PType :: I32 , Nullable ) ;
248250 let groups =
249251 FixedSizeListArray :: try_new ( elements, 2 , Validity :: NonNullable , 2 ) ?. into_array ( ) ;
250252
251- let actual = grouped_count_actual ( & groups, & elem_dtype) ?;
253+ let actual = grouped_count_actual ( & groups, & elem_dtype, & mut ctx ) ?;
252254 let direct = PrimitiveArray :: new ( buffer ! [ 1u64 , 2 ] , Validity :: NonNullable ) . into_array ( ) ;
253- assert_arrays_eq ! ( & actual, & direct, & mut assertion_ctx ) ;
255+ assert_arrays_eq ! ( & actual, & direct, & mut ctx ) ;
254256 Ok ( ( ) )
255257 }
256258}
0 commit comments