org.eigenbase.relopt.volcano
Class AbstractConverter
java.lang.Object
org.eigenbase.rel.AbstractRelNode
org.eigenbase.rel.SingleRel
org.eigenbase.rel.convert.ConverterRelImpl
org.eigenbase.relopt.volcano.AbstractConverter
- All Implemented Interfaces:
- Cloneable, ConverterRel, RelNode
public class AbstractConverter
- extends ConverterRelImpl
Converts a relational expression to any given output convention.
Unlike most ConverterRel
s, an abstract converter is always
abstract. You would typically create an AbstractConverter
when
it is necessary to transform a relational expression immediately; later,
rules will transform it into relational expressions which can be implemented.
If an abstract converter cannot be satisfied immediately (because the
source subset is abstract), the set is flagged, so this converter will be
expanded as soon as a non-abstract relexp is added to the set.
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 interface org.eigenbase.rel.RelNode |
childrenAccept, collectVariablesSet, collectVariablesUsed, getChildExps, getCluster, getCollationList, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getInputs, getOrCreateCorrelVariable, getQuery, getRelTypeName, getRows, getRowType, getTable, getTraits, getVariablesStopped, isAccessTo, isValid, onRegister, recomputeDigest, registerCorrelVariable, replaceInput, setCorrelVariable |
AbstractConverter
public AbstractConverter(RelOptCluster cluster,
RelNode rel,
CallingConvention outConvention)
AbstractConverter
public AbstractConverter(RelOptCluster cluster,
RelNode rel,
RelTraitDef traitDef,
RelTraitSet traits)
clone
public AbstractConverter 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 ConverterRelImpl
explain
public void explain(RelOptPlanWriter pw)
- Specified by:
explain
in interface RelNode
- Overrides:
explain
in class SingleRel