pub struct BoundedWindowAggExec {
pub input_order_mode: InputOrderMode,
/* private fields */
}Expand description
Window execution plan
Fields§
§input_order_mode: InputOrderModeDescribes how the input is ordered relative to the partition keys
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 with_state_observer(
self,
observer: Option<Arc<dyn WindowStateObserver>>,
) -> Result<Self>
pub fn with_state_observer( self, observer: Option<Arc<dyn WindowStateObserver>>, ) -> Result<Self>
Install (or clear) a WindowStateObserver that receives each
PARTITION BY group’s finalized window state at partition close.
Errors when observer is Some and any window expression on this
exec has a non-ever-expanding frame (i.e. its start bound is not
UNBOUNDED PRECEDING). Those frames use SlidingAggregateWindowExpr
under the hood, whose accumulator calls retract_batch — at
partition close the accumulator holds only the last frame’s rows,
not the partition aggregate, so the observed state would silently
misrepresent the group.
Sourcepub fn state_observer(&self) -> Option<&Arc<dyn WindowStateObserver>>
pub fn state_observer(&self) -> Option<&Arc<dyn WindowStateObserver>>
The currently-installed WindowStateObserver, if any. Optimizer
rules that rebuild this exec via
crate::windows::get_best_fitting_window or a direct try_new
call must read this and reinstall it on the new exec, otherwise a
caller-installed observer is silently dropped by the rewrite.
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
pub fn partition_keys(&self) -> Vec<Arc<dyn PhysicalExpr>>
Trait Implementations§
Source§impl Clone for BoundedWindowAggExec
impl Clone for BoundedWindowAggExec
Source§fn clone(&self) -> BoundedWindowAggExec
fn clone(&self) -> BoundedWindowAggExec
1.0.0 (const: unstable) · 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 properties(&self) -> &Arc<PlanProperties> ⓘ
fn properties(&self) -> &Arc<PlanProperties> ⓘ
Return a reference to Any that can be used for downcasting
Source§fn name(&self) -> &'static str
fn name(&self) -> &'static str
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 apply_expressions(
&self,
f: &mut dyn FnMut(&Arc<dyn PhysicalExpr>) -> Result<TreeNodeRecursion>,
) -> Result<TreeNodeRecursion>
fn apply_expressions( &self, f: &mut dyn FnMut(&Arc<dyn PhysicalExpr>) -> Result<TreeNodeRecursion>, ) -> Result<TreeNodeRecursion>
f to each root expression that this node owns and uses
during execution, either by evaluating it or updating it dynamically. Read moreSource§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>
Use input_distribution_requirements
Source§fn input_distribution_requirements(&self) -> InputDistributionRequirements
fn input_distribution_requirements(&self) -> InputDistributionRequirements
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 replace_children(
self: Arc<Self>,
children: Vec<Arc<dyn ExecutionPlan>>,
options: ReplaceChildrenOptions,
) -> Result<Arc<dyn ExecutionPlan>>
fn replace_children( self: Arc<Self>, children: Vec<Arc<dyn ExecutionPlan>>, options: ReplaceChildrenOptions, ) -> Result<Arc<dyn ExecutionPlan>>
Source§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>>
Use ExecutionPlan::replace_children with ReplaceChildrenOptions
Source§fn with_new_children_and_same_properties(
self: Arc<Self>,
children: Vec<Arc<dyn ExecutionPlan>>,
) -> Result<Arc<dyn ExecutionPlan>>
fn with_new_children_and_same_properties( self: Arc<Self>, children: Vec<Arc<dyn ExecutionPlan>>, ) -> Result<Arc<dyn ExecutionPlan>>
Use ExecutionPlan::replace_children with ReplaceChildrenOptions
ExecutionPlan::replace_children instead.Source§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 child_stats_requests(&self, partition: Option<usize>) -> Vec<ChildStats>
fn child_stats_requests(&self, partition: Option<usize>) -> Vec<ChildStats>
StatisticsContext should resolve
before calling Self::statistics_from_inputs. Read moreSource§fn statistics_from_inputs(
&self,
input_stats: &[Arc<Statistics>],
_args: &StatisticsArgs,
) -> Result<Arc<Statistics>>
fn statistics_from_inputs( &self, input_stats: &[Arc<Statistics>], _args: &StatisticsArgs, ) -> Result<Arc<Statistics>>
ExecutionPlan node,
given pre-computed child statistics. Read moreSource§fn cardinality_effect(&self) -> CardinalityEffect
fn cardinality_effect(&self) -> CardinalityEffect
Source§fn try_to_proto(
&self,
ctx: &ExecutionPlanEncodeCtx<'_>,
) -> Result<Option<PhysicalPlanNode>>
fn try_to_proto( &self, ctx: &ExecutionPlanEncodeCtx<'_>, ) -> Result<Option<PhysicalPlanNode>>
proto only.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 downcast_delegate(&self) -> Option<&dyn ExecutionPlan>
fn downcast_delegate(&self) -> Option<&dyn ExecutionPlan>
ExecutionPlan downcast identity. Read moreSource§fn check_invariants(&self, check: InvariantLevel) -> Result<()>
fn check_invariants(&self, check: InvariantLevel) -> Result<()>
Source§fn dynamic_expressions_produced(&self) -> Vec<Arc<dyn PhysicalExpr>>
fn dynamic_expressions_produced(&self) -> Vec<Arc<dyn PhysicalExpr>>
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 partition_statistics(
&self,
partition: Option<usize>,
) -> Result<Arc<Statistics>>
fn partition_statistics( &self, partition: Option<usize>, ) -> Result<Arc<Statistics>>
Use StatisticsContext::compute instead
ExecutionPlan node. 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. Read moreSource§fn fetch(&self) -> Option<usize>
fn fetch(&self) -> Option<usize>
None means there is no fetch.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>>>
Source§fn with_new_state(
&self,
_state: Arc<dyn Any + Send + Sync>,
) -> Option<Arc<dyn ExecutionPlan>>
fn with_new_state( &self, _state: Arc<dyn Any + Send + Sync>, ) -> Option<Arc<dyn ExecutionPlan>>
Source§fn try_pushdown_sort(
&self,
_order: &[PhysicalSortExpr],
) -> Result<SortOrderPushdownResult<Arc<dyn ExecutionPlan>>>
fn try_pushdown_sort( &self, _order: &[PhysicalSortExpr], ) -> Result<SortOrderPushdownResult<Arc<dyn ExecutionPlan>>>
Source§fn with_preserve_order(
&self,
_preserve_order: bool,
) -> Option<Arc<dyn ExecutionPlan>>
fn with_preserve_order( &self, _preserve_order: bool, ) -> Option<Arc<dyn ExecutionPlan>>
ExecutionPlan that is aware of order-sensitivity. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for BoundedWindowAggExec
impl !UnwindSafe for BoundedWindowAggExec
impl Freeze for BoundedWindowAggExec
impl Send for BoundedWindowAggExec
impl Sync for BoundedWindowAggExec
impl Unpin for BoundedWindowAggExec
impl UnsafeUnpin 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,
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