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

Reply via email to