public class AbstractConverter extends ConverterImpl
Unlike most Converters, 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.
| Modifier and Type | Class and Description |
|---|---|
static class |
AbstractConverter.ExpandConversionRule
Rule which converts an
AbstractConverter into a chain of
converters from the source relation to the target traits. |
inTraits, traitDefdigest, id, rowType, traitSet| Constructor and Description |
|---|
AbstractConverter(RelOptCluster cluster,
RelSubset rel,
RelTraitDef traitDef,
RelTraitSet traits) |
| Modifier and Type | Method and Description |
|---|---|
RelOptCost |
computeSelfCost(RelOptPlanner planner)
Returns the cost of this plan (not including children).
|
RelNode |
copy(RelTraitSet traitSet,
List<RelNode> inputs)
Creates a copy of this relational expression, perhaps changing traits and
inputs.
|
RelWriter |
explainTerms(RelWriter pw)
Describes the inputs and attributes of this relational expression.
|
cannotImplement, getInputTraits, getTraitDef, isDistinctchildrenAccept, deriveRowType, getInput, getInputs, getRows, replaceInputaccept, accept, collectVariablesSet, collectVariablesUsed, computeDigest, explain, getChildExps, getCluster, getCollationList, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getQuery, getRelTypeName, getRowType, getTable, getTraitSet, getVariablesStopped, isKey, isValid, metadata, onRegister, recomputeDigest, register, sole, toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitaccept, accept, childrenAccept, collectVariablesSet, collectVariablesUsed, explain, getChildExps, getCollationList, getConvention, getCorrelVariable, getExpectedInputRowType, getInput, getInputs, getQuery, getRelTypeName, getRows, getRowType, getTable, getVariablesStopped, isKey, isValid, metadata, onRegister, recomputeDigest, register, replaceInputgetCluster, getDescription, getDigest, getId, getTraitSetpublic AbstractConverter(RelOptCluster cluster, RelSubset rel, RelTraitDef traitDef, RelTraitSet traits)
public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs)
RelNodeSub-classes with other important attributes are encouraged to create variants of this method with more parameters.
copy in interface RelNodecopy in class AbstractRelNodetraitSet - Trait setinputs - Inputspublic RelOptCost computeSelfCost(RelOptPlanner planner)
RelNodeNOTE jvs 29-Mar-2006: Don't call this method directly. Instead, use
RelMetadataQuery.getNonCumulativeCost(org.apache.calcite.rel.RelNode), which gives plugins a
chance to override the rel's default ideas about cost.
computeSelfCost in interface RelNodecomputeSelfCost in class ConverterImplplanner - Planner for cost calculationpublic RelWriter explainTerms(RelWriter pw)
AbstractRelNodesuper.explainTerms, then call the
RelWriterImpl.input(String, RelNode)
and
RelWriterImpl.item(String, Object)
methods for each input and attribute.explainTerms in class SingleRelpw - Plan writerCopyright © 2012–2015 The Apache Software Foundation. All rights reserved.