This PR implements a part of the projection transpose series of rules. It also includes a fair amount of refactoring.
Projection Merge Rule
This rule matches on two projection nodes and combines the two nodes into one.
It is added to the heuristic optimizer pass before the cascades optimizer. In the future, it should also be added to a pass after the cascades optimizer.
Projection Filter Transpose Rule
This rule matches pushes a projection node passed a filter node. If the filter node contains columns that are not in this projection node, the top most projection node is also kept.
It is added as a cascades rule.
Refactoring
Relevant functions for projection transpose rules can be found in project_transpose_common.rs. Rules are implemented in separate files as a part of the projection_transpose module rather than in all one file. Similarly, FilterProjectTransposeRule and ProjectionPullUpJoin were moved into this module.
Testing
Unit tests using the dummy heuristic optimizer were implemented.
This PR implements a part of the projection transpose series of rules. It also includes a fair amount of refactoring.
Projection Merge Rule
Projection Filter Transpose Rule
Refactoring
Relevant functions for projection transpose rules can be found in
project_transpose_common.rs
. Rules are implemented in separate files as a part of theprojection_transpose
module rather than in all one file. Similarly,FilterProjectTransposeRule
andProjectionPullUpJoin
were moved into this module.Testing
Unit tests using the dummy heuristic optimizer were implemented.