33
44use std:: hash:: Hash ;
55use std:: hash:: Hasher ;
6+ use std:: sync:: Arc ;
67
78use prost:: Message ;
89use vortex_array:: ArrayEq ;
910use vortex_array:: ArrayHash ;
1011use vortex_array:: ArrayRef ;
1112use vortex_array:: ExecutionCtx ;
12- use vortex_array:: ExecutionStep ;
13+ use vortex_array:: ExecutionResult ;
1314use vortex_array:: IntoArray ;
1415use vortex_array:: Precision ;
16+ use vortex_array:: arrays:: VariantArray ;
1517use vortex_array:: buffer:: BufferHandle ;
1618use vortex_array:: dtype:: DType ;
1719use vortex_array:: dtype:: Nullability ;
@@ -35,7 +37,7 @@ use vortex_session::VortexSession;
3537use crate :: array:: ParquetVariantArray ;
3638
3739/// VTable for [`ParquetVariantArray`].
38- #[ derive( Debug ) ]
40+ #[ derive( Debug , Clone ) ]
3941pub struct ParquetVariant ;
4042
4143impl ParquetVariant {
@@ -316,8 +318,11 @@ impl VTable for ParquetVariant {
316318 Ok ( ( ) )
317319 }
318320
319- fn execute ( array : & Self :: Array , _ctx : & mut ExecutionCtx ) -> VortexResult < ExecutionStep > {
320- Ok ( ExecutionStep :: done ( array. clone ( ) . into_array ( ) ) )
321+ fn execute ( array : Arc < Self :: Array > , _ctx : & mut ExecutionCtx ) -> VortexResult < ExecutionResult > {
322+ let nullability = array. dtype . nullability ( ) ;
323+ Ok ( ExecutionResult :: done (
324+ VariantArray :: new ( array. as_ref ( ) . clone ( ) . into_array ( ) , nullability) . into_array ( ) ,
325+ ) )
321326 }
322327}
323328
0 commit comments