From e4394639d65084ba7c84d638b36398fb49cb8fb0 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Wed, 11 Nov 2015 14:31:36 -0800 Subject: [PATCH] HIVE-11955 : Add costing for join-groupby transpose rule --- .../optimizer/calcite/rules/HiveAggregateJoinTransposeRule.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveAggregateJoinTransposeRule.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveAggregateJoinTransposeRule.java index 211b6fa..c59af39 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveAggregateJoinTransposeRule.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveAggregateJoinTransposeRule.java @@ -296,6 +296,14 @@ public Integer apply(Integer a0) { Mappings.apply2(mapping, aggregate.getGroupSets()), newAggCalls); } call.transformTo(r); + // Add original tree as well for potential alternative transformation. + // This is modeled after LoptOptimizeJoinRule::findBestOrderings() in + // which rule adds multiple transformations and Planner picks the cheapest one. + // Hep planner will automatically pick the one with lower cost among two. + // For details, see: HepPlanner:applyTransformationResults() + // In this case, if ndv is close to # of rows, i.e., group by is not resulting + // in any deduction, doing this transformation is not useful. + call.transformTo(aggregate); } /** Computes the closure of a set of columns according to a given list of -- 1.7.12.4 (Apple Git-37)