Skip to content

Commit 7c23abb

Browse files
committed
Use reference rather than owned ArrayRef
1 parent 06d8865 commit 7c23abb

File tree

3 files changed

+18
-13
lines changed

3 files changed

+18
-13
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ impl<O: OffsetSizeTrait> Accumulator for StringDistinctCountAccumulator<O> {
4848
return Ok(());
4949
}
5050

51-
self.0.insert(values[0].clone());
51+
self.0.insert(&values[0]);
5252

5353
Ok(())
5454
}
@@ -66,7 +66,7 @@ impl<O: OffsetSizeTrait> Accumulator for StringDistinctCountAccumulator<O> {
6666
let arr = as_list_array(&states[0])?;
6767
arr.iter().try_for_each(|maybe_list| {
6868
if let Some(list) = maybe_list {
69-
self.0.insert(list);
69+
self.0.insert(&list);
7070
};
7171
Ok(())
7272
})

datafusion/physical-expr/src/string_map.rs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ impl<O: OffsetSizeTrait> ArrowStringSet<O> {
4242
}
4343

4444
/// Inserts each string from `values` into the set
45-
pub fn insert(&mut self, values: ArrayRef) {
45+
pub fn insert(&mut self, values: &ArrayRef) {
4646
fn make_payload_fn(_value: Option<&[u8]>) {}
4747
fn observe_payload_fn(_payload: ()) {}
4848
self.0
@@ -173,7 +173,7 @@ where
173173
/// Safety: F is only ever invoked with valid values from `values`
174174
pub fn insert_if_new<MP, OP>(
175175
&mut self,
176-
values: ArrayRef,
176+
values: &ArrayRef,
177177
mut make_payload_fn: MP,
178178
mut observe_payload_fn: OP,
179179
) where
@@ -440,7 +440,8 @@ mod tests {
440440
#[test]
441441
fn string_set_empty() {
442442
let mut set = ArrowStringSet::<i32>::new();
443-
set.insert(Arc::new(StringArray::new_null(0)));
443+
let array: ArrayRef = Arc::new(StringArray::new_null(0));
444+
set.insert(&array);
444445
assert_eq!(set.len(), 0);
445446
assert_eq!(set.non_null_len(), 0);
446447
assert_set(set, &[]);
@@ -449,7 +450,8 @@ mod tests {
449450
#[test]
450451
fn string_set_one_null() {
451452
let mut set = ArrowStringSet::<i32>::new();
452-
set.insert(Arc::new(StringArray::new_null(1)));
453+
let array: ArrayRef = Arc::new(StringArray::new_null(1));
454+
set.insert(&array);
453455
assert_eq!(set.len(), 1);
454456
assert_eq!(set.non_null_len(), 0);
455457
assert_set(set, &[None]);
@@ -458,7 +460,8 @@ mod tests {
458460
#[test]
459461
fn string_set_many_null() {
460462
let mut set = ArrowStringSet::<i32>::new();
461-
set.insert(Arc::new(StringArray::new_null(11)));
463+
let array: ArrayRef = Arc::new(StringArray::new_null(11));
464+
set.insert(&array);
462465
assert_eq!(set.len(), 1);
463466
assert_eq!(set.non_null_len(), 0);
464467
assert_set(set, &[None]);
@@ -496,7 +499,8 @@ mod tests {
496499
]);
497500

498501
let mut set = ArrowStringSet::<O>::new();
499-
set.insert(Arc::new(values));
502+
let array: ArrayRef = Arc::new(values);
503+
set.insert(&array);
500504
// values mut appear be in the order they were inserted
501505
assert_set(
502506
set,
@@ -534,7 +538,8 @@ mod tests {
534538
]);
535539

536540
let mut set = ArrowStringSet::<O>::new();
537-
set.insert(Arc::new(values));
541+
let array: ArrayRef = Arc::new(values);
542+
set.insert(&array);
538543
// strings mut appear be in the order they were inserted
539544
assert_set(
540545
set,
@@ -587,7 +592,7 @@ mod tests {
587592
let mut set = ArrowStringSet::<i32>::new();
588593
let size_empty = set.size();
589594

590-
set.insert(values1.clone());
595+
set.insert(&values1);
591596
let size_after_values1 = set.size();
592597
assert!(size_empty < size_after_values1);
593598
assert!(
@@ -597,11 +602,11 @@ mod tests {
597602
assert!(size_after_values1 < total_strings1_len + total_strings2_len);
598603

599604
// inserting the same strings should not affect the size
600-
set.insert(values1.clone());
605+
set.insert(&values1);
601606
assert_eq!(set.size(), size_after_values1);
602607

603608
// inserting the large strings should increase the reported size
604-
set.insert(values2);
609+
set.insert(&values2);
605610
let size_after_values2 = set.size();
606611
assert!(size_after_values2 > size_after_values1);
607612
assert!(size_after_values2 > total_strings1_len + total_strings2_len);

datafusion/physical-plan/src/aggregates/group_values/binary.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ impl GroupValues for GroupValuesBinary {
5757

5858
groups.clear();
5959
self.map.insert_if_new(
60-
arr.clone(),
60+
arr,
6161
// called for each new group
6262
|_value| {
6363
// assign new group index on each insert

0 commit comments

Comments
 (0)