net.sf.saffron.opt
Class AbstractConverter.ExpandConversionRule
java.lang.Object
|
+--net.sf.saffron.opt.VolcanoRule
|
+--net.sf.saffron.opt.AbstractConverter.ExpandConversionRule
- Enclosing class:
- AbstractConverter
- public static class AbstractConverter.ExpandConversionRule
- extends VolcanoRule
Rule which converts an AbstractConverter
into a chain of
converters from the source relation to the target calling convention.
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).
AbstractConverter.ExpandConversionRule
public AbstractConverter.ExpandConversionRule()
onMatch
public void onMatch(VolcanoRuleCall call)
- Description copied from class:
VolcanoRule
- This method is called every time the rule matches. 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 VolcanoRuleCall.transformTo(net.sf.saffron.rel.SaffronRel)
to register the expression.
- Specified by:
onMatch
in class VolcanoRule