MCPcopy Create free account
hub / github.com/apache/arrow-rs / build_extend_null_bits

Function build_extend_null_bits

arrow-data/src/transform/mod.rs:77–105  ·  view source on GitHub ↗
(array: &ArrayData, use_nulls: bool)

Source from the content-addressed store, hash-verified

75}
76
77fn build_extend_null_bits(array: &ArrayData, use_nulls: bool) -> ExtendNullBits<'_> {
78 if let Some(nulls) = array.nulls() {
79 let bytes = nulls.validity();
80 Box::new(move |mutable, start, len| {
81 let mutable_len = mutable.len;
82 let out = mutable.null_buffer();
83 utils::resize_for_bits(out, mutable_len + len);
84 mutable.null_count += set_bits(
85 out.as_slice_mut(),
86 bytes,
87 mutable_len,
88 nulls.offset() + start,
89 len,
90 );
91 })
92 } else if use_nulls {
93 Box::new(|mutable, _, len| {
94 let mutable_len = mutable.len;
95 let out = mutable.null_buffer();
96 utils::resize_for_bits(out, mutable_len + len);
97 let write_data = out.as_slice_mut();
98 (0..len).for_each(|i| {
99 bit_util::set_bit(write_data, mutable_len + i);
100 });
101 })
102 } else {
103 Box::new(|_, _, _| {})
104 }
105}
106
107/// Efficiently create an [ArrayData] from one or more existing [ArrayData]s by
108/// copying chunks.

Callers 1

with_capacitiesMethod · 0.85

Calls 8

resize_for_bitsFunction · 0.85
set_bitsFunction · 0.85
set_bitFunction · 0.85
validityMethod · 0.80
null_bufferMethod · 0.80
nullsMethod · 0.45
as_slice_mutMethod · 0.45
offsetMethod · 0.45

Tested by

no test coverage detected