Skip to content

Commit

Permalink
refactor: switch BooleanBufferBuilder to NullBufferBuilder in sin…
Browse files Browse the repository at this point in the history
…gle_group_by (#14360)

* refactor: switch BooleanBufferBuilder to NullBufferBuilder in single_group_by

* Update datafusion/physical-plan/src/aggregates/group_values/single_group_by/primitive.rs

---------

Co-authored-by: Cheng-Yuan-Lai <a186235@g,ail.com>
Co-authored-by: Andrew Lamb <[email protected]>
  • Loading branch information
3 people authored Jan 29, 2025
1 parent 2510e34 commit 60c0fb8
Showing 1 changed file with 7 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,11 @@

use crate::aggregates::group_values::GroupValues;
use ahash::RandomState;
use arrow::array::BooleanBufferBuilder;
use arrow::buffer::NullBuffer;
use arrow::datatypes::i256;
use arrow::record_batch::RecordBatch;
use arrow_array::cast::AsArray;
use arrow_array::{ArrayRef, ArrowNativeTypeOp, ArrowPrimitiveType, PrimitiveArray};
use arrow_buffer::NullBufferBuilder;
use arrow_buffer::{IntervalDayTime, IntervalMonthDayNano};
use arrow_schema::DataType;
use datafusion_common::Result;
Expand Down Expand Up @@ -166,10 +165,12 @@ where
null_idx: Option<usize>,
) -> PrimitiveArray<T> {
let nulls = null_idx.map(|null_idx| {
let mut buffer = BooleanBufferBuilder::new(values.len());
buffer.append_n(values.len(), true);
buffer.set_bit(null_idx, false);
unsafe { NullBuffer::new_unchecked(buffer.finish(), 1) }
let mut buffer = NullBufferBuilder::new(values.len());
buffer.append_n_non_nulls(null_idx);
buffer.append_null();
buffer.append_n_non_nulls(values.len() - null_idx - 1);
// NOTE: The inner builder must be constructed as there is at least one null
buffer.finish().unwrap()
});
PrimitiveArray::<T>::new(values.into(), nulls)
}
Expand Down

0 comments on commit 60c0fb8

Please sign in to comment.