@@ -247,7 +247,7 @@ impl FirstValueAccumulator {
247247 . iter ( )
248248 . zip ( self . ordering_req . iter ( ) )
249249 . map ( |( values, req) | SortColumn {
250- values : values . clone ( ) ,
250+ values : Arc :: clone ( values ) ,
251251 options : Some ( req. options ) ,
252252 } )
253253 . collect :: < Vec < _ > > ( ) ;
@@ -547,7 +547,7 @@ impl LastValueAccumulator {
547547 // Take the reverse ordering requirement. This enables us to
548548 // use "fetch = 1" to get the last value.
549549 SortColumn {
550- values : values . clone ( ) ,
550+ values : Arc :: clone ( values ) ,
551551 options : Some ( !req. options ) ,
552552 }
553553 } )
@@ -676,7 +676,7 @@ fn convert_to_sort_cols(
676676 arrs. iter ( )
677677 . zip ( sort_exprs. iter ( ) )
678678 . map ( |( item, sort_expr) | SortColumn {
679- values : item . clone ( ) ,
679+ values : Arc :: clone ( item ) ,
680680 options : Some ( sort_expr. options ) ,
681681 } )
682682 . collect :: < Vec < _ > > ( )
@@ -707,7 +707,7 @@ mod tests {
707707 for arr in arrs {
708708 // Once first_value is set, accumulator should remember it.
709709 // It shouldn't update first_value for each new batch
710- first_accumulator. update_batch ( & [ arr . clone ( ) ] ) ?;
710+ first_accumulator. update_batch ( & [ Arc :: clone ( & arr ) ] ) ?;
711711 // last_value should be updated for each new batch.
712712 last_accumulator. update_batch ( & [ arr] ) ?;
713713 }
@@ -733,12 +733,12 @@ mod tests {
733733 let mut first_accumulator =
734734 FirstValueAccumulator :: try_new ( & DataType :: Int64 , & [ ] , vec ! [ ] , false ) ?;
735735
736- first_accumulator. update_batch ( & [ arrs[ 0 ] . clone ( ) ] ) ?;
736+ first_accumulator. update_batch ( & [ Arc :: clone ( & arrs[ 0 ] ) ] ) ?;
737737 let state1 = first_accumulator. state ( ) ?;
738738
739739 let mut first_accumulator =
740740 FirstValueAccumulator :: try_new ( & DataType :: Int64 , & [ ] , vec ! [ ] , false ) ?;
741- first_accumulator. update_batch ( & [ arrs[ 1 ] . clone ( ) ] ) ?;
741+ first_accumulator. update_batch ( & [ Arc :: clone ( & arrs[ 1 ] ) ] ) ?;
742742 let state2 = first_accumulator. state ( ) ?;
743743
744744 assert_eq ! ( state1. len( ) , state2. len( ) ) ;
@@ -763,12 +763,12 @@ mod tests {
763763 let mut last_accumulator =
764764 LastValueAccumulator :: try_new ( & DataType :: Int64 , & [ ] , vec ! [ ] , false ) ?;
765765
766- last_accumulator. update_batch ( & [ arrs[ 0 ] . clone ( ) ] ) ?;
766+ last_accumulator. update_batch ( & [ Arc :: clone ( & arrs[ 0 ] ) ] ) ?;
767767 let state1 = last_accumulator. state ( ) ?;
768768
769769 let mut last_accumulator =
770770 LastValueAccumulator :: try_new ( & DataType :: Int64 , & [ ] , vec ! [ ] , false ) ?;
771- last_accumulator. update_batch ( & [ arrs[ 1 ] . clone ( ) ] ) ?;
771+ last_accumulator. update_batch ( & [ Arc :: clone ( & arrs[ 1 ] ) ] ) ?;
772772 let state2 = last_accumulator. state ( ) ?;
773773
774774 assert_eq ! ( state1. len( ) , state2. len( ) ) ;
0 commit comments