|
|||||||||
| 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.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: doc| Method Detail |
|---|
public RexNode[] getChildExps()
RelNodeRelNode.getInputs(). If there are no
child expressions, returns an empty array, not null.
getChildExps in interface RelNodegetChildExps 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 SingleRelpublic FtrsIndexSearchRel 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 RelDataType deriveRowType()
deriveRowType in class SingleRelpublic void explain(RelOptPlanWriter pw)
explain in interface RelNodeexplain in class SingleRelpublic 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 RelOptTable getTable()
RelNode
getTable in interface RelNodegetTable in class AbstractRelNode
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||