Skip to content

Commit f5e268d

Browse files
committed
Use reference rather than owned ArrayRef
1 parent 1e10b9c commit f5e268d

File tree

1 file changed

+12
-9
lines changed
  • datafusion/physical-expr/src/aggregate/count_distinct

1 file changed

+12
-9
lines changed

datafusion/physical-expr/src/aggregate/count_distinct/strings.rs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)