pub struct Shape { /* private fields */ }Expand description
What a plan runs as.
Implementations§
Source§impl Shape
impl Shape
Sourcepub fn operators(&self) -> OperatorRef
pub fn operators(&self) -> OperatorRef
How many operators the tree has, which is at least one and is more than the plan has nodes whenever the plan has a node with two inputs in it.
Sourcepub fn operator(&self, node: NodeRef) -> OperatorRef
pub fn operator(&self, node: NodeRef) -> OperatorRef
The operator this node becomes.
§Panics
If the node is not reachable from the plan’s root, which is a node the arena is still holding after a rewrite replaced it.
Sourcepub fn operator_of(&self, node: NodeRef) -> Option<OperatorRef>
pub fn operator_of(&self, node: NodeRef) -> Option<OperatorRef>
The operator this node becomes, or none for a node the root does not reach.
The tolerant form of Shape::operator, for a caller walking the whole arena rather than
the tree, which is what somebody filling one fact in per operator ends up doing.
Sourcepub fn gathered(&self, node: NodeRef) -> Option<OperatorRef>
pub fn gathered(&self, node: NodeRef) -> Option<OperatorRef>
The operator holding the side of this node that has to finish first, if it has two inputs.
§Panics
The same as Shape::operator.
Sourcepub fn pipeline(&self, node: NodeRef) -> PipelineRef
pub fn pipeline(&self, node: NodeRef) -> PipelineRef
The pipeline this node runs in.
For a sink that is the pipeline it ends rather than the one above it, so a sort is in the pipeline that feeds it and the operator that reads the sorted rows is in the one above.
§Panics
The same as Shape::operator.
Sourcepub fn waits_for(&self, pipeline: PipelineRef) -> &[PipelineRef] ⓘ
pub fn waits_for(&self, pipeline: PipelineRef) -> &[PipelineRef] ⓘ
Sourcepub fn all(&self) -> impl Iterator<Item = PipelineRef>
pub fn all(&self) -> impl Iterator<Item = PipelineRef>
Every pipeline, from the root’s outwards.