pub struct BoundedWindowAggExec {
input: Arc<dyn ExecutionPlan>,
window_expr: Vec<Arc<dyn WindowExpr>>,
schema: SchemaRef,
metrics: ExecutionPlanMetricsSet,
pub input_order_mode: InputOrderMode,
ordered_partition_by_indices: Vec<usize>,
cache: PlanProperties,
can_repartition: bool,
}Expand description
Window execution plan
Fields§
§input: Arc<dyn ExecutionPlan>Input plan
window_expr: Vec<Arc<dyn WindowExpr>>Window function expression
schema: SchemaRefSchema after the window is run
metrics: ExecutionPlanMetricsSetExecution metrics
input_order_mode: InputOrderModeDescribes how the input is ordered relative to the partition keys
ordered_partition_by_indices: Vec<usize>Partition by indices that define ordering
cache: PlanPropertiesCache holding plan properties like equivalences, output partitioning etc.
can_repartition: boolIf can_rerepartition is false, partition_keys is always empty.
Implementations§
Source§impl BoundedWindowAggExec
impl BoundedWindowAggExec
Sourcepub fn try_new(
window_expr: Vec<Arc<dyn WindowExpr>>,
input: Arc<dyn ExecutionPlan>,
input_order_mode: InputOrderMode,
can_repartition: bool,
) -> Result<Self>
pub fn try_new( window_expr: Vec<Arc<dyn WindowExpr>>, input: Arc<dyn ExecutionPlan>, input_order_mode: InputOrderMode, can_repartition: bool, ) -> Result<Self>
Create a new execution plan for window aggregates
Sourcepub fn window_expr(&self) -> &[Arc<dyn WindowExpr>]
pub fn window_expr(&self) -> &[Arc<dyn WindowExpr>]
Window expressions
Sourcepub fn input(&self) -> &Arc<dyn ExecutionPlan>
pub fn input(&self) -> &Arc<dyn ExecutionPlan>
Input plan
Sourcepub fn partition_by_sort_keys(&self) -> Result<Vec<PhysicalSortExpr>>
pub fn partition_by_sort_keys(&self) -> Result<Vec<PhysicalSortExpr>>
Return the output sort order of partition keys: For example OVER(PARTITION BY a, ORDER BY b) -> would give sorting of the column a
Sourcefn get_search_algo(&self) -> Result<Box<dyn PartitionSearcher>>
fn get_search_algo(&self) -> Result<Box<dyn PartitionSearcher>>
Initializes the appropriate PartitionSearcher implementation from
the state.
Sourcefn compute_properties(
input: &Arc<dyn ExecutionPlan>,
schema: &SchemaRef,
window_exprs: &[Arc<dyn WindowExpr>],
) -> Result<PlanProperties>
fn compute_properties( input: &Arc<dyn ExecutionPlan>, schema: &SchemaRef, window_exprs: &[Arc<dyn WindowExpr>], ) -> Result<PlanProperties>
This function creates the cache object that stores the plan properties such as schema, equivalence properties, ordering, partitioning, etc.
pub fn partition_keys(&self) -> Vec<Arc<dyn PhysicalExpr>>
fn statistics_helper(&self, statistics: Statistics) -> Result<Statistics>
Trait Implementations§
Source§impl Clone for BoundedWindowAggExec
impl Clone for BoundedWindowAggExec
Source§fn clone(&self) -> BoundedWindowAggExec
fn clone(&self) -> BoundedWindowAggExec
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for BoundedWindowAggExec
impl Debug for BoundedWindowAggExec
Source§impl DisplayAs for BoundedWindowAggExec
impl DisplayAs for BoundedWindowAggExec
Source§impl ExecutionPlan for BoundedWindowAggExec
impl ExecutionPlan for BoundedWindowAggExec
Source§fn name(&self) -> &'static str
fn name(&self) -> &'static str
Source§fn properties(&self) -> &PlanProperties
fn properties(&self) -> &PlanProperties
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>>
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 required_input_ordering(&self) -> Vec<Option<OrderingRequirements>>
fn required_input_ordering(&self) -> Vec<Option<OrderingRequirements>>
ExecutionPlan. 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 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 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, in 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>
partition_statistics method insteadExecutionPlan 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>
fn partition_statistics(&self, partition: Option<usize>) -> Result<Statistics>
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 static_name() -> &'static strwhere
Self: Sized,
fn static_name() -> &'static strwhere
Self: Sized,
name but can be called without an instance.Source§fn check_invariants(&self, check: InvariantLevel) -> Result<()>
fn check_invariants(&self, check: InvariantLevel) -> Result<()>
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 reset_state(self: Arc<Self>) -> Result<Arc<dyn ExecutionPlan>>
fn reset_state(self: Arc<Self>) -> Result<Arc<dyn ExecutionPlan>>
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 moreSource§fn supports_limit_pushdown(&self) -> bool
fn supports_limit_pushdown(&self) -> bool
Source§fn with_fetch(&self, _limit: Option<usize>) -> Option<Arc<dyn ExecutionPlan>>
fn with_fetch(&self, _limit: Option<usize>) -> Option<Arc<dyn ExecutionPlan>>
ExecutionPlan node, if it supports
fetch limits. Returns None otherwise.Source§fn fetch(&self) -> Option<usize>
fn fetch(&self) -> Option<usize>
None means there is no fetch.Source§fn cardinality_effect(&self) -> CardinalityEffect
fn cardinality_effect(&self) -> CardinalityEffect
Source§fn try_swapping_with_projection(
&self,
_projection: &ProjectionExec,
) -> Result<Option<Arc<dyn ExecutionPlan>>>
fn try_swapping_with_projection( &self, _projection: &ProjectionExec, ) -> Result<Option<Arc<dyn ExecutionPlan>>>
ExecutionPlan. Read moreSource§fn gather_filters_for_pushdown(
&self,
_phase: FilterPushdownPhase,
parent_filters: Vec<Arc<dyn PhysicalExpr>>,
_config: &ConfigOptions,
) -> Result<FilterDescription>
fn gather_filters_for_pushdown( &self, _phase: FilterPushdownPhase, parent_filters: Vec<Arc<dyn PhysicalExpr>>, _config: &ConfigOptions, ) -> Result<FilterDescription>
ExecutionPlan::gather_filters_for_pushdown: Read moreSource§fn handle_child_pushdown_result(
&self,
_phase: FilterPushdownPhase,
child_pushdown_result: ChildPushdownResult,
_config: &ConfigOptions,
) -> Result<FilterPushdownPropagation<Arc<dyn ExecutionPlan>>>
fn handle_child_pushdown_result( &self, _phase: FilterPushdownPhase, child_pushdown_result: ChildPushdownResult, _config: &ConfigOptions, ) -> Result<FilterPushdownPropagation<Arc<dyn ExecutionPlan>>>
ExecutionPlan::gather_filters_for_pushdown.
It allows the current node to process the results of filter pushdown from
its children, deciding whether to absorb filters, modify the plan, or pass
filters back up to its parent. Read moreAuto Trait Implementations§
impl Freeze for BoundedWindowAggExec
impl !RefUnwindSafe for BoundedWindowAggExec
impl Send for BoundedWindowAggExec
impl Sync for BoundedWindowAggExec
impl Unpin for BoundedWindowAggExec
impl !UnwindSafe for BoundedWindowAggExec
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§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