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: BitmapBuilderVisibility
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: usizeThe initial capacity of ops and ArrayBuilders.
size: usizeNumber 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.
pub fn build_empty(data_types: Vec<DataType>) -> StreamChunk
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 take_inner(&mut self) -> StreamChunk
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> Downcast for Twhere
T: AsAny + ?Sized,
impl<T> Downcast for Twhere
T: AsAny + ?Sized,
§fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
Any.§fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
Any.§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.