|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.eigenbase.rel.AbstractRelNode org.eigenbase.rel.rules.MultiJoinRel
public final class MultiJoinRel
A MultiJoinRel represents a join of N inputs, whereas other join relnodes represent strictly binary joins.
Field Summary | |
---|---|
private RelNode[] |
inputs
|
private boolean |
isFullOuterJoin
|
private Map<Integer,int[]> |
joinFieldRefCountsMap
|
private RexNode |
joinFilter
|
private JoinRelType[] |
joinTypes
|
private RexNode[] |
outerJoinConditions
|
private RexNode |
postJoinFilter
|
private BitSet[] |
projFields
|
private RelDataType |
rowType
|
Fields inherited from class org.eigenbase.rel.AbstractRelNode |
---|
digest, id, traits |
Fields inherited from interface org.eigenbase.rel.RelNode |
---|
emptyArray |
Constructor Summary | |
---|---|
MultiJoinRel(RelOptCluster cluster,
RelNode[] inputs,
RexNode joinFilter,
RelDataType rowType,
boolean isFullOuterJoin,
RexNode[] outerJoinConditions,
JoinRelType[] joinTypes,
BitSet[] projFields,
Map<Integer,int[]> joinFieldRefCountsMap)
|
|
MultiJoinRel(RelOptCluster cluster,
RelNode[] inputs,
RexNode joinFilter,
RelDataType rowType,
boolean isFullOuterJoin,
RexNode[] outerJoinConditions,
JoinRelType[] joinTypes,
BitSet[] projFields,
Map<Integer,int[]> joinFieldRefCountsMap,
RexNode postJoinFilter)
Constructs a MultiJoinRel. |
Method Summary | |
---|---|
MultiJoinRel |
clone()
Clones this RelNode. |
private Map<Integer,int[]> |
cloneJoinFieldRefCountsMap()
Returns a deep copy of joinFieldRefCountsMap . |
RelDataType |
deriveRowType()
|
void |
explain(RelOptPlanWriter pw)
|
RexNode[] |
getChildExps()
Returns an array of this relational expression's child expressions (not including the inputs returned by RelNode.getInputs() . |
Map<Integer,int[]> |
getCopyJoinFieldRefCountsMap()
|
RelNode[] |
getInputs()
Returns an array of this relational expression's inputs. |
Map<Integer,int[]> |
getJoinFieldRefCountsMap()
|
RexNode |
getJoinFilter()
|
JoinRelType[] |
getJoinTypes()
|
RexNode[] |
getOuterJoinConditions()
|
RexNode |
getPostJoinFilter()
|
BitSet[] |
getProjFields()
|
boolean |
isFullOuterJoin()
|
void |
replaceInput(int ordinalInParent,
RelNode p)
Replaces the ordinalInParent th input. |
Methods inherited from class org.eigenbase.rel.AbstractRelNode |
---|
childrenAccept, cloneTraits, collectVariablesSet, collectVariablesUsed, computeDigest, computeSelfCost, getCluster, getCollationList, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getOrCreateCorrelVariable, getQuery, getRelTypeName, getRows, getRowType, getTable, getTraits, getVariablesStopped, inheritTraitsFrom, isAccessTo, isDistinct, isValid, onRegister, recomputeDigest, register, registerCorrelVariable, setCorrelVariable, toString |
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
private RelNode[] inputs
private RexNode joinFilter
private RelDataType rowType
private boolean isFullOuterJoin
private RexNode[] outerJoinConditions
private JoinRelType[] joinTypes
private BitSet[] projFields
private Map<Integer,int[]> joinFieldRefCountsMap
private RexNode postJoinFilter
Constructor Detail |
---|
public MultiJoinRel(RelOptCluster cluster, RelNode[] inputs, RexNode joinFilter, RelDataType rowType, boolean isFullOuterJoin, RexNode[] outerJoinConditions, JoinRelType[] joinTypes, BitSet[] projFields, Map<Integer,int[]> joinFieldRefCountsMap, RexNode postJoinFilter)
cluster
- cluster that join belongs toinputs
- inputs into this multirel 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 are executedpublic MultiJoinRel(RelOptCluster cluster, RelNode[] inputs, RexNode joinFilter, RelDataType rowType, boolean isFullOuterJoin, RexNode[] outerJoinConditions, JoinRelType[] joinTypes, BitSet[] projFields, Map<Integer,int[]> joinFieldRefCountsMap)
Method Detail |
---|
public MultiJoinRel clone()
RelNode
Traits of the RelNode must be explicitly cloned, using AbstractRelNode.inheritTraitsFrom(AbstractRelNode)
, as the RelNode may
have traits of which it has no knowledge. Example implementation:
public MyRelNode clone() { MyRelNode clone = new MyRelNode(...); clone.inheritTraitsFrom(this); return clone; }N.B.: This method must be overridden whenever an existing, concrete RelNode is extended. Otherwise, calling clone() will produce a differently typed RelNode, resulting in invalid or incorrect query plans.
clone
in interface RelNode
clone
in class AbstractRelNode
private Map<Integer,int[]> cloneJoinFieldRefCountsMap()
joinFieldRefCountsMap
.
public void explain(RelOptPlanWriter pw)
explain
in interface RelNode
explain
in class AbstractRelNode
public RelDataType deriveRowType()
deriveRowType
in class AbstractRelNode
public RelNode[] getInputs()
RelNode
null
.
getInputs
in interface RelNode
getInputs
in class AbstractRelNode
public RexNode[] getChildExps()
RelNode
RelNode.getInputs()
. If there are no
child expressions, returns an empty array, not null
.
getChildExps
in interface RelNode
getChildExps
in class AbstractRelNode
public void replaceInput(int ordinalInParent, RelNode p)
RelNode
ordinalInParent
th input. You must
override this method if you override RelNode.getInputs()
.
replaceInput
in interface RelNode
replaceInput
in class AbstractRelNode
public RexNode getJoinFilter()
public boolean isFullOuterJoin()
public RexNode[] getOuterJoinConditions()
public JoinRelType[] getJoinTypes()
public BitSet[] getProjFields()
public Map<Integer,int[]> getJoinFieldRefCountsMap()
public Map<Integer,int[]> getCopyJoinFieldRefCountsMap()
public RexNode getPostJoinFilter()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |