This is an automated email from the ASF dual-hosted git repository.
tustvold pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git
The following commit(s) were added to refs/heads/master by this push:
new 7d465b87ccd Expose the null buffer of every builder that has one
(#5754)
7d465b87ccd is described below
commit 7d465b87ccddbff7696e52481de41d8d2bbe7d4b
Author: Hadrien G <[email protected]>
AuthorDate: Mon May 13 13:14:10 2024 +0200
Expose the null buffer of every builder that has one (#5754)
---
arrow-array/src/builder/fixed_size_binary_builder.rs | 5 +++++
arrow-array/src/builder/fixed_size_list_builder.rs | 5 +++++
arrow-array/src/builder/generic_bytes_dictionary_builder.rs | 5 +++++
arrow-array/src/builder/generic_bytes_view_builder.rs | 5 +++++
arrow-array/src/builder/generic_list_builder.rs | 5 +++++
arrow-array/src/builder/map_builder.rs | 5 +++++
arrow-array/src/builder/primitive_dictionary_builder.rs | 5 +++++
arrow-array/src/builder/struct_builder.rs | 5 +++++
8 files changed, 40 insertions(+)
diff --git a/arrow-array/src/builder/fixed_size_binary_builder.rs
b/arrow-array/src/builder/fixed_size_binary_builder.rs
index 132c2e1939b..65072a09f60 100644
--- a/arrow-array/src/builder/fixed_size_binary_builder.rs
+++ b/arrow-array/src/builder/fixed_size_binary_builder.rs
@@ -115,6 +115,11 @@ impl FixedSizeBinaryBuilder {
let array_data = unsafe { array_data_builder.build_unchecked() };
FixedSizeBinaryArray::from(array_data)
}
+
+ /// Returns the current null buffer as a slice
+ pub fn validity_slice(&self) -> Option<&[u8]> {
+ self.null_buffer_builder.as_slice()
+ }
}
impl ArrayBuilder for FixedSizeBinaryBuilder {
diff --git a/arrow-array/src/builder/fixed_size_list_builder.rs
b/arrow-array/src/builder/fixed_size_list_builder.rs
index f65947bfff3..5dff6765068 100644
--- a/arrow-array/src/builder/fixed_size_list_builder.rs
+++ b/arrow-array/src/builder/fixed_size_list_builder.rs
@@ -208,6 +208,11 @@ where
FixedSizeListArray::new(field, self.list_len, values, nulls)
}
+
+ /// Returns the current null buffer as a slice
+ pub fn validity_slice(&self) -> Option<&[u8]> {
+ self.null_buffer_builder.as_slice()
+ }
}
#[cfg(test)]
diff --git a/arrow-array/src/builder/generic_bytes_dictionary_builder.rs
b/arrow-array/src/builder/generic_bytes_dictionary_builder.rs
index 198d4fcbeb2..285a4f035e2 100644
--- a/arrow-array/src/builder/generic_bytes_dictionary_builder.rs
+++ b/arrow-array/src/builder/generic_bytes_dictionary_builder.rs
@@ -299,6 +299,11 @@ where
DictionaryArray::from(unsafe { builder.build_unchecked() })
}
+
+ /// Returns the current null buffer as a slice
+ pub fn validity_slice(&self) -> Option<&[u8]> {
+ self.keys_builder.validity_slice()
+ }
}
impl<K: ArrowDictionaryKeyType, T: ByteArrayType, V: AsRef<T::Native>>
Extend<Option<V>>
diff --git a/arrow-array/src/builder/generic_bytes_view_builder.rs
b/arrow-array/src/builder/generic_bytes_view_builder.rs
index 9accb932ae2..d043bda98ce 100644
--- a/arrow-array/src/builder/generic_bytes_view_builder.rs
+++ b/arrow-array/src/builder/generic_bytes_view_builder.rs
@@ -146,6 +146,11 @@ impl<T: ByteViewType + ?Sized> GenericByteViewBuilder<T> {
// SAFETY: valid by construction
unsafe { GenericByteViewArray::new_unchecked(views, completed, nulls) }
}
+
+ /// Returns the current null buffer as a slice
+ pub fn validity_slice(&self) -> Option<&[u8]> {
+ self.null_buffer_builder.as_slice()
+ }
}
impl<T: ByteViewType + ?Sized> Default for GenericByteViewBuilder<T> {
diff --git a/arrow-array/src/builder/generic_list_builder.rs
b/arrow-array/src/builder/generic_list_builder.rs
index d6fff12e1ab..6ff5f20df68 100644
--- a/arrow-array/src/builder/generic_list_builder.rs
+++ b/arrow-array/src/builder/generic_list_builder.rs
@@ -326,6 +326,11 @@ where
pub fn offsets_slice(&self) -> &[OffsetSize] {
self.offsets_builder.as_slice()
}
+
+ /// Returns the current null buffer as a slice
+ pub fn validity_slice(&self) -> Option<&[u8]> {
+ self.null_buffer_builder.as_slice()
+ }
}
impl<O, B, V, E> Extend<Option<V>> for GenericListBuilder<O, B>
diff --git a/arrow-array/src/builder/map_builder.rs
b/arrow-array/src/builder/map_builder.rs
index b69dcac7842..1d89d427aae 100644
--- a/arrow-array/src/builder/map_builder.rs
+++ b/arrow-array/src/builder/map_builder.rs
@@ -226,6 +226,11 @@ impl<K: ArrayBuilder, V: ArrayBuilder> MapBuilder<K, V> {
MapArray::from(array_data)
}
+
+ /// Returns the current null buffer as a slice
+ pub fn validity_slice(&self) -> Option<&[u8]> {
+ self.null_buffer_builder.as_slice()
+ }
}
impl<K: ArrayBuilder, V: ArrayBuilder> ArrayBuilder for MapBuilder<K, V> {
diff --git a/arrow-array/src/builder/primitive_dictionary_builder.rs
b/arrow-array/src/builder/primitive_dictionary_builder.rs
index a64ecf0caa1..a764fa4c29c 100644
--- a/arrow-array/src/builder/primitive_dictionary_builder.rs
+++ b/arrow-array/src/builder/primitive_dictionary_builder.rs
@@ -302,6 +302,11 @@ where
pub fn values_slice_mut(&mut self) -> &mut [V::Native] {
self.values_builder.values_slice_mut()
}
+
+ /// Returns the current null buffer as a slice
+ pub fn validity_slice(&self) -> Option<&[u8]> {
+ self.keys_builder.validity_slice()
+ }
}
impl<K: ArrowDictionaryKeyType, P: ArrowPrimitiveType>
Extend<Option<P::Native>>
diff --git a/arrow-array/src/builder/struct_builder.rs
b/arrow-array/src/builder/struct_builder.rs
index 46202bfa395..c0e49b939f2 100644
--- a/arrow-array/src/builder/struct_builder.rs
+++ b/arrow-array/src/builder/struct_builder.rs
@@ -381,6 +381,11 @@ impl StructBuilder {
}
});
}
+
+ /// Returns the current null buffer as a slice
+ pub fn validity_slice(&self) -> Option<&[u8]> {
+ self.null_buffer_builder.as_slice()
+ }
}
#[cfg(test)]