@@ -247,7 +247,7 @@ impl FirstValueAccumulator {
247
247
. iter ( )
248
248
. zip ( self . ordering_req . iter ( ) )
249
249
. map ( |( values, req) | SortColumn {
250
- values : values . clone ( ) ,
250
+ values : Arc :: clone ( values ) ,
251
251
options : Some ( req. options ) ,
252
252
} )
253
253
. collect :: < Vec < _ > > ( ) ;
@@ -547,7 +547,7 @@ impl LastValueAccumulator {
547
547
// Take the reverse ordering requirement. This enables us to
548
548
// use "fetch = 1" to get the last value.
549
549
SortColumn {
550
- values : values . clone ( ) ,
550
+ values : Arc :: clone ( values ) ,
551
551
options : Some ( !req. options ) ,
552
552
}
553
553
} )
@@ -676,7 +676,7 @@ fn convert_to_sort_cols(
676
676
arrs. iter ( )
677
677
. zip ( sort_exprs. iter ( ) )
678
678
. map ( |( item, sort_expr) | SortColumn {
679
- values : item . clone ( ) ,
679
+ values : Arc :: clone ( item ) ,
680
680
options : Some ( sort_expr. options ) ,
681
681
} )
682
682
. collect :: < Vec < _ > > ( )
@@ -707,7 +707,7 @@ mod tests {
707
707
for arr in arrs {
708
708
// Once first_value is set, accumulator should remember it.
709
709
// 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 ) ] ) ?;
711
711
// last_value should be updated for each new batch.
712
712
last_accumulator. update_batch ( & [ arr] ) ?;
713
713
}
@@ -733,12 +733,12 @@ mod tests {
733
733
let mut first_accumulator =
734
734
FirstValueAccumulator :: try_new ( & DataType :: Int64 , & [ ] , vec ! [ ] , false ) ?;
735
735
736
- first_accumulator. update_batch ( & [ arrs[ 0 ] . clone ( ) ] ) ?;
736
+ first_accumulator. update_batch ( & [ Arc :: clone ( & arrs[ 0 ] ) ] ) ?;
737
737
let state1 = first_accumulator. state ( ) ?;
738
738
739
739
let mut first_accumulator =
740
740
FirstValueAccumulator :: try_new ( & DataType :: Int64 , & [ ] , vec ! [ ] , false ) ?;
741
- first_accumulator. update_batch ( & [ arrs[ 1 ] . clone ( ) ] ) ?;
741
+ first_accumulator. update_batch ( & [ Arc :: clone ( & arrs[ 1 ] ) ] ) ?;
742
742
let state2 = first_accumulator. state ( ) ?;
743
743
744
744
assert_eq ! ( state1. len( ) , state2. len( ) ) ;
@@ -763,12 +763,12 @@ mod tests {
763
763
let mut last_accumulator =
764
764
LastValueAccumulator :: try_new ( & DataType :: Int64 , & [ ] , vec ! [ ] , false ) ?;
765
765
766
- last_accumulator. update_batch ( & [ arrs[ 0 ] . clone ( ) ] ) ?;
766
+ last_accumulator. update_batch ( & [ Arc :: clone ( & arrs[ 0 ] ) ] ) ?;
767
767
let state1 = last_accumulator. state ( ) ?;
768
768
769
769
let mut last_accumulator =
770
770
LastValueAccumulator :: try_new ( & DataType :: Int64 , & [ ] , vec ! [ ] , false ) ?;
771
- last_accumulator. update_batch ( & [ arrs[ 1 ] . clone ( ) ] ) ?;
771
+ last_accumulator. update_batch ( & [ Arc :: clone ( & arrs[ 1 ] ) ] ) ?;
772
772
let state2 = last_accumulator. state ( ) ?;
773
773
774
774
assert_eq ! ( state1. len( ) , state2. len( ) ) ;
0 commit comments