Class PrettyPrinter
- All Implemented Interfaces:
RelNodeVisitor<String>
RelNode tree to a Unicode
relational algebra string.
The output uses standard relational algebra symbols (π σ ρ ⋈ ⨝ ⟕ ⟖ ⟗
⋉ ▷ × ∪ ⊎ − ∩ ÷ ∆ ∘ ∀ γ τ λ δ ω) and is designed to round-trip through the
relix-parser module.
Predicate and operand formatting is delegated to
PredicatePrettyPrinter and OperandPrettyPrinter respectively.
Instances are stateless and safe for concurrent use.
- See Also:
-
Constructor Summary
Constructors -
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.Visits 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) Renders the optimizer-introduced empty relation as∅⟨heading⟩.visit(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.visit(IterateNode node) Visits a replace-each-round iteration (ITERATE) node.visit(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.visit(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.Visits a lineage-reification (WHY) node.visit(WindowNode node) Visits a window (ROLLING / WINDOW) node.
-
Constructor Details
-
PrettyPrinter
public PrettyPrinter()
-
-
Method Details
-
visit
Description copied from interface:RelNodeVisitorVisits a base relation reference.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a table-valued (relation-returning) function call.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a nullary truth-relation literal (UNIT/DEE or EMPTY/DUM).- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Renders the optimizer-introduced empty relation as∅⟨heading⟩.This is the one node whose printed form does not parse back:
EmptyRelationNodehas no surface syntax, because only the optimizer creates it. The form is still injective — two empty relations print alike exactly when their headings do — which is the propertyAstEquivalencerelies on; it is the round-trip that is unavailable, and only for a node the parser can never produce.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a projection (π) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a selection (σ) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a rename (ρ) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a natural join (⋈) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a theta join (⨝) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a left outer join (⟕) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a right outer join (⟖) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a full outer join (⟗) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a semi-join (⋉) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits an anti-join (▷) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a pairwise-universal semi-join (USEMI) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits an AS-OF temporal join (ASOF) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits an interval join (IJOIN) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a Cartesian product (×) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a set union (∪) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a multiset union (⊎) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits an outer-union (⊔) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a set difference (−) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a set intersection (∩) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a relational division (÷) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a symmetric-difference (∆) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a relational composition (∘) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a universal-quantification (∀) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a Bernoulli-sampling (SAMPLE) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a reservoir (fixed-count) sampling (SAMPLE … ROWS) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a goal-seek (SOLVE) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a declarative-optimisation (OPTIMIZE) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a top-k-per-group (TOP) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits an aggregation (γ) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a sort (τ) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a limit (λ) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a distinct (δ) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits 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.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits an unnest (μ) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a transitive-closure (CLOSURE/RCLOSURE) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a connected-components (CLUSTER) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a bounded variable-length path (PATH) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits an optimal-path extraction (TRACE) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits 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.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a time-series downsampling (DOWNSAMPLE) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a window (ROLLING / WINDOW) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a gap-and-island / sessionization (SESSIONIZE) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits an adjacency-to-forest nesting (TREE) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a column-folding (UNPIVOT) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a row-pivoting (PIVOT) node.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits 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.- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a replace-each-round iteration (ITERATE) node.Provided as a
defaultthat throws — seeRelNodeVisitor.visit(FixpointNode).- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits a recursive-reference (FIX- orITERATE-bound name) node.Provided as a
defaultthat throws — seeRelNodeVisitor.visit(FixpointNode).- Specified by:
visitin interfaceRelNodeVisitor<String>
-
visit
Description copied from interface:RelNodeVisitorVisits 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.- Specified by:
visitin interfaceRelNodeVisitor<String>
-