|
|||||||||
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.SingleRel net.sf.farrago.fennel.rel.FennelSingleRel net.sf.farrago.namespace.ftrs.FtrsIndexSearchRel
class FtrsIndexSearchRel
FtrsIndexSearchRel refines FtrsIndexScanRel. Instead of scanning an entire index, it only searches for keys produced by its child. In addition, it is able to propagate non-key values from its child, implementing an index join. For a join, the output order is child first and index search results second.
Field Summary | |
---|---|
(package private) Integer[] |
inputDirectiveProj
|
(package private) Integer[] |
inputJoinProj
|
(package private) Integer[] |
inputKeyProj
|
(package private) boolean |
isOuter
|
(package private) boolean |
isUniqueKey
|
(package private) FtrsIndexScanRel |
scanRel
Aggregation used since multiple inheritance is unavailable. |
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 | |
---|---|
FtrsIndexSearchRel(FtrsIndexScanRel scanRel,
RelNode child,
boolean isUniqueKey,
boolean isOuter,
Integer[] inputKeyProj,
Integer[] inputJoinProj,
Integer[] inputDirectiveProj)
Creates a new FtrsIndexSearchRel object. |
Method Summary | |
---|---|
FtrsIndexSearchRel |
clone()
Clones this RelNode. |
RelOptCost |
computeSelfCost(RelOptPlanner planner)
Returns the cost of this plan (not including children). |
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() . |
double |
getRows()
Returns an estimate of the number of rows this relational expression will return. |
RelOptTable |
getTable()
If this relational expression represents an access to a table, returns that table, otherwise returns null. |
FemExecutionStreamDef |
toStreamDef(FennelRelImplementor implementor)
Converts this relational expression to FemExecutionStreamDef
form. |
Methods inherited from class net.sf.farrago.fennel.rel.FennelSingleRel |
---|
getCollations, getFarragoTypeFactory, implementFennelChild |
Methods inherited from class org.eigenbase.rel.SingleRel |
---|
childrenAccept, getChild, getInputs, replaceInput |
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, 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, getCluster, getCollationList, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getInputs, getOrCreateCorrelVariable, getQuery, getRelTypeName, getRowType, getTraits, getVariablesStopped, isAccessTo, isDistinct, isValid, onRegister, recomputeDigest, registerCorrelVariable, replaceInput, setCorrelVariable |
Field Detail |
---|
final FtrsIndexScanRel scanRel
final boolean isUniqueKey
final boolean isOuter
final Integer[] inputKeyProj
final Integer[] inputJoinProj
final Integer[] inputDirectiveProj
Constructor Detail |
---|
public FtrsIndexSearchRel(FtrsIndexScanRel scanRel, RelNode child, boolean isUniqueKey, boolean isOuter, Integer[] inputKeyProj, Integer[] inputJoinProj, Integer[] inputDirectiveProj)
scanRel
- underlying FtrsIndexScanRelchild
- input which produces keysisUniqueKey
- whether keys are known to be uniqueisOuter
- whether nulls should be made up for unmatched inputsinputKeyProj
- TODO: docinputJoinProj
- TODO: docinputDirectiveProj
- TODO: docMethod Detail |
---|
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 double getRows()
RelNode
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.
getRows
in interface RelNode
getRows
in class SingleRel
public FtrsIndexSearchRel 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
public RelOptCost computeSelfCost(RelOptPlanner planner)
RelNode
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.
computeSelfCost
in interface RelNode
computeSelfCost
in class AbstractRelNode
public RelDataType deriveRowType()
deriveRowType
in class SingleRel
public void explain(RelOptPlanWriter pw)
explain
in interface RelNode
explain
in class SingleRel
public FemExecutionStreamDef toStreamDef(FennelRelImplementor implementor)
FennelRel
FemExecutionStreamDef
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 RelOptTable getTable()
RelNode
getTable
in interface RelNode
getTable
in class AbstractRelNode
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |