|
|||||||||
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.fennel.rel.FennelCalcRel
public class FennelCalcRel
FennelCalcRel is the relational expression corresponding to a Calc implemented inside of Fennel.
Rules:
FennelCalcRule
creates this from a CalcRel
Field Summary | |
---|---|
private RexProgram |
program
|
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 | |
---|---|
FennelCalcRel(RelOptCluster cluster,
RelNode child,
RelDataType rowType,
RexProgram program)
Creates a new FennelCalcRel object. |
Method Summary | |
---|---|
FennelCalcRel |
clone()
Clones this RelNode. |
RelOptCost |
computeSelfCost(RelOptPlanner planner)
Returns the cost of this plan (not including children). |
void |
explain(RelOptPlanWriter pw)
|
RelFieldCollation[] |
getCollations()
TODO: jhyde, 2006/3/28: unify with RelNode.getCollationList() |
RexProgram |
getProgram()
|
double |
getRows()
Returns an estimate of the number of rows this relational expression will return. |
boolean |
isDistinct()
Returns whether the same value will not come out twice. |
FemExecutionStreamDef |
toStreamDef(FennelRelImplementor implementor)
Converts this relational expression to FemExecutionStreamDef
form. |
Methods inherited from class net.sf.farrago.fennel.rel.FennelSingleRel |
---|
getFarragoTypeFactory, implementFennelChild |
Methods inherited from class org.eigenbase.rel.SingleRel |
---|
childrenAccept, deriveRowType, getChild, getInputs, replaceInput |
Methods inherited from class org.eigenbase.rel.AbstractRelNode |
---|
cloneTraits, collectVariablesSet, collectVariablesUsed, computeDigest, getChildExps, getCluster, getCollationList, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getOrCreateCorrelVariable, getQuery, getRelTypeName, getRowType, getTable, getTraits, getVariablesStopped, inheritTraitsFrom, isAccessTo, 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, getInputs, getOrCreateCorrelVariable, getQuery, getRelTypeName, getRowType, getTable, getTraits, getVariablesStopped, isAccessTo, isValid, onRegister, recomputeDigest, registerCorrelVariable, replaceInput, setCorrelVariable |
Field Detail |
---|
private final RexProgram program
Constructor Detail |
---|
public FennelCalcRel(RelOptCluster cluster, RelNode child, RelDataType rowType, RexProgram program)
cluster
- RelOptCluster for this relchild
- rel producing rows to be CalcedrowType
- Row typeprogram
- Set of common expressions, projections, and optional
filter, to be calculated by the calculatorMethod Detail |
---|
public FennelCalcRel 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 RexProgram getProgram()
public void explain(RelOptPlanWriter pw)
explain
in interface RelNode
explain
in class SingleRel
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 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 boolean isDistinct()
RelNode
false
, derived classes should override.
isDistinct
in interface RelNode
isDistinct
in class AbstractRelNode
public RelFieldCollation[] getCollations()
FennelRel
TODO: jhyde, 2006/3/28: unify with RelNode.getCollationList()
getCollations
in interface FennelRel
getCollations
in class FennelSingleRel
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
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |