About
A rule is used to modified a relational expression (ie query plan)
They are used by the planner to:
- or modify
relational algebra expressions (ie query plan).
Every rule extends RelOptRule (and are used by the planner (RelOptPlanner)).
Articles Related
Type
Two types of rules:
- converter (convert conventions)
- transformer (modify the expression)
Converter
- Converters rule implement Converter and convert from one convention to an another.
- Converter rules applied via convert
A ConverterRule converts between calling conventions.
Example:
- indicates what system will actually execute the query by assigning a particular call.
Transformer
A rule that match a subtree of a relational algebra expression and replace it with a different subtree. ie it is a rule to transform an relational expression to another.
Example: exchange the order of Filter and a Project nodes.
Match: Transformer Rules are matched to elements of a query plan using pattern matching. onMatch is called for matched rules
Example: RelOptRulesTest.java