pub struct StreamChunkBuilder {
ops: Vec<Op>,
column_builders: Vec<ArrayBuilderImpl>,
vis_builder: BitmapBuilder,
data_types: Vec<DataType>,
max_chunk_size: Option<usize>,
initial_capacity: usize,
size: usize,
}
Expand description
Build stream chunks with fixed chunk size from rows or records.
Fields§
§ops: Vec<Op>
operations in the data chunk to build
column_builders: Vec<ArrayBuilderImpl>
arrays in the data chunk to build
vis_builder: BitmapBuilder
Visibility
data_types: Vec<DataType>
Data types of columns
max_chunk_size: Option<usize>
Max number of rows in a chunk. When it’s Some(n)
, the chunk builder will, if necessary,
yield a chunk of which the size is strictly less than or equal to n
when appending records.
When it’s None
, the chunk builder will yield chunks only when take
is called.
initial_capacity: usize
The initial capacity of ops
and ArrayBuilder
s.
size: usize
Number of currently pending rows.
Implementations§
source§impl StreamChunkBuilder
impl StreamChunkBuilder
sourcepub fn new(max_chunk_size: usize, data_types: Vec<DataType>) -> Self
pub fn new(max_chunk_size: usize, data_types: Vec<DataType>) -> Self
Create a new StreamChunkBuilder
with a fixed max chunk size.
Note that in the case of ending with Update
, the builder may yield a chunk with size
max_chunk_size + 1
.
sourcepub fn unlimited(
data_types: Vec<DataType>,
initial_capacity: Option<usize>,
) -> Self
pub fn unlimited( data_types: Vec<DataType>, initial_capacity: Option<usize>, ) -> Self
Create a new StreamChunkBuilder
with unlimited chunk size.
The builder will only yield chunks when take
is called.
sourcepub fn append_iter<'a>(
&mut self,
op: Op,
iter: impl IntoIterator<Item = (usize, DatumRef<'a>)>,
) -> Option<StreamChunk>
pub fn append_iter<'a>( &mut self, op: Op, iter: impl IntoIterator<Item = (usize, DatumRef<'a>)>, ) -> Option<StreamChunk>
Append an iterator of output index and datum to the builder, return a chunk if the builder is full.
Note: the caller must ensure that each column occurs exactly once in iter
.
sourcepub fn append_row(&mut self, op: Op, row: impl Row) -> Option<StreamChunk>
pub fn append_row(&mut self, op: Op, row: impl Row) -> Option<StreamChunk>
Append a row to the builder, return a chunk if the builder is full.
sourcepub fn append_row_invisible(
&mut self,
op: Op,
row: impl Row,
) -> Option<StreamChunk>
pub fn append_row_invisible( &mut self, op: Op, row: impl Row, ) -> Option<StreamChunk>
Append an invisible row to the builder, return a chunk if the builder is full.
sourcepub fn append_record(&mut self, record: Record<impl Row>) -> Option<StreamChunk>
pub fn append_record(&mut self, record: Record<impl Row>) -> Option<StreamChunk>
Append a record to the builder, return a chunk if the builder is full.
sourcepub fn take(&mut self) -> Option<StreamChunk>
pub fn take(&mut self) -> Option<StreamChunk>
Take all the pending data and return a chunk. If there is no pending data, return None
.
Note that if this is an unlimited chunk builder, the only way to get a chunk is to call
take
.
fn append_iter_inner<'a, const VIS: bool>( &mut self, op: Op, iter: impl IntoIterator<Item = (usize, DatumRef<'a>)>, ) -> Option<StreamChunk>
Trait Implementations§
Auto Trait Implementations§
impl Freeze for StreamChunkBuilder
impl RefUnwindSafe for StreamChunkBuilder
impl Send for StreamChunkBuilder
impl Sync for StreamChunkBuilder
impl Unpin for StreamChunkBuilder
impl UnwindSafe for StreamChunkBuilder
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
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
§impl<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
type Err = Infallible
fn into_result(self) -> Result<T, <T as IntoResult<T>>::Err>
source§impl<M> MetricVecRelabelExt for M
impl<M> MetricVecRelabelExt for M
source§fn relabel(
self,
metric_level: MetricLevel,
relabel_threshold: MetricLevel,
) -> RelabeledMetricVec<M>
fn relabel( self, metric_level: MetricLevel, relabel_threshold: MetricLevel, ) -> RelabeledMetricVec<M>
RelabeledMetricVec::with_metric_level
.source§fn relabel_n(
self,
metric_level: MetricLevel,
relabel_threshold: MetricLevel,
relabel_num: usize,
) -> RelabeledMetricVec<M>
fn relabel_n( self, metric_level: MetricLevel, relabel_threshold: MetricLevel, relabel_num: usize, ) -> RelabeledMetricVec<M>
RelabeledMetricVec::with_metric_level_relabel_n
.source§fn relabel_debug_1(
self,
relabel_threshold: MetricLevel,
) -> RelabeledMetricVec<M>
fn relabel_debug_1( self, relabel_threshold: MetricLevel, ) -> RelabeledMetricVec<M>
RelabeledMetricVec::with_metric_level_relabel_n
with metric_level
set to
MetricLevel::Debug
and relabel_num
set to 1.