|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.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 ordinalInParentth 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 executed
public 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()
RelNodeTraits 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 RelNodeclone in class AbstractRelNodeprivate Map<Integer,int[]> cloneJoinFieldRefCountsMap()
joinFieldRefCountsMap.
public void explain(RelOptPlanWriter pw)
explain in interface RelNodeexplain in class AbstractRelNodepublic RelDataType deriveRowType()
deriveRowType in class AbstractRelNodepublic RelNode[] getInputs()
RelNodenull.
getInputs in interface RelNodegetInputs in class AbstractRelNodepublic RexNode[] getChildExps()
RelNodeRelNode.getInputs(). If there are no
child expressions, returns an empty array, not null.
getChildExps in interface RelNodegetChildExps in class AbstractRelNode
public void replaceInput(int ordinalInParent,
RelNode p)
RelNodeordinalInParentth input. You must
override this method if you override RelNode.getInputs().
replaceInput in interface RelNodereplaceInput in class AbstractRelNodepublic 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 | ||||||||