diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java index ee3aaa5799..f7ea85da5f 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java @@ -2291,12 +2291,14 @@ private RelNode applyJoinOrderingTransform(RelNode basePlan, RelMetadataProvider final HepProgramBuilder program = new HepProgramBuilder(); // Remove Projects between Joins so that JoinToMultiJoinRule can merge them to MultiJoin generatePartialProgram(program, true, HepMatchOrder.BOTTOM_UP, - HiveJoinProjectTransposeRule.LEFT_PROJECT_BTW_JOIN, HiveJoinProjectTransposeRule.RIGHT_PROJECT_BTW_JOIN, - HiveProjectMergeRule.INSTANCE); + HiveJoinProjectTransposeRule.LEFT_PROJECT_BTW_JOIN, HiveJoinProjectTransposeRule.RIGHT_PROJECT_BTW_JOIN); // Join reordering generatePartialProgram(program, false, HepMatchOrder.BOTTOM_UP, new JoinToMultiJoinRule(HiveJoin.class), new LoptOptimizeJoinRule(HiveRelFactories.HIVE_BUILDER)); + generatePartialProgram(program, true, HepMatchOrder.BOTTOM_UP, + HiveProjectJoinTransposeRule.INSTANCE, HiveProjectMergeRule.INSTANCE); + perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); RelNode calciteOptimizedPlan; try {