org.eigenbase.rel.rules
Class SemiJoinRel
java.lang.Object
org.eigenbase.rel.AbstractRelNode
org.eigenbase.rel.JoinRelBase
org.eigenbase.rel.rules.SemiJoinRel
- All Implemented Interfaces:
- Cloneable, RelNode
public final class SemiJoinRel
- extends JoinRelBase
A SemiJoinRel represents two relational expressions joined according to some
condition, where the output only contains the columns from the left join
input.
- Version:
- $Id: //open/dev/farrago/src/org/eigenbase/rel/rules/SemiJoinRel.java#10 $
- Author:
- Zelaine Fong
Methods inherited from class org.eigenbase.rel.JoinRelBase |
_isValid, childrenAccept, createJoinType, deriveJoinRowType, estimateJoinedRows, explain, getChildExps, getCondition, getInputs, getJoinType, getLeft, getRight, getSystemFieldList, getVariablesStopped, registerStoppedVariable, replaceInput, setVariablesStopped |
Methods inherited from class org.eigenbase.rel.AbstractRelNode |
cloneTraits, collectVariablesSet, collectVariablesUsed, computeDigest, getCluster, getCollationList, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getOrCreateCorrelVariable, getQuery, getRelTypeName, getRowType, getTable, getTraits, inheritTraitsFrom, isAccessTo, isDistinct, isValid, onRegister, recomputeDigest, register, registerCorrelVariable, setCorrelVariable, toString |
leftKeys
private List<Integer> leftKeys
rightKeys
private List<Integer> rightKeys
SemiJoinRel
public SemiJoinRel(RelOptCluster cluster,
RelNode left,
RelNode right,
RexNode condition,
List<Integer> leftKeys,
List<Integer> rightKeys)
- Parameters:
cluster
- cluster that join belongs toleft
- left join inputright
- right join inputcondition
- join conditionleftKeys
- left keys of the semijoinrightKeys
- right keys of the semijoin
clone
public SemiJoinRel clone()
- Description copied from interface:
RelNode
- Clones this 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.
- Specified by:
clone
in interface RelNode
- Specified by:
clone
in class AbstractRelNode
- Returns:
- a clone of this RelNode
computeSelfCost
public RelOptCost computeSelfCost(RelOptPlanner planner)
- Description copied from interface:
RelNode
- Returns the cost of this plan (not including children). The base
implementation throws an error; derived classes should override.
NOTE 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.
- Specified by:
computeSelfCost
in interface RelNode
- Overrides:
computeSelfCost
in class JoinRelBase
getRows
public double getRows()
- Description copied from interface:
RelNode
- Returns an estimate of the number of rows this relational expression will
return.
NOTE 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.
- Specified by:
getRows
in interface RelNode
- Overrides:
getRows
in class JoinRelBase
deriveRowType
public RelDataType deriveRowType()
- Overrides:
deriveRowType
in class JoinRelBase
- Returns:
- returns rowtype representing only the left join input
getLeftKeys
public List<Integer> getLeftKeys()
getRightKeys
public List<Integer> getRightKeys()