Interface RelNodeVisitor<R>

Type Parameters:
R - the return type produced by each visit method
All Known Implementing Classes:
PrettyPrinter, RelAlgebraValidator, SchemaInferenceVisitor

public interface RelNodeVisitor<R>
Visitor over the 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 Details

    • visit

      R visit(RelationNode node)
      Visits a base relation reference.
    • visit

      R visit(RelationFunctionCall node)
      Visits a table-valued (relation-returning) function call.
    • visit

      R visit(TruthRelationNode node)
      Visits a nullary truth-relation literal (UNIT/DEE or EMPTY/DUM).
    • visit

      R visit(EmptyRelationNode node)
      Visits an empty relation carrying another expression's heading (∅).
    • visit

      R visit(ProjectionNode node)
      Visits a projection (π) node.
    • visit

      R visit(SelectionNode node)
      Visits a selection (σ) node.
    • visit

      R visit(RenameNode node)
      Visits a rename (ρ) node.
    • visit

      R visit(NaturalJoinNode node)
      Visits a natural join (⋈) node.
    • visit

      R visit(ThetaJoinNode node)
      Visits a theta join (⨝) node.
    • visit

      R visit(LeftOuterJoinNode node)
      Visits a left outer join (⟕) node.
    • visit

      R visit(RightOuterJoinNode node)
      Visits a right outer join (⟖) node.
    • visit

      R visit(FullOuterJoinNode node)
      Visits a full outer join (⟗) node.
    • visit

      R visit(SemiJoinNode node)
      Visits a semi-join (⋉) node.
    • visit

      R visit(AntiJoinNode node)
      Visits an anti-join (▷) node.
    • visit

      R visit(PairwiseUniversalNode node)
      Visits a pairwise-universal semi-join (USEMI) node.
    • visit

      R visit(AsOfJoinNode node)
      Visits an AS-OF temporal join (ASOF) node.
    • visit

      R visit(IntervalJoinNode node)
      Visits an interval join (IJOIN) node.
    • visit

      R visit(ProductNode node)
      Visits a Cartesian product (×) node.
    • visit

      R visit(UnionNode node)
      Visits a set union (∪) node.
    • visit

      R visit(UnionAllNode node)
      Visits a multiset union (⊎) node.
    • visit

      R visit(OuterUnionNode node)
      Visits an outer-union (⊔) node.
    • visit

      R visit(DifferenceNode node)
      Visits a set difference (−) node.
    • visit

      R visit(IntersectionNode node)
      Visits a set intersection (∩) node.
    • visit

      R visit(DivisionNode node)
      Visits a relational division (÷) node.
    • visit

      Visits a symmetric-difference (∆) node.
    • visit

      R visit(CompositionNode node)
      Visits a relational composition (∘) node.
    • visit

      R visit(AggregationNode node)
      Visits an aggregation (γ) node.
    • visit

      R visit(SortNode node)
      Visits a sort (τ) node.
    • visit

      R visit(LimitNode node)
      Visits a limit (λ) node.
    • visit

      R visit(DistinctNode node)
      Visits a distinct (δ) node.
    • visit

      R visit(UnnestNode node)
      Visits an unnest (μ) node.
    • visit

      R visit(ClosureNode node)
      Visits a transitive-closure (CLOSURE/RCLOSURE) node.
    • visit

      R visit(ClusterNode node)
      Visits a connected-components (CLUSTER) node.
    • visit

      R visit(PathNode node)
      Visits a bounded variable-length path (PATH) node.
    • visit

      R visit(TraceNode node)
      Visits an optimal-path extraction (TRACE) node.
    • visit

      R visit(UniversalNode node)
      Visits a universal-quantification (∀) node.
    • visit

      R visit(SampleNode node)
      Visits a Bernoulli-sampling (SAMPLE) node.
    • visit

      R visit(ReservoirSampleNode node)
      Visits a reservoir (fixed-count) sampling (SAMPLE … ROWS) node.
    • visit

      R visit(SolveNode node)
      Visits a goal-seek (SOLVE) node.
    • visit

      R visit(OptimizeNode node)
      Visits a declarative-optimisation (OPTIMIZE) node.
    • visit

      R visit(TopKNode node)
      Visits a top-k-per-group (TOP) node.
    • visit

      R visit(DownsampleNode node)
      Visits a time-series downsampling (DOWNSAMPLE) node.
    • visit

      R visit(WindowNode node)
      Visits a window (ROLLING / WINDOW) node.
    • visit

      R visit(SessionizeNode node)
      Visits a gap-and-island / sessionization (SESSIONIZE) node.
    • visit

      R visit(UnpivotNode node)
      Visits a column-folding (UNPIVOT) node.
    • visit

      R visit(PivotNode node)
      Visits a row-pivoting (PIVOT) node.
    • visit

      R visit(TreeNode node)
      Visits an adjacency-to-forest nesting (TREE) node.
    • visit

      default R visit(CoverNode node)
      Visits a covering-reduction (COVER) node.

      A default that 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

      default R visit(FixpointNode node)
      Visits a general-recursion fixpoint (FIX) node.

      A default that 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

      default R visit(IterateNode node)
      Visits a replace-each-round iteration (ITERATE) node.

      Provided as a default that throws — see visit(FixpointNode).

    • visit

      default R visit(RecursiveRefNode node)
      Visits a recursive-reference (FIX- or ITERATE-bound name) node.

      Provided as a default that throws — see visit(FixpointNode).

    • visit

      default R visit(LateralJoinNode node)
      Visits a lateral (correlated) table-valued function join node.

      A default that 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

      default R visit(WhyNode node)
      Visits a lineage-reification (WHY) node.

      A default that 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.