11use arrow_array:: array:: {
2- Array as ArrowArray , ArrayRef as ArrowArrayRef , ArrowPrimitiveType ,
3- BooleanArray as ArrowBooleanArray , GenericByteArray , NullArray as ArrowNullArray ,
4- OffsetSizeTrait , PrimitiveArray as ArrowPrimitiveArray , StructArray as ArrowStructArray ,
2+ Array as ArrowArray , ArrowPrimitiveType , BooleanArray as ArrowBooleanArray , GenericByteArray ,
3+ NullArray as ArrowNullArray , OffsetSizeTrait , PrimitiveArray as ArrowPrimitiveArray ,
4+ StructArray as ArrowStructArray ,
55} ;
66use arrow_array:: cast:: { AsArray , as_null_array} ;
77use arrow_array:: types:: {
@@ -233,7 +233,7 @@ impl FromArrowArray<&ArrowStructArray> for ArrayRef {
233233 . columns ( )
234234 . iter ( )
235235 . zip ( value. fields ( ) )
236- . map ( |( c, field) | Self :: from_arrow ( c. clone ( ) , field. is_nullable ( ) ) )
236+ . map ( |( c, field) | Self :: from_arrow ( c. as_ref ( ) , field. is_nullable ( ) ) )
237237 . collect ( ) ,
238238 value. len ( ) ,
239239 nulls ( value. nulls ( ) , nullable) ,
@@ -252,7 +252,7 @@ impl<O: OffsetSizeTrait + NativePType> FromArrowArray<&GenericListArray<O>> for
252252 dt => vortex_panic ! ( "Invalid data type for ListArray: {dt}" ) ,
253253 } ;
254254 ListArray :: try_new (
255- Self :: from_arrow ( value. values ( ) . clone ( ) , elem_nullable) ,
255+ Self :: from_arrow ( value. values ( ) . as_ref ( ) , elem_nullable) ,
256256 // offsets are always non-nullable
257257 value. offsets ( ) . clone ( ) . into_array ( ) ,
258258 nulls ( value. nulls ( ) , nullable) ,
@@ -286,8 +286,8 @@ fn nulls(nulls: Option<&NullBuffer>, nullable: bool) -> Validity {
286286 }
287287}
288288
289- impl FromArrowArray < ArrowArrayRef > for ArrayRef {
290- fn from_arrow ( array : ArrowArrayRef , nullable : bool ) -> Self {
289+ impl FromArrowArray < & dyn ArrowArray > for ArrayRef {
290+ fn from_arrow ( array : & dyn ArrowArray , nullable : bool ) -> Self {
291291 match array. data_type ( ) {
292292 DataType :: Boolean => Self :: from_arrow ( array. as_boolean ( ) , nullable) ,
293293 DataType :: UInt8 => Self :: from_arrow ( array. as_primitive :: < UInt8Type > ( ) , nullable) ,
@@ -322,7 +322,7 @@ impl FromArrowArray<ArrowArrayRef> for ArrayRef {
322322 DataType :: Struct ( _) => Self :: from_arrow ( array. as_struct ( ) , nullable) ,
323323 DataType :: List ( _) => Self :: from_arrow ( array. as_list :: < i32 > ( ) , nullable) ,
324324 DataType :: LargeList ( _) => Self :: from_arrow ( array. as_list :: < i64 > ( ) , nullable) ,
325- DataType :: Null => Self :: from_arrow ( as_null_array ( & array) , nullable) ,
325+ DataType :: Null => Self :: from_arrow ( as_null_array ( array) , nullable) ,
326326 DataType :: Timestamp ( u, _) => match u {
327327 ArrowTimeUnit :: Second => {
328328 Self :: from_arrow ( array. as_primitive :: < TimestampSecondType > ( ) , nullable)
0 commit comments