Index: ql/src/java/org/apache/hadoop/hive/ql/exec/FetchOperator.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/exec/FetchOperator.java (revision 907824) +++ ql/src/java/org/apache/hadoop/hive/ql/exec/FetchOperator.java (working copy) @@ -245,29 +245,27 @@ **/ public InspectableObject getNextRow() throws IOException { try { - if (currRecReader == null) { - currRecReader = getRecordReader(); - if (currRecReader == null) - return null; - } - - boolean ret = currRecReader.next(key, value); - if (ret) { - if (tblDataDone) { - Object obj = serde.deserialize(value); - return new InspectableObject(obj, serde.getObjectInspector()); + while (true) { + if (currRecReader == null) { + currRecReader = getRecordReader(); + if (currRecReader == null) { + return null; + } + } + + boolean ret = currRecReader.next(key, value); + if (ret) { + if (tblDataDone) { + Object obj = serde.deserialize(value); + return new InspectableObject(obj, serde.getObjectInspector()); + } else { + rowWithPart[0] = serde.deserialize(value); + return new InspectableObject(rowWithPart, rowObjectInspector); + } } else { - rowWithPart[0] = serde.deserialize(value); - return new InspectableObject(rowWithPart, rowObjectInspector); + currRecReader.close(); + currRecReader = null; } - } else { - currRecReader.close(); - currRecReader = null; - currRecReader = getRecordReader(); - if (currRecReader == null) - return null; - else - return getNextRow(); } } catch (Exception e) { throw new IOException(e);