Interface ConditionalJoinNode
- All Superinterfaces:
RelNode
- All Known Implementing Classes:
AntiJoinNode,FullOuterJoinNode,LeftOuterJoinNode,PairwiseUniversalNode,RightOuterJoinNode,SemiJoinNode,ThetaJoinNode
(left, right, condition, location).
Seven of the join operators — θ-join, the three outer joins, semi-join,
anti-join, and the pairwise universal semi-join — differ only in their
runtime semantics; structurally they are identical. Consumers that treat
them uniformly (predicate/expression simplification, parameter substitution,
structural traversal) can match one case ConditionalJoinNode j
instead of seven copy-pasted arms, and reconstruct via
rebuild(RelNode, RelNode, Predicate) without losing the concrete
type or its source location.
Consumers whose behaviour differs per join type (the planner's algorithm choice, selection pushdown's side rules, cost estimation, IR labels) should keep matching the concrete types — the sealed hierarchy keeps those switches exhaustive either way.
AsOfJoinNode and IntervalJoinNode are deliberately
not members: the AS-OF join carries tolerance/window/tie-break
state beyond the uniform shape, and the interval join has endpoint columns
instead of a single predicate.
-
Method Summary
Modifier and TypeMethodDescriptionThe join predicate; never null.left()The left input relation; never null.Reconstructs this node with new inputs and/or condition, preserving the concrete join type and this node'sRelNode.location().right()The right input relation; never null.Methods inherited from interface com.darkcollective.relix.ast.RelNode
accept, children, location, mapChildren, materializationMode, prettyPrint
-
Method Details
-
left
RelNode left()The left input relation; never null. -
right
RelNode right()The right input relation; never null. -
condition
Predicate condition()The join predicate; never null. -
rebuild
Reconstructs this node with new inputs and/or condition, preserving the concrete join type and this node'sRelNode.location().- Parameters:
left- the new left input; must not be nullright- the new right input; must not be nullcondition- the new join predicate; must not be null- Returns:
- a node of the same concrete type; never null
-