diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java index 40c8939..a66c881 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java @@ -695,6 +695,7 @@ private static void pruneReduceSinkOperator(boolean[] retainFlags, ReduceSinkOperator reduce, ColumnPrunerProcCtx cppCtx) throws SemanticException { ReduceSinkDesc reduceConf = reduce.getConf(); Map oldMap = reduce.getColumnExprMap(); + LOG.info("RS " + reduce.getIdentifier() + ": In pruneReduceSinkOperator oldMap: " + oldMap); RowResolver oldRR = cppCtx.getOpToParseCtxMap().get(reduce).getRowResolver(); ArrayList signature = oldRR.getRowSchema().getSignature(); @@ -729,6 +730,7 @@ private static void pruneReduceSinkOperator(boolean[] retainFlags, .getFieldSchemasFromColumnList(reduceConf.getValueCols(), newValueColNames, 0, "")); reduceConf.setValueSerializeInfo(newValueTable); + LOG.info("RS " + reduce.getIdentifier() + ": In pruneReduceSinkOperator newMap: " + oldMap); } /** diff --git ql/src/test/queries/clientpositive/RSKeyLostAfterCP.q ql/src/test/queries/clientpositive/RSKeyLostAfterCP.q new file mode 100644 index 0000000..334dce6 --- /dev/null +++ ql/src/test/queries/clientpositive/RSKeyLostAfterCP.q @@ -0,0 +1,22 @@ +EXPLAIN +SELECT x.key FROM src1 x JOIN src y ON (x.key = y.key); + +EXPLAIN +SELECT y.key FROM src1 x JOIN src y ON (x.key = y.key); + +EXPLAIN +SELECT x.key, y.key FROM src1 x JOIN src y ON (x.key = y.key); + +EXPLAIN +SELECT x.key, y.value FROM src1 x JOIN src y ON (x.key = y.key); + +EXPLAIN +SELECT x.value, y.key FROM src1 x JOIN src y ON (x.key = y.key); + +EXPLAIN +SELECT * FROM src1 x JOIN src y ON (x.key = y.key); + +EXPLAIN +SELECT x.key FROM src1 x JOIN src y ON (x.key = y.key) WHERE y.key=0; + +