org.eigenbase.relopt.volcano
Class AbstractConverter.ExpandConversionRule
java.lang.Object
org.eigenbase.relopt.RelOptRule
org.eigenbase.relopt.volcano.AbstractConverter.ExpandConversionRule
- Enclosing class:
- AbstractConverter
public static class AbstractConverter.ExpandConversionRule
- extends RelOptRule
Rule which converts an AbstractConverter
into a chain of
converters from the source relation to the target traits.
The chain produced is mimimal: we have previously built the transitive
closure of the graph of conversions, so we choose the shortest chain.
Unlike the AbstractConverter
they are replacing, these
converters are guaranteed to be able to convert any relation of their
calling convention. Furthermore, because they introduce subsets of other
calling conventions along the way, these subsets may spawn more efficient
conversions which are not generally applicable.
AbstractConverters can be messy, so they restrain themselves: they
don't fire if the target subset already has an implementation (with less
than infinite cost).
Methods inherited from class org.eigenbase.relopt.RelOptRule |
convert, equals, equals, getOperand, getOperands, getOutConvention, getOutTrait, hashCode, matches, mergeTraitsAndConvert, mergeTraitsAndConvert, toString |
instance
public static final AbstractConverter.ExpandConversionRule instance
AbstractConverter.ExpandConversionRule
private AbstractConverter.ExpandConversionRule()
- Creates an ExpandConversionRule.
onMatch
public void onMatch(RelOptRuleCall call)
- Description copied from class:
RelOptRule
- Receives notification about a rule match. At the time that this method is
called,
call.rels
holds the set of relational
expressions which match the operands to the rule;
call.rels[0]
is the root expression.
Typically a rule would check that the nodes are valid matches, creates
a new expression, then calls back RelOptRuleCall.transformTo(org.eigenbase.rel.RelNode)
to
register the expression.
- Specified by:
onMatch
in class RelOptRule
- Parameters:
call
- Rule call- See Also:
RelOptRule.matches(RelOptRuleCall)