uwescience / raco

Compilation and rule-based optimization framework for relational algebra. Raco is the language, optimization, and query translation layer for the Myria project.
Other
72 stars 19 forks source link

apply lists of rules recursively #570

Open jingjingwang opened 6 years ago

jingjingwang commented 6 years ago

An algebra was defined as a list of lists of rules but then got flattened. This limits recursive optimizations that consist of multiple rules, for example, PushApply + RemoveUnusedColumn were repeated twice, which still produces redundant columns if the query contains more than two joins. This PR removes the flattening and applied a list of rules recursively until no change. It fixes the PushApply + RemoveUnusedColumn problem and also several bugs disclosed by this change.

coveralls commented 6 years ago

Coverage Status

Changes Unknown when pulling 9ed2b5ad43f15e0f581eb45a44baf96e0a03b349 on recursively_apply_rules_as_list into on master.