pub struct VariantArrayBuilder {
nulls: NullBufferBuilder,
metadata_buffer: Vec<u8>,
metadata_locations: Vec<(usize, usize)>,
value_buffer: Vec<u8>,
value_locations: Vec<(usize, usize)>,
fields: Fields,
}
Expand description
A builder for VariantArray
This builder is used to construct a VariantArray
and allows APIs for
adding metadata
This builder always creates a VariantArray
using [BinaryViewArray
] for both
the metadata and value fields.
§TODO
- Support shredding: https://github.com/apache/arrow-rs/issues/7895
§Example:
// Create a new VariantArrayBuilder with a capacity of 100 rows
let mut builder = VariantArrayBuilder::new(100);
// append variant values
builder.append_variant(Variant::from(42));
// append a null row
builder.append_null();
// append a pre-constructed metadata and value buffers
let (metadata, value) = {
let mut vb = VariantBuilder::new();
let mut obj = vb.new_object();
obj.insert("foo", "bar");
obj.finish().unwrap();
vb.finish()
};
builder.append_variant_buffers(&metadata, &value);
// create the final VariantArray
let variant_array = builder.build();
assert_eq!(variant_array.len(), 3);
// // Access the values
// row 1 is not null and is an integer
assert!(!variant_array.is_null(0));
assert_eq!(variant_array.value(0), Variant::from(42i32));
// row 1 is null
assert!(variant_array.is_null(1));
// row 2 is not null and is an object
assert!(!variant_array.is_null(2));
assert!(variant_array.value(2).as_object().is_some());
Fields§
§nulls: NullBufferBuilder
Nulls
metadata_buffer: Vec<u8>
buffer for all the metadata
metadata_locations: Vec<(usize, usize)>
(offset, len) pairs for locations of metadata in the buffer
value_buffer: Vec<u8>
buffer for values
value_locations: Vec<(usize, usize)>
(offset, len) pairs for locations of values in the buffer
fields: Fields
The fields of the final StructArray
TODO: 1) Add extension type metadata TODO: 2) Add support for shredding
Implementations§
Source§impl VariantArrayBuilder
impl VariantArrayBuilder
pub fn new(row_capacity: usize) -> Self
Sourcepub fn build(self) -> VariantArray
pub fn build(self) -> VariantArray
Build the final builder
Sourcepub fn append_null(&mut self)
pub fn append_null(&mut self)
Appends a null row to the builder.
Sourcepub fn append_variant(&mut self, variant: Variant<'_, '_>)
pub fn append_variant(&mut self, variant: Variant<'_, '_>)
Append the [Variant
] to the builder as the next row
Sourcepub fn append_variant_buffers(&mut self, metadata: &[u8], value: &[u8])
pub fn append_variant_buffers(&mut self, metadata: &[u8], value: &[u8])
Append a metadata and values buffer to the builder
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for VariantArrayBuilder
impl RefUnwindSafe for VariantArrayBuilder
impl Send for VariantArrayBuilder
impl Sync for VariantArrayBuilder
impl Unpin for VariantArrayBuilder
impl UnwindSafe for VariantArrayBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more