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..0ce78b0 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 @@ private boolean generateSemiJoinOperatorPlan(DynamicListContext ctx, ParseContex groupByDescFinal, new RowSchema(rsOp.getSchema()), rsOp); groupByOpFinal.setColumnExprMap(new HashMap()); + // for explain purpose + if (parseContext.getContext().getExplainConfig() != null + && parseContext.getContext().getExplainConfig().isFormatted()) { + List outputOperators = new ArrayList<>(); + outputOperators.add(groupByOpFinal.getOperatorId()); + rsOp.getConf().setOutputOperators(outputOperators); + } + // Create the final Reduce Sink Operator ReduceSinkDesc rsDescFinal = PlanUtils.getReduceSinkDesc( new ArrayList(), rsValueCols, gbOutputNames, false, @@ -596,6 +604,14 @@ private boolean generateSemiJoinOperatorPlan(DynamicListContext ctx, ParseContex 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()) { + 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(