struct CollectLeftAccumulator {
expr: Arc<dyn PhysicalExpr>,
min: MinAccumulator,
max: MaxAccumulator,
}Expand description
Accumulator for collecting min/max bounds from build-side data during hash join.
This struct encapsulates the logic for progressively computing column bounds (minimum and maximum values) for a specific join key expression as batches are processed during the build phase of a hash join.
The bounds are used for dynamic filter pushdown optimization, where filters based on the actual data ranges can be pushed down to the probe side to eliminate unnecessary data early.
Fields§
§expr: Arc<dyn PhysicalExpr>The physical expression to evaluate for each batch
min: MinAccumulatorAccumulator for tracking the minimum value across all batches
max: MaxAccumulatorAccumulator for tracking the maximum value across all batches
Implementations§
Source§impl CollectLeftAccumulator
impl CollectLeftAccumulator
Sourcefn try_new(expr: Arc<dyn PhysicalExpr>, schema: &SchemaRef) -> Result<Self>
fn try_new(expr: Arc<dyn PhysicalExpr>, schema: &SchemaRef) -> Result<Self>
Sourcefn update_batch(&mut self, batch: &RecordBatch) -> Result<()>
fn update_batch(&mut self, batch: &RecordBatch) -> Result<()>
Sourcefn evaluate(self) -> Result<ColumnBounds>
fn evaluate(self) -> Result<ColumnBounds>
Finalizes the accumulation and returns the computed bounds.
Consumes self to extract the final min and max values from the accumulators.
§Returns
The ColumnBounds containing the minimum and maximum values observed
Auto Trait Implementations§
impl Freeze for CollectLeftAccumulator
impl !RefUnwindSafe for CollectLeftAccumulator
impl Send for CollectLeftAccumulator
impl Sync for CollectLeftAccumulator
impl Unpin for CollectLeftAccumulator
impl !UnwindSafe for CollectLeftAccumulator
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> 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> 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 more