Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

I am figuring out a way to expose them on this wiki in a clean way - WIP

How does each rule rewrite the logical operator

The general logic is written in AbstractRuleController.java. Each rule visits the operator graph in a deep first order. The rule.rewirtePre(operator) gets called before rewriting the descendants. After rewriting all the descendants, the rule.rewritePost(operator) gets called.

To implement a new rule, we need to implement rewritePre() or rewritePost() depends on whether this rule needs to rewrite the parent first or the descendant first. We haven't seen any rule that implements both interfaces.