@@ -676,6 +676,38 @@ mod tests {
676676 Ok ( ( ) )
677677 }
678678
679+ #[ test]
680+ fn variant_get_reads_chunked_variant_input ( ) -> VortexResult < ( ) > {
681+ let array = variant_rows ( [
682+ Scalar :: variant ( variant_object ( [ (
683+ "a" ,
684+ Scalar :: primitive ( 10i32 , Nullability :: NonNullable ) ,
685+ ) ] ) ) ,
686+ Scalar :: variant ( variant_object ( [ (
687+ "b" ,
688+ Scalar :: primitive ( 20i32 , Nullability :: NonNullable ) ,
689+ ) ] ) ) ,
690+ Scalar :: variant ( variant_object ( [ (
691+ "a" ,
692+ Scalar :: primitive ( 30i32 , Nullability :: NonNullable ) ,
693+ ) ] ) ) ,
694+ Scalar :: null ( DType :: Variant ( Nullability :: Nullable ) ) ,
695+ ] ) ?;
696+ assert ! ( array. is:: <Chunked >( ) ) ;
697+
698+ let result = execute_variant_get (
699+ array,
700+ "$.a" ,
701+ Some ( DType :: Primitive ( PType :: I32 , Nullability :: NonNullable ) ) ,
702+ ) ?;
703+
704+ assert_arrays_eq ! (
705+ result,
706+ PrimitiveArray :: from_option_iter( [ Some ( 10i32 ) , None , Some ( 30 ) , None ] )
707+ ) ;
708+ Ok ( ( ) )
709+ }
710+
679711 #[ test]
680712 fn variant_get_fallback_typed_output_is_contiguous ( ) -> VortexResult < ( ) > {
681713 let array = variant_rows ( [
@@ -769,13 +801,8 @@ mod tests {
769801
770802 assert_eq ! ( variant. len( ) , 2 ) ;
771803 assert_eq ! ( canonical_variant. len( ) , 2 ) ;
772- assert ! ( variant. core_storage( ) . is:: <Chunked >( ) ) ;
773-
774- let core_variant = variant
775- . core_storage ( )
776- . clone ( )
777- . execute :: < VariantArray > ( & mut LEGACY_SESSION . create_execution_ctx ( ) ) ?;
778- assert_eq ! ( core_variant. len( ) , 2 ) ;
804+ assert_eq ! ( variant. core_storage( ) . dtype( ) , variant. dtype( ) ) ;
805+ assert_eq ! ( variant. core_storage( ) . len( ) , variant. len( ) ) ;
779806
780807 let mut ctx = LEGACY_SESSION . create_execution_ctx ( ) ;
781808 for ( idx, expected) in [ 10i32 , 20 ] . into_iter ( ) . enumerate ( ) {
0 commit comments