net.sf.farrago.fennel.rel
Class FennelReshapeRel
java.lang.Object
org.eigenbase.rel.AbstractRelNode
org.eigenbase.rel.SingleRel
net.sf.farrago.fennel.rel.FennelSingleRel
net.sf.farrago.fennel.rel.FennelReshapeRel
- All Implemented Interfaces:
- Cloneable, FennelRel, RelNode
class FennelReshapeRel
- extends FennelSingleRel
FennelReshapeRel represents the Fennel implementation of an execution stream
that does projections, simple casting, and simple filtering. Filtering can
done against either literal values passed in through a stream parameter, or
against dynamic parameters read during runtime.
- Version:
- $Id: //open/dev/farrago/src/net/sf/farrago/fennel/rel/FennelReshapeRel.java#1 $
- Author:
- Zelaine Fong
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, isDistinct, isValid, onRegister, recomputeDigest, register, registerCorrelVariable, setCorrelVariable, toString |
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, isDistinct, isValid, onRegister, recomputeDigest, registerCorrelVariable, replaceInput, setCorrelVariable |
projection
Integer[] projection
outputRowType
RelDataType outputRowType
compOp
CompOperatorEnum compOp
filterOrdinals
Integer[] filterOrdinals
filterLiterals
List<RexLiteral> filterLiterals
dynamicParamIds
FennelRelParamId[] dynamicParamIds
paramCompareOffsets
Integer[] paramCompareOffsets
paramOutput
BitSet paramOutput
condition
RexNode condition
FennelReshapeRel
public FennelReshapeRel(RelOptCluster cluster,
RelNode child,
Integer[] projection,
RelDataType outputRowType,
CompOperatorEnum compOp,
Integer[] filterOrdinals,
List<RexLiteral> filterLiterals,
FennelRelParamId[] dynamicParamIds,
Integer[] paramCompareOffsets,
BitSet paramOutput)
- Creates a new FennelReshapeRel object.
- Parameters:
cluster
- RelOptCluster for this relchild
- child inputprojection
- ordinals of the columns to be projected from the inputoutputRowType
- row type of the output (includes dynamic parameters
that are to be outputted) with dynamic parameters appearing at the end of
the rowcompOp
- comparison operatorfilterOrdinals
- ordinals corresponding to inputs that need to be
filtered; they're filtered against either literals or dynamic parameters;
in the case where dynamic parameters are being compared, the trailing
ordinals represent the columns to be compared against the parametersfilterLiterals
- list of literals to be compared against the leading
columns specified by filterOrdinalsdynamicParamIds
- dynamic parameters to be read by this relparamCompareOffsets
- array of offsets within the input tuple that
each dynamic parameter should be compared against; if the dynamic
parameter doesn't need to be compared, then the offset is set to -1paramOutput
- bitset indicating whether each dynamic parameter
should be outputted
clone
public FennelReshapeRel 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 AbstractRelNode
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 SingleRel
addFilter
private void addFilter(Integer filterOrdinal,
RelDataTypeField[] fields,
CompOperatorEnum compOp,
RexNode filterOperand,
boolean lastFilter,
List<RexNode> filterList,
RexBuilder rexBuilder)
explain
public void explain(RelOptPlanWriter pw)
- Specified by:
explain
in interface RelNode
- Overrides:
explain
in class SingleRel
deriveRowType
public RelDataType deriveRowType()
- Overrides:
deriveRowType
in class SingleRel
toStreamDef
public FemExecutionStreamDef toStreamDef(FennelRelImplementor implementor)
- Description copied from interface:
FennelRel
- Converts this relational expression to
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.
- Parameters:
implementor
- for generating Java code
- Returns:
- generated FemExecutionStreamDef