diff --git a/arrow-array/src/builder/generic_bytes_builder.rs b/arrow-array/src/builder/generic_bytes_builder.rs index 0a83ff989d4d..a2d044e80890 100644 --- a/arrow-array/src/builder/generic_bytes_builder.rs +++ b/arrow-array/src/builder/generic_bytes_builder.rs @@ -231,16 +231,31 @@ impl GenericByteBuilder { self.value_builder.as_slice() } + /// Returns the current values buffer capacity, in bytes. + pub fn values_capacity(&self) -> usize { + self.value_builder.capacity() + } + /// Returns the current offsets buffer as a slice pub fn offsets_slice(&self) -> &[T::Offset] { self.offsets_builder.as_slice() } + /// Returns the current offsets buffer capacity, in offsets. + pub fn offsets_capacity(&self) -> usize { + self.offsets_builder.capacity() + } + /// Returns the current null buffer as a slice pub fn validity_slice(&self) -> Option<&[u8]> { self.null_buffer_builder.as_slice() } + /// Returns the current null buffer allocated capacity, in bytes. + pub fn validity_capacity(&self) -> usize { + self.null_buffer_builder.allocated_size() + } + /// Returns the current null buffer as a mutable slice pub fn validity_slice_mut(&mut self) -> Option<&mut [u8]> { self.null_buffer_builder.as_slice_mut() diff --git a/arrow-array/src/builder/generic_list_builder.rs b/arrow-array/src/builder/generic_list_builder.rs index 2f130baae945..f93625e8eb4c 100644 --- a/arrow-array/src/builder/generic_list_builder.rs +++ b/arrow-array/src/builder/generic_list_builder.rs @@ -355,10 +355,20 @@ where self.offsets_builder.as_slice() } + /// Returns the current offsets buffer capacity, in offsets. + pub fn offsets_capacity(&self) -> usize { + self.offsets_builder.capacity() + } + /// Returns the current null buffer as a slice pub fn validity_slice(&self) -> Option<&[u8]> { self.null_buffer_builder.as_slice() } + + /// Returns the current null buffer allocated capacity, in bytes. + pub fn validity_capacity(&self) -> usize { + self.null_buffer_builder.allocated_size() + } } impl Extend> for GenericListBuilder diff --git a/arrow-array/src/builder/primitive_builder.rs b/arrow-array/src/builder/primitive_builder.rs index dc96486bca6a..311ad8b100c4 100644 --- a/arrow-array/src/builder/primitive_builder.rs +++ b/arrow-array/src/builder/primitive_builder.rs @@ -361,6 +361,11 @@ impl PrimitiveBuilder { self.null_buffer_builder.as_slice() } + /// Returns the current null buffer allocated capacity, in bytes. + pub fn validity_capacity(&self) -> usize { + self.null_buffer_builder.allocated_size() + } + /// Returns the current null buffer as a mutable slice pub fn validity_slice_mut(&mut self) -> Option<&mut [u8]> { self.null_buffer_builder.as_slice_mut() diff --git a/arrow-array/src/builder/struct_builder.rs b/arrow-array/src/builder/struct_builder.rs index d299f7bf9d60..3d773864f504 100644 --- a/arrow-array/src/builder/struct_builder.rs +++ b/arrow-array/src/builder/struct_builder.rs @@ -314,6 +314,11 @@ impl StructBuilder { pub fn validity_slice(&self) -> Option<&[u8]> { self.null_buffer_builder.as_slice() } + + /// Returns the current null buffer allocated capacity, in bytes. + pub fn validity_capacity(&self) -> usize { + self.null_buffer_builder.allocated_size() + } } #[cfg(test)]