@@ -273,7 +273,8 @@ mod tests {
273
273
use std:: { collections:: HashMap , sync:: Arc } ;
274
274
275
275
use actix_web:: test:: TestRequest ;
276
- use arrow_array:: { ArrayRef , Float64Array , Int64Array , StringArray } ;
276
+ use arrow:: datatypes:: Int64Type ;
277
+ use arrow_array:: { ArrayRef , Float64Array , Int64Array , ListArray , StringArray } ;
277
278
use arrow_schema:: { DataType , Field } ;
278
279
use serde_json:: json;
279
280
@@ -718,6 +719,86 @@ mod tests {
718
719
] )
719
720
) ;
720
721
722
+ assert_eq ! (
723
+ rb. column_by_name( "c_a" )
724
+ . unwrap( )
725
+ . as_any( )
726
+ . downcast_ref:: <ListArray >( )
727
+ . unwrap( ) ,
728
+ & ListArray :: from_iter_primitive:: <Int64Type , _, _>( vec![
729
+ None ,
730
+ None ,
731
+ Some ( vec![ Some ( 1i64 ) ] ) ,
732
+ Some ( vec![ Some ( 1 ) ] )
733
+ ] )
734
+ ) ;
735
+
736
+ assert_eq ! (
737
+ rb. column_by_name( "c_b" )
738
+ . unwrap( )
739
+ . as_any( )
740
+ . downcast_ref:: <ListArray >( )
741
+ . unwrap( ) ,
742
+ & ListArray :: from_iter_primitive:: <Int64Type , _, _>( vec![
743
+ None ,
744
+ None ,
745
+ None ,
746
+ Some ( vec![ Some ( 2i64 ) ] )
747
+ ] )
748
+ ) ;
749
+ }
750
+
751
+ #[ test]
752
+ fn arr_obj_with_nested_type_v1 ( ) {
753
+ let json = json ! ( [
754
+ {
755
+ "a" : 1 ,
756
+ "b" : "hello" ,
757
+ } ,
758
+ {
759
+ "a" : 1 ,
760
+ "b" : "hello" ,
761
+ } ,
762
+ {
763
+ "a" : 1 ,
764
+ "b" : "hello" ,
765
+ "c" : [ { "a" : 1 } ]
766
+ } ,
767
+ {
768
+ "a" : 1 ,
769
+ "b" : "hello" ,
770
+ "c" : [ { "a" : 1 , "b" : 2 } ]
771
+ } ,
772
+ ] ) ;
773
+
774
+ let req = TestRequest :: default ( ) . to_http_request ( ) ;
775
+
776
+ let ( rb, _) = into_event_batch (
777
+ & req,
778
+ & json,
779
+ HashMap :: default ( ) ,
780
+ None ,
781
+ None ,
782
+ SchemaVersion :: V1 ,
783
+ )
784
+ . unwrap ( ) ;
785
+
786
+ assert_eq ! ( rb. num_rows( ) , 4 ) ;
787
+ assert_eq ! ( rb. num_columns( ) , 7 ) ;
788
+ assert_eq ! (
789
+ rb. column_by_name( "a" ) . unwrap( ) . as_int64_arr( ) . unwrap( ) ,
790
+ & Int64Array :: from( vec![ Some ( 1 ) , Some ( 1 ) , Some ( 1 ) , Some ( 1 ) ] )
791
+ ) ;
792
+ assert_eq ! (
793
+ rb. column_by_name( "b" ) . unwrap( ) . as_utf8_arr( ) . unwrap( ) ,
794
+ & StringArray :: from( vec![
795
+ Some ( "hello" ) ,
796
+ Some ( "hello" ) ,
797
+ Some ( "hello" ) ,
798
+ Some ( "hello" )
799
+ ] )
800
+ ) ;
801
+
721
802
assert_eq ! (
722
803
rb. column_by_name( "c_a" ) . unwrap( ) . as_int64_arr( ) . unwrap( ) ,
723
804
& Int64Array :: from( vec![ None , None , Some ( 1 ) , Some ( 1 ) ] )
0 commit comments