File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -502,28 +502,21 @@ impl<OffsetSize: OffsetSizeTrait> From<GenericListArray<OffsetSize>>
502502 for GenericListViewArray < OffsetSize >
503503{
504504 fn from ( value : GenericListArray < OffsetSize > ) -> Self {
505- let field = match value. data_type ( ) {
506- DataType :: List ( f) | DataType :: LargeList ( f) => f. clone ( ) ,
507- _ => panic ! (
508- "Expected infallible creation of GenericListViewArray from GenericList failed"
509- ) ,
510- } ;
511-
512- let offsets = value. value_offsets ( ) ;
505+ let ( field, offsets, values, nulls) = value. into_parts ( ) ;
513506 let len = offsets. len ( ) - 1 ;
514507 let mut sizes = Vec :: with_capacity ( len) ;
515508 let mut view_offsets = Vec :: with_capacity ( len) ;
516509 for ( i, offset) in offsets. iter ( ) . enumerate ( ) . take ( len) {
517510 view_offsets. push ( * offset) ;
518- sizes. push ( value . value_length ( i ) ) ;
511+ sizes. push ( offsets [ i + 1 ] - offsets [ i ] ) ;
519512 }
520513
521514 Self :: new (
522515 field,
523516 ScalarBuffer :: from ( view_offsets) ,
524517 ScalarBuffer :: from ( sizes) ,
525- value . values ( ) . clone ( ) ,
526- value . nulls ( ) . cloned ( ) ,
518+ values,
519+ nulls,
527520 )
528521 }
529522}
You can’t perform that action at this time.
0 commit comments