Class MultiJoinOptimizeBushyRule

All Implemented Interfaces:
TransformationRule

@Enclosing public class MultiJoinOptimizeBushyRule extends RelRule<MultiJoinOptimizeBushyRule.Config> implements TransformationRule
Planner rule that finds an approximately optimal ordering for join operators using a heuristic algorithm.

It is triggered by the pattern LogicalProject (MultiJoin).

It is similar to LoptOptimizeJoinRule (CoreRules.MULTI_JOIN_OPTIMIZE). LoptOptimizeJoinRule is only capable of producing left-deep joins; this rule is capable of producing bushy joins.

TODO: Join conditions that touch exactly 1 factor are currently applied as a filter above the join tree rather than being pushed down to the individual table scan.

See Also: