Hello, I am trying to get an optimized join reorder for a given RelNode. Until now, I used VolcanoPlanner with these rules and it worked well for a small number of Joins : JoinPushThroughJoinRule.LEFT, JoinPushThroughJoinRule.RIGHT, JoinAssociateRule.INSTANCE
When I change the above rules with : JoinToMultiJoinRule.INSTANCE , LoptOptimizeJoinRule.INSTANCE I still get the optimized result for the small number of tests I have ran. However, when I try the latter rules in HepPlanner, I don't get an optimized plan. Are these rules supposed to work only in VolcanoPlanner? Also what is the difference between choosing (JoinPushThroughJoinRule + JoinAssociateRule) vs (JoinToMultiJoinRule + LoptOptimizeJoinRule)? As I see here https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/tools/Programs.java#L217 , it chooses LoptOptimizeJoinRule if there are 6 or more Joins. Could I use it for all cases, or is it better to use (JoinPushThroughJoinRule + JoinAssociateRule) for a small number of Joins? Thank you in advance, George