Struct datafusion_physical_plan::union::UnionExec
source · pub struct UnionExec { /* private fields */ }Expand description
UnionExec: UNION ALL execution plan.
UnionExec combines multiple inputs with the same schema by
concatenating the partitions. It does not mix or copy data within
or across partitions. Thus if the input partitions are sorted, the
output partitions of the union are also sorted.
For example, given a UnionExec of two inputs, with N
partitions, and M partitions, there will be N+M output
partitions. The first N output partitions are from Input 1
partitions, and then next M output partitions are from Input 2.
▲ ▲ ▲ ▲
│ │ │ │
Output │ ... │ │ │
Partitions │0 │N-1 │ N │N+M-1
(passes through ┌────┴───────┴───────────┴─────────┴───┐
the N+M input │ UnionExec │
partitions) │ │
└──────────────────────────────────────┘
▲
│
│
Input ┌────────┬─────┴────┬──────────┐
Partitions │ ... │ │ ... │
0 │ │ N-1 │ 0 │ M-1
┌────┴────────┴───┐ ┌───┴──────────┴───┐
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│Input 1 │ │Input 2 │
└─────────────────┘ └──────────────────┘
Implementations§
Trait Implementations§
source§impl ExecutionPlan for UnionExec
impl ExecutionPlan for UnionExec
source§fn unbounded_output(&self, children: &[bool]) -> Result<bool>
fn unbounded_output(&self, children: &[bool]) -> Result<bool>
Specifies whether this plan generates an infinite stream of records. If the plan does not support pipelining, but its input(s) are infinite, returns an error to indicate this.
source§fn output_partitioning(&self) -> Partitioning
fn output_partitioning(&self) -> Partitioning
Output of the union is the combination of all output partitions of the inputs
source§fn children(&self) -> Vec<Arc<dyn ExecutionPlan>>
fn children(&self) -> Vec<Arc<dyn ExecutionPlan>>
ExecutionPlans 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 output_ordering(&self) -> Option<&[PhysicalSortExpr]>
fn output_ordering(&self) -> Option<&[PhysicalSortExpr]>
ExecutionPlan within each partition is sorted,
returns Some(keys) with the description of how it was sorted. Read moresource§fn maintains_input_order(&self) -> Vec<bool>
fn maintains_input_order(&self) -> Vec<bool>
false if this ExecutionPlan’s implementation may reorder
rows within or between partitions. Read moresource§fn equivalence_properties(&self) -> EquivalenceProperties
fn equivalence_properties(&self) -> EquivalenceProperties
EquivalenceProperties within the plan. Read moresource§fn with_new_children(
self: Arc<Self>,
children: Vec<Arc<dyn ExecutionPlan>>
) -> Result<Arc<dyn ExecutionPlan>>
fn with_new_children( self: Arc<Self>, children: Vec<Arc<dyn ExecutionPlan>> ) -> Result<Arc<dyn ExecutionPlan>>
ExecutionPlan where all existing children were replaced
by the children, oi ordersource§fn execute(
&self,
partition: usize,
context: Arc<TaskContext>
) -> Result<SendableRecordBatchStream>
fn execute( &self, partition: usize, context: Arc<TaskContext> ) -> Result<SendableRecordBatchStream>
source§fn metrics(&self) -> Option<MetricsSet>
fn metrics(&self) -> Option<MetricsSet>
Metrics for this
ExecutionPlan. If no Metrics are available, return None. Read moresource§fn statistics(&self) -> Result<Statistics>
fn statistics(&self) -> Result<Statistics>
ExecutionPlan node. If statistics are not
available, should return Statistics::new_unknown (the default), not
an error.source§fn benefits_from_input_partitioning(&self) -> Vec<bool>
fn benefits_from_input_partitioning(&self) -> Vec<bool>
ExecutionPlan benefits from increased
parallelization at its input for each child. Read moresource§fn required_input_distribution(&self) -> Vec<Distribution>
fn required_input_distribution(&self) -> Vec<Distribution>
ExecutionPlan, By default it’s [Distribution::UnspecifiedDistribution] for each child,source§fn required_input_ordering(&self) -> Vec<Option<Vec<PhysicalSortRequirement>>>
fn required_input_ordering(&self) -> Vec<Option<Vec<PhysicalSortRequirement>>>
ExecutionPlan. Read moresource§fn repartitioned(
&self,
_target_partitions: usize,
_config: &ConfigOptions
) -> Result<Option<Arc<dyn ExecutionPlan>>>
fn repartitioned( &self, _target_partitions: usize, _config: &ConfigOptions ) -> Result<Option<Arc<dyn ExecutionPlan>>>
ExecutionPlan to
produce target_partitions partitions. Read more