Class LogicalJoin
- All Implemented Interfaces:
Cloneable
,RelOptNode
,Hintable
,RelNode
Join
not targeted at any particular engine or calling convention.
Some rules:
JoinExtractFilterRule
converts aninner join
to afilter
on top of acartesian inner join
.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.calcite.rel.RelNode
RelNode.Context
-
Field Summary
Fields inherited from class org.apache.calcite.rel.core.Join
condition, hints, joinInfo, joinType, variablesSet
Fields inherited from class org.apache.calcite.rel.AbstractRelNode
digest, id, rowType, traitSet
-
Constructor Summary
ConstructorDescriptionLogicalJoin
(RelOptCluster cluster, RelTraitSet traitSet, List<RelHint> hints, RelNode left, RelNode right, RexNode condition, Set<CorrelationId> variablesSet, JoinRelType joinType, boolean semiJoinDone, com.google.common.collect.ImmutableList<RelDataTypeField> systemFieldList) Creates a LogicalJoin.LogicalJoin
(RelOptCluster cluster, RelTraitSet traitSet, RelNode left, RelNode right, RexNode condition, Set<CorrelationId> variablesSet, JoinRelType joinType, boolean semiJoinDone, com.google.common.collect.ImmutableList<RelDataTypeField> systemFieldList) Deprecated.LogicalJoin
(RelOptCluster cluster, RelTraitSet traitSet, RelNode left, RelNode right, RexNode condition, JoinRelType joinType, Set<String> variablesStopped, boolean semiJoinDone, com.google.common.collect.ImmutableList<RelDataTypeField> systemFieldList) Deprecated.LogicalJoin
(RelOptCluster cluster, RelNode left, RelNode right, RexNode condition, JoinRelType joinType, Set<String> variablesStopped) Deprecated.LogicalJoin
(RelOptCluster cluster, RelNode left, RelNode right, RexNode condition, JoinRelType joinType, Set<String> variablesStopped, boolean semiJoinDone, com.google.common.collect.ImmutableList<RelDataTypeField> systemFieldList) Deprecated.LogicalJoin
(RelInput input) Creates a LogicalJoin by parsing serialized output. -
Method Summary
Modifier and TypeMethodDescriptionaccept
(RelShuttle shuttle) Accepts a visit from a shuttle.copy
(RelTraitSet traitSet, RexNode conditionExpr, RelNode left, RelNode right, JoinRelType joinType, boolean semiJoinDone) Creates a copy of this join, overriding condition, system fields and inputs.static LogicalJoin
create
(RelNode left, RelNode right, List<RelHint> hints, RexNode condition, Set<CorrelationId> variablesSet, JoinRelType joinType) Creates a LogicalJoin.static LogicalJoin
create
(RelNode left, RelNode right, List<RelHint> hints, RexNode condition, Set<CorrelationId> variablesSet, JoinRelType joinType, boolean semiJoinDone, com.google.common.collect.ImmutableList<RelDataTypeField> systemFieldList) Creates a LogicalJoin, flagged with whether it has been translated to a semi-join.boolean
deepEquals
(@Nullable Object obj) Equality check for RelNode digest.int
Compute hash code for RelNode digest.Describes the inputs and attributes of this relational expression.Returns a list of system fields that will be prefixed to output row type.boolean
Returns whether this LogicalJoin has already spawned aSemiJoin
viaJoinAddRedundantSemiJoinRule
.Returns a new relational expression with the specified hintshintList
.Methods inherited from class org.apache.calcite.rel.core.Join
accept, analyzeCondition, computeSelfCost, copy, createJoinType, deepEquals0, deepHashCode0, deriveJoinRowType, deriveRowType, estimateJoinedRows, estimateRowCount, getCondition, getHints, getJoinType, getVariablesSet, isSemiJoin, isValid
Methods inherited from class org.apache.calcite.rel.BiRel
childrenAccept, getInputs, getLeft, getRight, replaceInput
Methods inherited from class org.apache.calcite.rel.AbstractRelNode
collectVariablesSet, collectVariablesUsed, equals, explain, getCluster, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getRelDigest, getRelTypeName, getRowType, getTable, getTraitSet, hashCode, isEnforcer, metadata, onRegister, recomputeDigest, register, sole, toString
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.apache.calcite.rel.hint.Hintable
attachHints
Methods inherited from interface org.apache.calcite.rel.RelNode
explain, fieldIsNullable, stripped
-
Constructor Details
-
LogicalJoin
public LogicalJoin(RelOptCluster cluster, RelTraitSet traitSet, List<RelHint> hints, RelNode left, RelNode right, RexNode condition, Set<CorrelationId> variablesSet, JoinRelType joinType, boolean semiJoinDone, com.google.common.collect.ImmutableList<RelDataTypeField> systemFieldList) Creates a LogicalJoin.Use
create(org.apache.calcite.rel.RelNode, org.apache.calcite.rel.RelNode, java.util.List<org.apache.calcite.rel.hint.RelHint>, org.apache.calcite.rex.RexNode, java.util.Set<org.apache.calcite.rel.core.CorrelationId>, org.apache.calcite.rel.core.JoinRelType)
unless you know what you're doing.- Parameters:
cluster
- ClustertraitSet
- Trait sethints
- Hintsleft
- Left inputright
- Right inputcondition
- Join conditionvariablesSet
- Set of variables that are set by the LHS and used by the RHS and are not available to nodes above this LogicalJoin in the treejoinType
- Join typesemiJoinDone
- Whether this join has been translated to a semi-joinsystemFieldList
- List of system fields that will be prefixed to output row type; typically empty but must not be null- See Also:
-
LogicalJoin
@Deprecated public LogicalJoin(RelOptCluster cluster, RelTraitSet traitSet, RelNode left, RelNode right, RexNode condition, Set<CorrelationId> variablesSet, JoinRelType joinType, boolean semiJoinDone, com.google.common.collect.ImmutableList<RelDataTypeField> systemFieldList) Deprecated. -
LogicalJoin
@Deprecated public LogicalJoin(RelOptCluster cluster, RelTraitSet traitSet, RelNode left, RelNode right, RexNode condition, JoinRelType joinType, Set<String> variablesStopped, boolean semiJoinDone, com.google.common.collect.ImmutableList<RelDataTypeField> systemFieldList) Deprecated. -
LogicalJoin
@Deprecated public LogicalJoin(RelOptCluster cluster, RelNode left, RelNode right, RexNode condition, JoinRelType joinType, Set<String> variablesStopped) Deprecated. -
LogicalJoin
@Deprecated public LogicalJoin(RelOptCluster cluster, RelNode left, RelNode right, RexNode condition, JoinRelType joinType, Set<String> variablesStopped, boolean semiJoinDone, com.google.common.collect.ImmutableList<RelDataTypeField> systemFieldList) Deprecated. -
LogicalJoin
Creates a LogicalJoin by parsing serialized output.
-
-
Method Details
-
create
public static LogicalJoin create(RelNode left, RelNode right, List<RelHint> hints, RexNode condition, Set<CorrelationId> variablesSet, JoinRelType joinType) Creates a LogicalJoin. -
create
public static LogicalJoin create(RelNode left, RelNode right, List<RelHint> hints, RexNode condition, Set<CorrelationId> variablesSet, JoinRelType joinType, boolean semiJoinDone, com.google.common.collect.ImmutableList<RelDataTypeField> systemFieldList) Creates a LogicalJoin, flagged with whether it has been translated to a semi-join. -
copy
public LogicalJoin copy(RelTraitSet traitSet, RexNode conditionExpr, RelNode left, RelNode right, JoinRelType joinType, boolean semiJoinDone) Description copied from class:Join
Creates a copy of this join, overriding condition, system fields and inputs.General contract as
RelNode.copy(org.apache.calcite.plan.RelTraitSet, java.util.List<org.apache.calcite.rel.RelNode>)
. -
accept
Description copied from interface:RelNode
Accepts a visit from a shuttle.- Specified by:
accept
in interfaceRelNode
- Overrides:
accept
in classAbstractRelNode
- Parameters:
shuttle
- Shuttle- Returns:
- A copy of this node incorporating changes made by the shuttle to this node's children
-
explainTerms
Description copied from class:AbstractRelNode
Describes the inputs and attributes of this relational expression. Each node should callsuper.explainTerms
, then call theRelWriter.input(String, RelNode)
andRelWriter.item(String, Object)
methods for each input and attribute.- Overrides:
explainTerms
in classJoin
- Parameters:
pw
- Plan writer- Returns:
- Plan writer for fluent-explain pattern
-
deepEquals
Description copied from class:AbstractRelNode
Equality check for RelNode digest.By default this method collects digest attributes from
AbstractRelNode.explainTerms(RelWriter)
, then compares each attribute pair. This should work well for most cases. If this method is a performance bottleneck for your project, or the default behavior can't handle your scenario properly, you can choose to override this method andAbstractRelNode.deepHashCode()
. SeeLogicalJoin
as an example.- Specified by:
deepEquals
in interfaceRelNode
- Overrides:
deepEquals
in classAbstractRelNode
- Returns:
- Whether the 2 RelNodes are equivalent or have the same digest.
- See Also:
-
deepHashCode
public int deepHashCode()Description copied from class:AbstractRelNode
Compute hash code for RelNode digest.- Specified by:
deepHashCode
in interfaceRelNode
- Overrides:
deepHashCode
in classAbstractRelNode
- See Also:
-
isSemiJoinDone
public boolean isSemiJoinDone()Description copied from class:Join
Returns whether this LogicalJoin has already spawned aSemiJoin
viaJoinAddRedundantSemiJoinRule
.The base implementation returns false.
- Overrides:
isSemiJoinDone
in classJoin
- Returns:
- whether this join has already spawned a semi join
-
getSystemFieldList
Description copied from class:Join
Returns a list of system fields that will be prefixed to output row type.- Overrides:
getSystemFieldList
in classJoin
- Returns:
- list of system fields
-
withHints
Description copied from interface:Hintable
Returns a new relational expression with the specified hintshintList
.This method should be overridden by every logical node that supports hint. It is only for internal use during decorrelation.
Sub-class should return a new copy of the relational expression.
The default implementation returns the relational expression directly only because not every kind of relational expression supports hints.
- Returns:
- Relational expression with set up hints
-