@@ -54,7 +54,7 @@ impl<O: OffsetSizeTrait> Accumulator for StringDistinctCountAccumulator<O> {
5454 return Ok ( ( ) ) ;
5555 }
5656
57- self . 0 . insert ( values[ 0 ] . clone ( ) ) ;
57+ self . 0 . insert ( & values[ 0 ] ) ;
5858
5959 Ok ( ( ) )
6060 }
@@ -72,7 +72,7 @@ impl<O: OffsetSizeTrait> Accumulator for StringDistinctCountAccumulator<O> {
7272 let arr = as_list_array ( & states[ 0 ] ) ?;
7373 arr. iter ( ) . try_for_each ( |maybe_list| {
7474 if let Some ( list) = maybe_list {
75- self . 0 . insert ( list) ;
75+ self . 0 . insert ( & list) ;
7676 } ;
7777 Ok ( ( ) )
7878 } )
@@ -180,7 +180,7 @@ impl<O: OffsetSizeTrait> SSOStringHashSet<O> {
180180 }
181181 }
182182
183- fn insert ( & mut self , values : ArrayRef ) {
183+ fn insert ( & mut self , values : & ArrayRef ) {
184184 // step 1: compute hashes for the strings
185185 let batch_hashes = & mut self . hashes_buffer ;
186186 batch_hashes. clear ( ) ;
@@ -336,7 +336,8 @@ mod tests {
336336 fn string_set_empty ( ) {
337337 for values in [ StringArray :: new_null ( 0 ) , StringArray :: new_null ( 11 ) ] {
338338 let mut set = SSOStringHashSet :: < i32 > :: new ( ) ;
339- set. insert ( Arc :: new ( values. clone ( ) ) ) ;
339+ let array: ArrayRef = Arc :: new ( values) ;
340+ set. insert ( & array) ;
340341 assert_set ( set, & [ ] ) ;
341342 }
342343 }
@@ -373,7 +374,8 @@ mod tests {
373374 ] ) ;
374375
375376 let mut set = SSOStringHashSet :: < O > :: new ( ) ;
376- set. insert ( Arc :: new ( values) ) ;
377+ let array: ArrayRef = Arc :: new ( values) ;
378+ set. insert ( & array) ;
377379 assert_set (
378380 set,
379381 & [
@@ -409,7 +411,8 @@ mod tests {
409411 ] ) ;
410412
411413 let mut set = SSOStringHashSet :: < O > :: new ( ) ;
412- set. insert ( Arc :: new ( values) ) ;
414+ let array: ArrayRef = Arc :: new ( values) ;
415+ set. insert ( & array) ;
413416 assert_set (
414417 set,
415418 & [
@@ -465,7 +468,7 @@ mod tests {
465468 let mut set = SSOStringHashSet :: < i32 > :: new ( ) ;
466469 let size_empty = set. size ( ) ;
467470
468- set. insert ( values1. clone ( ) ) ;
471+ set. insert ( & values1) ;
469472 let size_after_values1 = set. size ( ) ;
470473 assert ! ( size_empty < size_after_values1) ;
471474 assert ! (
@@ -475,11 +478,11 @@ mod tests {
475478 assert ! ( size_after_values1 < total_strings1_len + total_strings2_len) ;
476479
477480 // inserting the same strings should not affect the size
478- set. insert ( values1. clone ( ) ) ;
481+ set. insert ( & values1) ;
479482 assert_eq ! ( set. size( ) , size_after_values1) ;
480483
481484 // inserting the large strings should increase the reported size
482- set. insert ( values2) ;
485+ set. insert ( & values2) ;
483486 let size_after_values2 = set. size ( ) ;
484487 assert ! ( size_after_values2 > size_after_values1) ;
485488 assert ! ( size_after_values2 > total_strings1_len + total_strings2_len) ;
0 commit comments