THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
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.