Skip to content

Commit 78aff9c

Browse files
authored
update arrow-format (#5502)
1 parent 14bd53d commit 78aff9c

File tree

8 files changed

+641
-144
lines changed

8 files changed

+641
-144
lines changed

arrow-array/src/array/byte_view_array.rs

-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ use std::sync::Arc;
9393
/// └───┘
9494
/// ```
9595
/// [`GenericByteArray`]: crate::array::GenericByteArray
96-
9796
pub struct GenericByteViewArray<T: ByteViewType + ?Sized> {
9897
data_type: DataType,
9998
views: ScalarBuffer<u128>,

arrow-array/src/builder/generic_bytes_view_builder.rs

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ use crate::types::{BinaryViewType, ByteViewType, StringViewType};
2020
use crate::{ArrayRef, GenericByteViewArray};
2121
use arrow_buffer::{Buffer, BufferBuilder, NullBufferBuilder, ScalarBuffer};
2222
use arrow_data::ByteView;
23+
2324
use std::any::Any;
2425
use std::marker::PhantomData;
2526
use std::sync::Arc;

arrow-ipc/src/convert.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,7 @@ pub(crate) fn get_fb_field_type<'a>(
543543
.as_union_value(),
544544
children: Some(fbb.create_vector(&empty_fields[..])),
545545
},
546-
BinaryView | Utf8View => unimplemented!("BinaryView/Utf8View not implemented"),
546+
BinaryView | Utf8View => unimplemented!("unimplemented"),
547547
Utf8 => FBFieldType {
548548
type_type: crate::Type::Utf8,
549549
type_: crate::Utf8Builder::new(fbb).finish().as_union_value(),

arrow-ipc/src/gen/Message.rs

+51
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ use flatbuffers::EndianScalar;
2525
use std::{cmp::Ordering, mem};
2626
// automatically generated by the FlatBuffers compiler, do not modify
2727

28+
// @generated
29+
2830
#[deprecated(
2931
since = "2.0.0",
3032
note = "Use associated constants instead. This will no longer be generated in 2021."
@@ -636,6 +638,7 @@ impl<'a> RecordBatch<'a> {
636638
pub const VT_NODES: flatbuffers::VOffsetT = 6;
637639
pub const VT_BUFFERS: flatbuffers::VOffsetT = 8;
638640
pub const VT_COMPRESSION: flatbuffers::VOffsetT = 10;
641+
pub const VT_VARIADICBUFFERCOUNTS: flatbuffers::VOffsetT = 12;
639642

640643
#[inline]
641644
pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
@@ -648,6 +651,9 @@ impl<'a> RecordBatch<'a> {
648651
) -> flatbuffers::WIPOffset<RecordBatch<'bldr>> {
649652
let mut builder = RecordBatchBuilder::new(_fbb);
650653
builder.add_length(args.length);
654+
if let Some(x) = args.variadicBufferCounts {
655+
builder.add_variadicBufferCounts(x);
656+
}
651657
if let Some(x) = args.compression {
652658
builder.add_compression(x);
653659
}
@@ -720,6 +726,33 @@ impl<'a> RecordBatch<'a> {
720726
)
721727
}
722728
}
729+
/// Some types such as Utf8View are represented using a variable number of buffers.
730+
/// For each such Field in the pre-ordered flattened logical schema, there will be
731+
/// an entry in variadicBufferCounts to indicate the number of number of variadic
732+
/// buffers which belong to that Field in the current RecordBatch.
733+
///
734+
/// For example, the schema
735+
/// col1: Struct<alpha: Int32, beta: BinaryView, gamma: Float64>
736+
/// col2: Utf8View
737+
/// contains two Fields with variadic buffers so variadicBufferCounts will have
738+
/// two entries, the first counting the variadic buffers of `col1.beta` and the
739+
/// second counting `col2`'s.
740+
///
741+
/// This field may be omitted if and only if the schema contains no Fields with
742+
/// a variable number of buffers, such as BinaryView and Utf8View.
743+
#[inline]
744+
pub fn variadicBufferCounts(&self) -> Option<flatbuffers::Vector<'a, i64>> {
745+
// Safety:
746+
// Created from valid Table for this object
747+
// which contains a valid value in this slot
748+
unsafe {
749+
self._tab
750+
.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, i64>>>(
751+
RecordBatch::VT_VARIADICBUFFERCOUNTS,
752+
None,
753+
)
754+
}
755+
}
723756
}
724757

725758
impl flatbuffers::Verifiable for RecordBatch<'_> {
@@ -746,6 +779,11 @@ impl flatbuffers::Verifiable for RecordBatch<'_> {
746779
Self::VT_COMPRESSION,
747780
false,
748781
)?
782+
.visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, i64>>>(
783+
"variadicBufferCounts",
784+
Self::VT_VARIADICBUFFERCOUNTS,
785+
false,
786+
)?
749787
.finish();
750788
Ok(())
751789
}
@@ -755,6 +793,7 @@ pub struct RecordBatchArgs<'a> {
755793
pub nodes: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, FieldNode>>>,
756794
pub buffers: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, Buffer>>>,
757795
pub compression: Option<flatbuffers::WIPOffset<BodyCompression<'a>>>,
796+
pub variadicBufferCounts: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, i64>>>,
758797
}
759798
impl<'a> Default for RecordBatchArgs<'a> {
760799
#[inline]
@@ -764,6 +803,7 @@ impl<'a> Default for RecordBatchArgs<'a> {
764803
nodes: None,
765804
buffers: None,
766805
compression: None,
806+
variadicBufferCounts: None,
767807
}
768808
}
769809
}
@@ -800,6 +840,16 @@ impl<'a: 'b, 'b> RecordBatchBuilder<'a, 'b> {
800840
);
801841
}
802842
#[inline]
843+
pub fn add_variadicBufferCounts(
844+
&mut self,
845+
variadicBufferCounts: flatbuffers::WIPOffset<flatbuffers::Vector<'b, i64>>,
846+
) {
847+
self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(
848+
RecordBatch::VT_VARIADICBUFFERCOUNTS,
849+
variadicBufferCounts,
850+
);
851+
}
852+
#[inline]
803853
pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> RecordBatchBuilder<'a, 'b> {
804854
let start = _fbb.start_table();
805855
RecordBatchBuilder {
@@ -821,6 +871,7 @@ impl core::fmt::Debug for RecordBatch<'_> {
821871
ds.field("nodes", &self.nodes());
822872
ds.field("buffers", &self.buffers());
823873
ds.field("compression", &self.compression());
874+
ds.field("variadicBufferCounts", &self.variadicBufferCounts());
824875
ds.finish()
825876
}
826877
}

0 commit comments

Comments
 (0)