pub struct CoalesceBatchesExec { /* private fields */ }
Expand description
CoalesceBatchesExec
combines small batches into larger batches for more
efficient vectorized processing by later operators.
The operator buffers batches until it collects target_batch_size
rows and
then emits a single concatenated batch. When only a limited number of rows
are necessary (specified by the fetch
parameter), the operator will stop
buffering and returns the final batch once the number of collected rows
reaches the fetch
value.
See BatchCoalescer
for more information
Implementations§
Source§impl CoalesceBatchesExec
impl CoalesceBatchesExec
Sourcepub fn new(
input: Arc<dyn ExecutionPlan>,
target_batch_size: usize,
) -> CoalesceBatchesExec
pub fn new( input: Arc<dyn ExecutionPlan>, target_batch_size: usize, ) -> CoalesceBatchesExec
Create a new CoalesceBatchesExec
Sourcepub fn with_fetch(self, fetch: Option<usize>) -> CoalesceBatchesExec
pub fn with_fetch(self, fetch: Option<usize>) -> CoalesceBatchesExec
Update fetch with the argument
Sourcepub fn input(&self) -> &Arc<dyn ExecutionPlan>
pub fn input(&self) -> &Arc<dyn ExecutionPlan>
The input plan
Sourcepub fn target_batch_size(&self) -> usize
pub fn target_batch_size(&self) -> usize
Minimum number of rows for coalesces batches
Trait Implementations§
Source§impl Clone for CoalesceBatchesExec
impl Clone for CoalesceBatchesExec
Source§fn clone(&self) -> CoalesceBatchesExec
fn clone(&self) -> CoalesceBatchesExec
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for CoalesceBatchesExec
impl Debug for CoalesceBatchesExec
Source§impl DisplayAs for CoalesceBatchesExec
impl DisplayAs for CoalesceBatchesExec
Source§impl ExecutionPlan for CoalesceBatchesExec
impl ExecutionPlan for CoalesceBatchesExec
Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Return a reference to Any that can be used for downcasting
Source§fn name(&self) -> &'static str
fn name(&self) -> &'static str
Short name for the ExecutionPlan, such as ‘DataSourceExec’. Read more
Source§fn properties(&self) -> &PlanProperties
fn properties(&self) -> &PlanProperties
Return properties of the output of the
ExecutionPlan
, such as output
ordering(s), partitioning information etc. Read moreSource§fn children(&self) -> Vec<&Arc<dyn ExecutionPlan>>
fn children(&self) -> Vec<&Arc<dyn ExecutionPlan>>
Get a list of children
ExecutionPlan
s that act as inputs to this plan.
The returned list will be empty for leaf nodes such as scans, will contain
a single value for unary nodes, or two values for binary nodes (such as
joins).Source§fn maintains_input_order(&self) -> Vec<bool>
fn maintains_input_order(&self) -> Vec<bool>
Returns
false
if this ExecutionPlan
’s implementation may reorder
rows within or between partitions. Read moreSource§fn benefits_from_input_partitioning(&self) -> Vec<bool>
fn benefits_from_input_partitioning(&self) -> Vec<bool>
Specifies whether the
ExecutionPlan
benefits from increased
parallelization at its input for each child. Read moreSource§fn with_new_children(
self: Arc<CoalesceBatchesExec>,
children: Vec<Arc<dyn ExecutionPlan>>,
) -> Result<Arc<dyn ExecutionPlan>, DataFusionError>
fn with_new_children( self: Arc<CoalesceBatchesExec>, children: Vec<Arc<dyn ExecutionPlan>>, ) -> Result<Arc<dyn ExecutionPlan>, DataFusionError>
Returns a new
ExecutionPlan
where all existing children were replaced
by the children
, in orderSource§fn execute(
&self,
partition: usize,
context: Arc<TaskContext>,
) -> Result<Pin<Box<dyn RecordBatchStream<Item = Result<RecordBatch, DataFusionError>> + Send>>, DataFusionError>
fn execute( &self, partition: usize, context: Arc<TaskContext>, ) -> Result<Pin<Box<dyn RecordBatchStream<Item = Result<RecordBatch, DataFusionError>> + Send>>, DataFusionError>
Source§fn metrics(&self) -> Option<MetricsSet>
fn metrics(&self) -> Option<MetricsSet>
Return a snapshot of the set of
Metric
s for this
ExecutionPlan
. If no Metric
s are available, return None. Read moreSource§fn statistics(&self) -> Result<Statistics, DataFusionError>
fn statistics(&self) -> Result<Statistics, DataFusionError>
👎Deprecated since 48.0.0: Use
partition_statistics
method insteadReturns statistics for this
ExecutionPlan
node. If statistics are not
available, should return Statistics::new_unknown
(the default), not
an error. Read moreSource§fn partition_statistics(
&self,
partition: Option<usize>,
) -> Result<Statistics, DataFusionError>
fn partition_statistics( &self, partition: Option<usize>, ) -> Result<Statistics, DataFusionError>
Returns statistics for a specific partition of this
ExecutionPlan
node.
If statistics are not available, should return Statistics::new_unknown
(the default), not an error.
If partition
is None
, it returns statistics for the entire plan.Source§fn with_fetch(&self, limit: Option<usize>) -> Option<Arc<dyn ExecutionPlan>>
fn with_fetch(&self, limit: Option<usize>) -> Option<Arc<dyn ExecutionPlan>>
Returns a fetching variant of this
ExecutionPlan
node, if it supports
fetch limits. Returns None
otherwise.Source§fn fetch(&self) -> Option<usize>
fn fetch(&self) -> Option<usize>
Gets the fetch count for the operator,
None
means there is no fetch.Source§fn cardinality_effect(&self) -> CardinalityEffect
fn cardinality_effect(&self) -> CardinalityEffect
Gets the effect on cardinality, if known
Source§fn gather_filters_for_pushdown(
&self,
parent_filters: Vec<Arc<dyn PhysicalExpr>>,
_config: &ConfigOptions,
) -> Result<FilterDescription, DataFusionError>
fn gather_filters_for_pushdown( &self, parent_filters: Vec<Arc<dyn PhysicalExpr>>, _config: &ConfigOptions, ) -> Result<FilterDescription, DataFusionError>
Collect filters that this node can push down to its children.
Filters that are being pushed down from parents are passed in,
and the node may generate additional filters to push down.
For example, given the plan FilterExec -> HashJoinExec -> DataSourceExec,
what will happen is that we recurse down the plan calling
ExecutionPlan::gather_filters_for_pushdown
: Read moreSource§fn handle_child_pushdown_result(
&self,
child_pushdown_result: ChildPushdownResult,
_config: &ConfigOptions,
) -> Result<FilterPushdownPropagation<Arc<dyn ExecutionPlan>>, DataFusionError>
fn handle_child_pushdown_result( &self, child_pushdown_result: ChildPushdownResult, _config: &ConfigOptions, ) -> Result<FilterPushdownPropagation<Arc<dyn ExecutionPlan>>, DataFusionError>
Handle the result of a child pushdown.
This is called as we recurse back up the plan tree after recursing down and calling
ExecutionPlan::gather_filters_for_pushdown
.
Once we know what the result of pushing down filters into children is we ask the current node what it wants to do with that result.
For a DataSourceExec
that may be absorbing the filters to apply them during the scan phase
(also known as late materialization).
A FilterExec
may absorb any filters its children could not absorb, or if there are no filters left it
may remove itself from the plan altogether.
It combines both ChildPushdownResult::parent_filters
and ChildPushdownResult::self_filters
into a single
predicate and replaces it’s own predicate.
Then it passes PredicateSupport::Supported
for each parent predicate to the parent.
A HashJoinExec
may ignore the pushdown result since it needs to apply the filters as part of the join anyhow.
It passes ChildPushdownResult::parent_filters
back up to it’s parents wrapped in FilterPushdownPropagation::transparent
and ChildPushdownResult::self_filters
is discarded. Read moreSource§fn static_name() -> &'static strwhere
Self: Sized,
fn static_name() -> &'static strwhere
Self: Sized,
Short name for the ExecutionPlan, such as ‘DataSourceExec’.
Like
name
but can be called without an instance.Source§fn check_invariants(
&self,
_check: InvariantLevel,
) -> Result<(), DataFusionError>
fn check_invariants( &self, _check: InvariantLevel, ) -> Result<(), DataFusionError>
Returns an error if this individual node does not conform to its invariants.
These invariants are typically only checked in debug mode. Read more
Source§fn required_input_distribution(&self) -> Vec<Distribution>
fn required_input_distribution(&self) -> Vec<Distribution>
Specifies the data distribution requirements for all the
children for this
ExecutionPlan
, By default it’s [Distribution::UnspecifiedDistribution] for each child,Source§fn required_input_ordering(&self) -> Vec<Option<LexRequirement>>
fn required_input_ordering(&self) -> Vec<Option<LexRequirement>>
Specifies the ordering required for all of the children of this
ExecutionPlan
. Read moreSource§fn repartitioned(
&self,
_target_partitions: usize,
_config: &ConfigOptions,
) -> Result<Option<Arc<dyn ExecutionPlan>>, DataFusionError>
fn repartitioned( &self, _target_partitions: usize, _config: &ConfigOptions, ) -> Result<Option<Arc<dyn ExecutionPlan>>, DataFusionError>
If supported, attempt to increase the partitioning of this
ExecutionPlan
to
produce target_partitions
partitions. Read moreSource§fn supports_limit_pushdown(&self) -> bool
fn supports_limit_pushdown(&self) -> bool
Source§fn try_swapping_with_projection(
&self,
_projection: &ProjectionExec,
) -> Result<Option<Arc<dyn ExecutionPlan>>, DataFusionError>
fn try_swapping_with_projection( &self, _projection: &ProjectionExec, ) -> Result<Option<Arc<dyn ExecutionPlan>>, DataFusionError>
Attempts to push down the given projection into the input of this
ExecutionPlan
. Read moreAuto Trait Implementations§
impl Freeze for CoalesceBatchesExec
impl !RefUnwindSafe for CoalesceBatchesExec
impl Send for CoalesceBatchesExec
impl Sync for CoalesceBatchesExec
impl Unpin for CoalesceBatchesExec
impl !UnwindSafe for CoalesceBatchesExec
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
Converts
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>
Converts
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