Skip to content

Commit

Permalink
refactor: switch BooleanBufferBuilder to NullBufferBuilder in bin…
Browse files Browse the repository at this point in the history
…ary_map (#14341)

* refactor: switch BooleanBufferBuilder to NullBufferBuilder in binary_map

* fix: check cargo.lock for datafusion-cli

* add comment for .unwrap

---------

Co-authored-by: Cheng-Yuan-Lai <a186235@g,ail.com>
  • Loading branch information
Chen-Yuan-Lai and Cheng-Yuan-Lai authored Jan 29, 2025
1 parent 1da5252 commit d18a1d3
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 43 deletions.
73 changes: 37 additions & 36 deletions datafusion-cli/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions datafusion/physical-expr-common/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ path = "src/lib.rs"
[dependencies]
ahash = { workspace = true }
arrow = { workspace = true }
arrow-buffer = { workspace = true }
datafusion-common = { workspace = true, default-features = true }
datafusion-expr-common = { workspace = true }
hashbrown = { workspace = true }
Expand Down
16 changes: 9 additions & 7 deletions datafusion/physical-expr-common/src/binary_map.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ use ahash::RandomState;
use arrow::array::cast::AsArray;
use arrow::array::types::{ByteArrayType, GenericBinaryType, GenericStringType};
use arrow::array::{
Array, ArrayRef, BooleanBufferBuilder, BufferBuilder, GenericBinaryArray,
GenericStringArray, OffsetSizeTrait,
Array, ArrayRef, BufferBuilder, GenericBinaryArray, GenericStringArray,
OffsetSizeTrait,
};
use arrow::buffer::{NullBuffer, OffsetBuffer, ScalarBuffer};
use arrow::datatypes::DataType;
use arrow_buffer::{NullBuffer, NullBufferBuilder, OffsetBuffer, ScalarBuffer};
use datafusion_common::hash_utils::create_hashes;
use datafusion_common::utils::proxy::{HashTableAllocExt, VecAllocExt};
use std::any::type_name;
Expand Down Expand Up @@ -553,10 +553,12 @@ where

/// Returns a `NullBuffer` with a single null value at the given index
fn single_null_buffer(num_values: usize, null_index: usize) -> NullBuffer {
let mut bool_builder = BooleanBufferBuilder::new(num_values);
bool_builder.append_n(num_values, true);
bool_builder.set_bit(null_index, false);
NullBuffer::from(bool_builder.finish())
let mut null_builder = NullBufferBuilder::new(num_values);
null_builder.append_n_non_nulls(null_index);
null_builder.append_null();
null_builder.append_n_non_nulls(num_values - null_index - 1);
// SAFETY: inner builder must be constructed
null_builder.finish().unwrap()
}

impl<O: OffsetSizeTrait, V> Debug for ArrowBytesMap<O, V>
Expand Down

0 comments on commit d18a1d3

Please sign in to comment.