@@ -186,122 +186,3 @@ impl Accumulator for ArrayAggAccumulator {
186186 - std:: mem:: size_of_val ( & self . datatype )
187187 }
188188}
189-
190- #[ cfg( test) ]
191- mod tests {
192- use super :: * ;
193- use crate :: expressions:: col;
194- use crate :: expressions:: tests:: aggregate;
195- use arrow:: array:: Int32Array ;
196- use arrow:: datatypes:: * ;
197- use arrow:: record_batch:: RecordBatch ;
198- use arrow_array:: ListArray ;
199- use arrow_buffer:: OffsetBuffer ;
200- use datafusion_common:: DataFusionError ;
201-
202- macro_rules! test_op {
203- ( $ARRAY: expr, $DATATYPE: expr, $OP: ident, $EXPECTED: expr) => {
204- test_op!( $ARRAY, $DATATYPE, $OP, $EXPECTED, $EXPECTED. data_type( ) )
205- } ;
206- ( $ARRAY: expr, $DATATYPE: expr, $OP: ident, $EXPECTED: expr, $EXPECTED_DATATYPE: expr) => { {
207- let schema = Schema :: new( vec![ Field :: new( "a" , $DATATYPE, true ) ] ) ;
208-
209- let batch = RecordBatch :: try_new( Arc :: new( schema. clone( ) ) , vec![ $ARRAY] ) ?;
210-
211- let agg = Arc :: new( <$OP>:: new(
212- col( "a" , & schema) ?,
213- "bla" . to_string( ) ,
214- $EXPECTED_DATATYPE,
215- true ,
216- ) ) ;
217- let actual = aggregate( & batch, agg) ?;
218- let expected = ScalarValue :: from( $EXPECTED) ;
219-
220- assert_eq!( expected, actual) ;
221-
222- Ok ( ( ) ) as Result <( ) , DataFusionError >
223- } } ;
224- }
225-
226- #[ test]
227- fn array_agg_i32 ( ) -> Result < ( ) > {
228- let a: ArrayRef = Arc :: new ( Int32Array :: from ( vec ! [ 1 , 2 , 3 , 4 , 5 ] ) ) ;
229-
230- let list = ListArray :: from_iter_primitive :: < Int32Type , _ , _ > ( vec ! [ Some ( vec![
231- Some ( 1 ) ,
232- Some ( 2 ) ,
233- Some ( 3 ) ,
234- Some ( 4 ) ,
235- Some ( 5 ) ,
236- ] ) ] ) ;
237- let list = ScalarValue :: List ( Arc :: new ( list) ) ;
238-
239- test_op ! ( a, DataType :: Int32 , ArrayAgg , list, DataType :: Int32 )
240- }
241-
242- #[ test]
243- fn array_agg_nested ( ) -> Result < ( ) > {
244- let a1 = ListArray :: from_iter_primitive :: < Int32Type , _ , _ > ( vec ! [ Some ( vec![
245- Some ( 1 ) ,
246- Some ( 2 ) ,
247- Some ( 3 ) ,
248- ] ) ] ) ;
249- let a2 = ListArray :: from_iter_primitive :: < Int32Type , _ , _ > ( vec ! [ Some ( vec![
250- Some ( 4 ) ,
251- Some ( 5 ) ,
252- ] ) ] ) ;
253- let l1 = ListArray :: new (
254- Arc :: new ( Field :: new ( "item" , a1. data_type ( ) . to_owned ( ) , true ) ) ,
255- OffsetBuffer :: from_lengths ( [ a1. len ( ) + a2. len ( ) ] ) ,
256- arrow:: compute:: concat ( & [ & a1, & a2] ) ?,
257- None ,
258- ) ;
259-
260- let a1 =
261- ListArray :: from_iter_primitive :: < Int32Type , _ , _ > ( vec ! [ Some ( vec![ Some ( 6 ) ] ) ] ) ;
262- let a2 = ListArray :: from_iter_primitive :: < Int32Type , _ , _ > ( vec ! [ Some ( vec![
263- Some ( 7 ) ,
264- Some ( 8 ) ,
265- ] ) ] ) ;
266- let l2 = ListArray :: new (
267- Arc :: new ( Field :: new ( "item" , a1. data_type ( ) . to_owned ( ) , true ) ) ,
268- OffsetBuffer :: from_lengths ( [ a1. len ( ) + a2. len ( ) ] ) ,
269- arrow:: compute:: concat ( & [ & a1, & a2] ) ?,
270- None ,
271- ) ;
272-
273- let a1 =
274- ListArray :: from_iter_primitive :: < Int32Type , _ , _ > ( vec ! [ Some ( vec![ Some ( 9 ) ] ) ] ) ;
275- let l3 = ListArray :: new (
276- Arc :: new ( Field :: new ( "item" , a1. data_type ( ) . to_owned ( ) , true ) ) ,
277- OffsetBuffer :: from_lengths ( [ a1. len ( ) ] ) ,
278- arrow:: compute:: concat ( & [ & a1] ) ?,
279- None ,
280- ) ;
281-
282- let list = ListArray :: new (
283- Arc :: new ( Field :: new ( "item" , l1. data_type ( ) . to_owned ( ) , true ) ) ,
284- OffsetBuffer :: from_lengths ( [ l1. len ( ) + l2. len ( ) + l3. len ( ) ] ) ,
285- arrow:: compute:: concat ( & [ & l1, & l2, & l3] ) ?,
286- None ,
287- ) ;
288- let list = ScalarValue :: List ( Arc :: new ( list) ) ;
289- let l1 = ScalarValue :: List ( Arc :: new ( l1) ) ;
290- let l2 = ScalarValue :: List ( Arc :: new ( l2) ) ;
291- let l3 = ScalarValue :: List ( Arc :: new ( l3) ) ;
292-
293- let array = ScalarValue :: iter_to_array ( vec ! [ l1, l2, l3] ) . unwrap ( ) ;
294-
295- test_op ! (
296- array,
297- DataType :: List ( Arc :: new( Field :: new_list(
298- "item" ,
299- Field :: new( "item" , DataType :: Int32 , true ) ,
300- true ,
301- ) ) ) ,
302- ArrayAgg ,
303- list,
304- DataType :: List ( Arc :: new( Field :: new( "item" , DataType :: Int32 , true , ) ) )
305- )
306- }
307- }
0 commit comments