public final class MultiJoin extends AbstractRelNode
RelNode.Context| Modifier and Type | Field and Description |
|---|---|
com.google.common.collect.ImmutableMap<Integer,ImmutableIntList> |
joinFieldRefCountsMap |
digest, id, traitSet| Constructor and Description |
|---|
MultiJoin(RelOptCluster cluster,
List<RelNode> inputs,
RexNode joinFilter,
RelDataType rowType,
boolean isFullOuterJoin,
List<? extends RexNode> outerJoinConditions,
List<JoinRelType> joinTypes,
List<? extends ImmutableBitSet> projFields,
com.google.common.collect.ImmutableMap<Integer,ImmutableIntList> joinFieldRefCountsMap,
@Nullable RexNode postJoinFilter)
Constructs a MultiJoin.
|
| Modifier and Type | Method and Description |
|---|---|
RelNode |
accept(RexShuttle shuttle)
Accepts a visit from a shuttle.
|
RelNode |
copy(RelTraitSet traitSet,
List<RelNode> inputs)
Creates a copy of this relational expression, perhaps changing traits and
inputs.
|
RelDataType |
deriveRowType() |
RelWriter |
explainTerms(RelWriter pw)
Describes the inputs and attributes of this relational expression.
|
Map<Integer,int[]> |
getCopyJoinFieldRefCountsMap()
Returns a copy of the map of reference counts for each input, representing
the fields accessed in join conditions.
|
List<RelNode> |
getInputs()
Returns an array of this relational expression's inputs.
|
com.google.common.collect.ImmutableMap<Integer,ImmutableIntList> |
getJoinFieldRefCountsMap()
Returns the map of reference counts for each input, representing the fields
accessed in join conditions.
|
RexNode |
getJoinFilter()
Returns join filters associated with this MultiJoin.
|
List<JoinRelType> |
getJoinTypes()
Returns join types of each input.
|
List<RexNode> |
getOuterJoinConditions()
Returns outer join conditions for null-generating inputs.
|
@Nullable RexNode |
getPostJoinFilter()
Returns post-join filter associated with this MultiJoin.
|
List<ImmutableBitSet> |
getProjFields()
Returns bitmaps representing the fields projected from each input; if an
entry is null, all fields are projected.
|
boolean |
isFullOuterJoin()
Returns true if the MultiJoin corresponds to a full outer join.
|
void |
replaceInput(int ordinalInParent,
RelNode p)
Replaces the
ordinalInParentth input. |
accept, childrenAccept, collectVariablesSet, collectVariablesUsed, computeSelfCost, deepEquals, deepHashCode, equals, estimateRowCount, explain, getCluster, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getRelDigest, getRelTypeName, getRowType, getTable, getTraitSet, getVariablesSet, hashCode, isEnforcer, isValid, metadata, onRegister, recomputeDigest, register, sole, toStringclone, finalize, getClass, notify, notifyAll, wait, wait, waitexplain, fieldIsNullablepublic final com.google.common.collect.ImmutableMap<Integer,ImmutableIntList> joinFieldRefCountsMap
public MultiJoin(RelOptCluster cluster, List<RelNode> inputs, RexNode joinFilter, RelDataType rowType, boolean isFullOuterJoin, List<? extends RexNode> outerJoinConditions, List<JoinRelType> joinTypes, List<? extends ImmutableBitSet> projFields, com.google.common.collect.ImmutableMap<Integer,ImmutableIntList> joinFieldRefCountsMap, @Nullable RexNode postJoinFilter)
cluster - cluster that join belongs toinputs - inputs into this multi-joinjoinFilter - join filter applicable to this join noderowType - row type of the join result of this nodeisFullOuterJoin - true if the join is a full outer joinouterJoinConditions - outer join condition associated with each join
input, if the input is null-generating in a
left or right outer join; null otherwisejoinTypes - the join type corresponding to each input; if
an input is null-generating in a left or right
outer join, the entry indicates the type of
outer join; otherwise, the entry is set to
INNERprojFields - fields that will be projected from each input;
if null, projection information is not
available yet so it's assumed that all fields
from the input are projectedjoinFieldRefCountsMap - counters of the number of times each field
is referenced in join conditions, indexed by
the input #postJoinFilter - filter to be applied after the joins arepublic void replaceInput(int ordinalInParent,
RelNode p)
RelNodeordinalInParentth input. You must
override this method if you override RelNode.getInputs().replaceInput in interface RelNodereplaceInput in class AbstractRelNodeordinalInParent - Position of the child input, 0 is the firstp - New node that should be put at position ordinalInParentpublic RelNode copy(RelTraitSet traitSet, List<RelNode> inputs)
RelNodeSub-classes with other important attributes are encouraged to create variants of this method with more parameters.
copy in interface RelNodecopy in class AbstractRelNodetraitSet - Trait setinputs - Inputspublic RelWriter explainTerms(RelWriter pw)
AbstractRelNodesuper.explainTerms, then call the
RelWriter.input(String, RelNode)
and
RelWriter.item(String, Object)
methods for each input and attribute.explainTerms in class AbstractRelNodepw - Plan writerpublic RelDataType deriveRowType()
deriveRowType in class AbstractRelNodepublic List<RelNode> getInputs()
RelNodenull.getInputs in interface RelOptNodegetInputs in interface RelNodegetInputs in class AbstractRelNodepublic RelNode accept(RexShuttle shuttle)
RelNodeaccept in interface RelNodeaccept in class AbstractRelNodeshuttle - Shuttlepublic RexNode getJoinFilter()
public boolean isFullOuterJoin()
public List<RexNode> getOuterJoinConditions()
public List<JoinRelType> getJoinTypes()
public List<ImmutableBitSet> getProjFields()
public com.google.common.collect.ImmutableMap<Integer,ImmutableIntList> getJoinFieldRefCountsMap()
public Map<Integer,int[]> getCopyJoinFieldRefCountsMap()
public @Nullable RexNode getPostJoinFilter()
Copyright © 2012-2022 Apache Software Foundation. All Rights Reserved.