HIVE-16018: Add more information for DynamicPartitionPruningOptimization 
(Pengcheng Xiong, reviewed by Ashutosh Chauhan)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/127deb2b
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/127deb2b
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/127deb2b

Branch: refs/heads/branch-2.2
Commit: 127deb2b38183ad38f32dc1b2575e18877a12206
Parents: e27199b
Author: Pengcheng Xiong <[email protected]>
Authored: Sat Feb 25 12:52:20 2017 -0800
Committer: Owen O'Malley <[email protected]>
Committed: Tue Mar 28 15:27:54 2017 -0700

----------------------------------------------------------------------
 .../DynamicPartitionPruningOptimization.java        | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/127deb2b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/DynamicPartitionPruningOptimization.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/DynamicPartitionPruningOptimization.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/DynamicPartitionPruningOptimization.java
index 8692c45..3085f5d 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/DynamicPartitionPruningOptimization.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/DynamicPartitionPruningOptimization.java
@@ -585,6 +585,14 @@ public class DynamicPartitionPruningOptimization 
implements NodeProcessor {
             groupByDescFinal, new RowSchema(rsOp.getSchema()), rsOp);
     groupByOpFinal.setColumnExprMap(new HashMap<String, ExprNodeDesc>());
 
+    // for explain purpose
+    if (parseContext.getContext().getExplainConfig() != null
+        && parseContext.getContext().getExplainConfig().isFormatted()) {
+      List<String> outputOperators = new ArrayList<>();
+      outputOperators.add(groupByOpFinal.getOperatorId());
+      rsOp.getConf().setOutputOperators(outputOperators);
+    }
+
     // Create the final Reduce Sink Operator
     ReduceSinkDesc rsDescFinal = PlanUtils.getReduceSinkDesc(
             new ArrayList<ExprNodeDesc>(), rsValueCols, gbOutputNames, false,
@@ -596,6 +604,14 @@ public class DynamicPartitionPruningOptimization 
implements NodeProcessor {
     LOG.debug("DynamicMinMaxPushdown: Saving RS to TS mapping: " + rsOpFinal + 
": " + ts);
     parseContext.getRsOpToTsOpMap().put(rsOpFinal, ts);
 
+    // for explain purpose
+    if (parseContext.getContext().getExplainConfig() != null
+        && parseContext.getContext().getExplainConfig().isFormatted()) {
+      List<String> outputOperators = new ArrayList<>();
+      outputOperators.add(ts.getOperatorId());
+      rsOpFinal.getConf().setOutputOperators(outputOperators);
+    }
+
     // Save the info that is required at query time to resolve dynamic/runtime 
values.
     RuntimeValuesInfo runtimeValuesInfo = new RuntimeValuesInfo();
     TableDesc rsFinalTableDesc = PlanUtils.getReduceValueTableDesc(

Reply via email to