arrow_data/transform/
boolean.rs1use super::{_MutableArrayData, Extend, utils::resize_for_bits};
6use crate::ArrayData;
7use crate::bit_mask::set_bits;
8
9pub(super) fn build_extend(array: &ArrayData) -> Extend<'_> {
10 let values = array.buffers()[0].as_slice();
11 Box::new(
12 move |mutable: &mut _MutableArrayData, _, start: usize, len: usize| {
13 let buffer = &mut mutable.buffer1;
14 resize_for_bits(buffer, mutable.len + len);
15 set_bits(
16 buffer.as_slice_mut(),
17 values,
18 mutable.len,
19 array.offset() + start,
20 len,
21 );
22 Ok(())
23 },
24 )
25}
26
27pub(super) fn extend_nulls(
28 mutable: &mut _MutableArrayData,
29 len: usize,
30) -> Result<(), arrow_schema::ArrowError> {
31 let buffer = &mut mutable.buffer1;
32 resize_for_bits(buffer, mutable.len + len);
33 Ok(())
34}