Index: ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java (revision 06f7da3fb4fd36f82bbce394652cd2a9517844fe) +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java (revision 605b169f3236b1429e723f9f4de9f4109afc0e5e) @@ -468,8 +468,8 @@ private static void pruneReduceSinkOperator(boolean[] retainFlags, ReduceSinkOperator reduce, ColumnPrunerProcCtx cppCtx) throws SemanticException { ReduceSinkDesc reduceConf = reduce.getConf(); + Map oldMap = reduce.getColumnExprMap(); - Map newMap = new HashMap(); ArrayList sig = new ArrayList(); RowResolver oldRR = cppCtx.getOpToParseCtxMap().get(reduce).getRowResolver(); RowResolver newRR = new RowResolver(); @@ -489,10 +489,11 @@ outputCol = Utilities.ReduceField.VALUE.toString() + "." + outputCol; nm = oldRR.reverseLookup(outputCol); } - newMap.put(outputCol, oldMap.get(outputCol)); ColumnInfo colInfo = oldRR.get(nm[0], nm[1]); newRR.put(nm[0], nm[1], colInfo); sig.add(colInfo); + } else { + oldMap.remove(originalValueOutputColNames.get(i)); } } @@ -513,7 +514,6 @@ } cppCtx.getOpToParseCtxMap().get(reduce).setRowResolver(newRR); - reduce.setColumnExprMap(newMap); reduce.getSchema().setSignature(sig); reduceConf.setOutputValueColumnNames(newOutputColNames); reduceConf.setValueCols(newValueEval);