|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.eigenbase.rel.AbstractRelNode
net.sf.farrago.fennel.rel.FennelDoubleRel
net.sf.farrago.fennel.rel.LhxJoinRel
public class LhxJoinRel
LhxJoinRel implements the hash join.
| Field Summary | |
|---|---|
(package private) long |
cndBuildKey
cardinality of the build key |
(package private) List<Integer> |
filterNulls
Whether the join key at a given position matches null values |
(package private) boolean |
isSetop
This LhxJoinRel implements setop, one of the following: intersect (distinct), except (distinct) Setop differs from regular join in its treatment of NULLs and duplicates: NULLs are considered "matching" and duplicates are removed by default(the default setop is setop DISTINCT). |
private LhxJoinRelType |
joinType
Join type. |
(package private) List<Integer> |
leftKeys
Join key columns from the left. |
(package private) long |
numBuildRows
row count on the build side |
(package private) List<Integer> |
rightKeys
Join key columns from the right. |
| Fields inherited from class net.sf.farrago.fennel.rel.FennelDoubleRel |
|---|
left, right |
| Fields inherited from class org.eigenbase.rel.AbstractRelNode |
|---|
digest, id, rowType, traits |
| Fields inherited from interface net.sf.farrago.query.FennelRel |
|---|
FENNEL_EXEC_CONVENTION |
| Fields inherited from interface org.eigenbase.rel.RelNode |
|---|
emptyArray |
| Constructor Summary | |
|---|---|
LhxJoinRel(RelOptCluster cluster,
RelNode left,
RelNode right,
LhxJoinRelType joinType,
boolean isSetop,
List<Integer> leftKeys,
List<Integer> rightKeys,
List<Integer> filterNulls,
List<String> fieldNameList,
long numBuildRows,
long cndBuildKey)
Creates a new LhxJoinRel object. |
|
| Method Summary | |
|---|---|
LhxJoinRel |
clone()
Clones this RelNode. |
RelOptCost |
computeSelfCost(RelOptPlanner planner)
Returns the cost of this plan (not including children). |
protected RelDataType |
deriveRowType()
|
void |
explain(RelOptPlanWriter pw)
|
LhxJoinRelType |
getJoinType()
|
RelNode |
getLeft()
|
List<Integer> |
getLeftKeys()
|
RelNode |
getRight()
|
List<Integer> |
getRightKeys()
|
double |
getRows()
Returns an estimate of the number of rows this relational expression will return. |
FemExecutionStreamDef |
toStreamDef(FennelRelImplementor implementor)
Converts this relational expression to FemExecutionStreamDef
form. |
| Methods inherited from class net.sf.farrago.fennel.rel.FennelDoubleRel |
|---|
getCollations, getFarragoTypeFactory, getInputs, implementFennelChild, replaceInput |
| Methods inherited from class org.eigenbase.rel.AbstractRelNode |
|---|
childrenAccept, cloneTraits, collectVariablesSet, collectVariablesUsed, computeDigest, getChildExps, getCluster, getCollationList, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getOrCreateCorrelVariable, getQuery, getRelTypeName, 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 |
| Methods inherited from interface org.eigenbase.rel.RelNode |
|---|
childrenAccept, collectVariablesSet, collectVariablesUsed, getChildExps, getCluster, getCollationList, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getOrCreateCorrelVariable, getQuery, getRelTypeName, getRowType, getTable, getTraits, getVariablesStopped, isAccessTo, isDistinct, isValid, onRegister, recomputeDigest, registerCorrelVariable, setCorrelVariable |
| Field Detail |
|---|
private final LhxJoinRelType joinType
List<Integer> leftKeys
List<Integer> rightKeys
List<Integer> filterNulls
long numBuildRows
long cndBuildKey
boolean isSetop
| Constructor Detail |
|---|
public LhxJoinRel(RelOptCluster cluster,
RelNode left,
RelNode right,
LhxJoinRelType joinType,
boolean isSetop,
List<Integer> leftKeys,
List<Integer> rightKeys,
List<Integer> filterNulls,
List<String> fieldNameList,
long numBuildRows,
long cndBuildKey)
cluster - RelOptCluster for this relleft - left inputright - right inputfieldNameList - If not null, the row type will have these field
names| Method Detail |
|---|
public LhxJoinRel 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 AbstractRelNodepublic RelOptCost computeSelfCost(RelOptPlanner planner)
RelNodeNOTE jvs 29-Mar-2006: Don't call this method directly. Instead, use
RelMetadataQuery.getNonCumulativeCost(org.eigenbase.rel.RelNode), which gives plugins a
chance to override the rel's default ideas about cost.
computeSelfCost in interface RelNodecomputeSelfCost in class AbstractRelNodepublic double getRows()
RelNodeNOTE jvs 29-Mar-2006: Don't call this method directly. Instead, use
RelMetadataQuery.getRowCount(org.eigenbase.rel.RelNode), which gives plugins a chance to
override the rel's default ideas about row count.
getRows in interface RelNodegetRows in class AbstractRelNodepublic void explain(RelOptPlanWriter pw)
explain in interface RelNodeexplain in class AbstractRelNodeprotected RelDataType deriveRowType()
deriveRowType in class FennelDoubleRelpublic FemExecutionStreamDef toStreamDef(FennelRelImplementor implementor)
FennelRelFemExecutionStreamDef
form. In the process, the relational expression will almost certainly
call FennelRelImplementor.visitFennelChild(net.sf.farrago.query.FennelRel, int) on each of its
children.
implementor - for generating Java code
public LhxJoinRelType getJoinType()
public RelNode getLeft()
public RelNode getRight()
public List<Integer> getLeftKeys()
public List<Integer> getRightKeys()
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||