Interface RelNodeVisitor<R>
- Type Parameters:
R- the return type produced by each visit method
- All Known Implementing Classes:
PrettyPrinter,RelAlgebraValidator,SchemaInferenceVisitor
RelNode sealed hierarchy.
Implement this interface to add a new traversal or transformation over
relational operation nodes without modifying the node classes themselves.
Because RelNode is sealed and exhaustive,
every permitted node type has a dedicated visit overload — the compiler
will flag any missing implementation.
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionvisit(AggregationNode node) Visits an aggregation (γ) node.visit(AntiJoinNode node) Visits an anti-join (▷) node.visit(AsOfJoinNode node) Visits an AS-OF temporal join (ASOF) node.visit(ClosureNode node) Visits a transitive-closure (CLOSURE/RCLOSURE) node.visit(ClusterNode node) Visits a connected-components (CLUSTER) node.visit(CompositionNode node) Visits a relational composition (∘) node.default RVisits a covering-reduction (COVER) node.visit(DifferenceNode node) Visits a set difference (−) node.visit(DistinctNode node) Visits a distinct (δ) node.visit(DivisionNode node) Visits a relational division (÷) node.visit(DownsampleNode node) Visits a time-series downsampling (DOWNSAMPLE) node.visit(EmptyRelationNode node) Visits an empty relation carrying another expression's heading (∅).default Rvisit(FixpointNode node) Visits a general-recursion fixpoint (FIX) node.visit(FullOuterJoinNode node) Visits a full outer join (⟗) node.visit(IntersectionNode node) Visits a set intersection (∩) node.visit(IntervalJoinNode node) Visits an interval join (IJOIN) node.default Rvisit(IterateNode node) Visits a replace-each-round iteration (ITERATE) node.default Rvisit(LateralJoinNode node) Visits a lateral (correlated) table-valued function join node.visit(LeftOuterJoinNode node) Visits a left outer join (⟕) node.Visits a limit (λ) node.visit(NaturalJoinNode node) Visits a natural join (⋈) node.visit(OptimizeNode node) Visits a declarative-optimisation (OPTIMIZE) node.visit(OuterUnionNode node) Visits an outer-union (⊔) node.visit(PairwiseUniversalNode node) Visits a pairwise-universal semi-join (USEMI) node.Visits a bounded variable-length path (PATH) node.Visits a row-pivoting (PIVOT) node.visit(ProductNode node) Visits a Cartesian product (×) node.visit(ProjectionNode node) Visits a projection (π) node.default Rvisit(RecursiveRefNode node) Visits a recursive-reference (FIX- orITERATE-bound name) node.visit(RelationFunctionCall node) Visits a table-valued (relation-returning) function call.visit(RelationNode node) Visits a base relation reference.visit(RenameNode node) Visits a rename (ρ) node.visit(ReservoirSampleNode node) Visits a reservoir (fixed-count) sampling (SAMPLE … ROWS) node.visit(RightOuterJoinNode node) Visits a right outer join (⟖) node.visit(SampleNode node) Visits a Bernoulli-sampling (SAMPLE) node.visit(SelectionNode node) Visits a selection (σ) node.visit(SemiJoinNode node) Visits a semi-join (⋉) node.visit(SessionizeNode node) Visits a gap-and-island / sessionization (SESSIONIZE) node.Visits a goal-seek (SOLVE) node.Visits a sort (τ) node.visit(SymmetricDifferenceNode node) Visits a symmetric-difference (∆) node.visit(ThetaJoinNode node) Visits a theta join (⨝) node.Visits a top-k-per-group (TOP) node.Visits an optimal-path extraction (TRACE) node.Visits an adjacency-to-forest nesting (TREE) node.visit(TruthRelationNode node) Visits a nullary truth-relation literal (UNIT/DEE or EMPTY/DUM).visit(UnionAllNode node) Visits a multiset union (⊎) node.Visits a set union (∪) node.visit(UniversalNode node) Visits a universal-quantification (∀) node.visit(UnnestNode node) Visits an unnest (μ) node.visit(UnpivotNode node) Visits a column-folding (UNPIVOT) node.default RVisits a lineage-reification (WHY) node.visit(WindowNode node) Visits a window (ROLLING / WINDOW) node.
-
Method Details
-
visit
Visits a base relation reference. -
visit
Visits a table-valued (relation-returning) function call. -
visit
Visits a nullary truth-relation literal (UNIT/DEE or EMPTY/DUM). -
visit
Visits an empty relation carrying another expression's heading (∅). -
visit
Visits a projection (π) node. -
visit
Visits a selection (σ) node. -
visit
Visits a rename (ρ) node. -
visit
Visits a natural join (⋈) node. -
visit
Visits a theta join (⨝) node. -
visit
Visits a left outer join (⟕) node. -
visit
Visits a right outer join (⟖) node. -
visit
Visits a full outer join (⟗) node. -
visit
Visits a semi-join (⋉) node. -
visit
Visits an anti-join (▷) node. -
visit
Visits a pairwise-universal semi-join (USEMI) node. -
visit
Visits an AS-OF temporal join (ASOF) node. -
visit
Visits an interval join (IJOIN) node. -
visit
Visits a Cartesian product (×) node. -
visit
Visits a set union (∪) node. -
visit
Visits a multiset union (⊎) node. -
visit
Visits an outer-union (⊔) node. -
visit
Visits a set difference (−) node. -
visit
Visits a set intersection (∩) node. -
visit
Visits a relational division (÷) node. -
visit
Visits a symmetric-difference (∆) node. -
visit
Visits a relational composition (∘) node. -
visit
Visits an aggregation (γ) node. -
visit
Visits a sort (τ) node. -
visit
Visits a limit (λ) node. -
visit
Visits a distinct (δ) node. -
visit
Visits an unnest (μ) node. -
visit
Visits a transitive-closure (CLOSURE/RCLOSURE) node. -
visit
Visits a connected-components (CLUSTER) node. -
visit
Visits a bounded variable-length path (PATH) node. -
visit
Visits an optimal-path extraction (TRACE) node. -
visit
Visits a universal-quantification (∀) node. -
visit
Visits a Bernoulli-sampling (SAMPLE) node. -
visit
Visits a reservoir (fixed-count) sampling (SAMPLE … ROWS) node. -
visit
Visits a goal-seek (SOLVE) node. -
visit
Visits a declarative-optimisation (OPTIMIZE) node. -
visit
Visits a top-k-per-group (TOP) node. -
visit
Visits a time-series downsampling (DOWNSAMPLE) node. -
visit
Visits a window (ROLLING / WINDOW) node. -
visit
Visits a gap-and-island / sessionization (SESSIONIZE) node. -
visit
Visits a column-folding (UNPIVOT) node. -
visit
Visits a row-pivoting (PIVOT) node. -
visit
Visits an adjacency-to-forest nesting (TREE) node. -
visit
Visits a covering-reduction (COVER) node.A
defaultthat throws rather than an abstract method: a visitor with no meaningful answer for a covering reduction inherits the failure instead of being forced to carry a stub. Visitors that do handle it — schema inference, validation, the executor — override this method. -
visit
Visits a general-recursion fixpoint (FIX) node.A
defaultthat throws rather than an abstract method: a visitor with no meaningful answer for a least fixpoint inherits the failure instead of being forced to carry a stub. Visitors that do handle it — schema inference, validation, the semi-naïve executor — override this method. -
visit
Visits a replace-each-round iteration (ITERATE) node.Provided as a
defaultthat throws — seevisit(FixpointNode). -
visit
Visits a recursive-reference (FIX- orITERATE-bound name) node.Provided as a
defaultthat throws — seevisit(FixpointNode). -
visit
Visits a lateral (correlated) table-valued function join node.A
defaultthat throws rather than an abstract method: a visitor with no meaningful answer for a correlated TVF join inherits the failure instead of being forced to carry a stub. Visitors that do handle it — schema inference, validation, the executor — override this method. -
visit
Visits a lineage-reification (WHY) node.A
defaultthat throws rather than an abstract method: a visitor with no meaningful answer for a lineage reification inherits the failure instead of being forced to carry a stub. Visitors that do handle it — schema inference, validation, cost, planning, execution — override this method.
-