Skip to content

Commit 9e22960

Browse files
Use collect for rows & init capcity for offsets.
1 parent caf9a3b commit 9e22960

File tree

1 file changed

+4
-6
lines changed

1 file changed

+4
-6
lines changed

datafusion/physical-expr/src/array_expressions.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2003,17 +2003,15 @@ pub fn general_array_distinct<OffsetSize: OffsetSizeTrait>(
20032003
field: &FieldRef,
20042004
) -> Result<ArrayRef> {
20052005
let dt = array.value_type();
2006-
let mut offsets = vec![OffsetSize::usize_as(0)];
2007-
let mut new_arrays = vec![];
2006+
let mut offsets = Vec::with_capacity(array.len());
2007+
offsets.push(OffsetSize::usize_as(0));
2008+
let mut new_arrays = Vec::with_capacity(array.len());
20082009
let converter = RowConverter::new(vec![SortField::new(dt.clone())])?;
20092010
// distinct for each list in ListArray
20102011
for arr in array.iter().flatten() {
20112012
let values = converter.convert_columns(&[arr])?;
2012-
let mut rows = Vec::with_capacity(values.num_rows());
20132013
// sort elements in list and remove duplicates
2014-
for val in values.iter().sorted().dedup() {
2015-
rows.push(val);
2016-
}
2014+
let rows = values.iter().sorted().dedup().collect::<Vec<_>>();
20172015
let last_offset: OffsetSize = match offsets.last().copied() {
20182016
Some(offset) => offset,
20192017
None => return internal_err!("offsets should not be empty"),

0 commit comments

Comments
 (0)