Index: ql/src/java/org/apache/hadoop/hive/ql/exec/FetchOperator.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/exec/FetchOperator.java (revision 4914) +++ ql/src/java/org/apache/hadoop/hive/ql/exec/FetchOperator.java (working copy) @@ -252,31 +252,27 @@ **/ public InspectableObject getNextRow() throws IOException { try { - if (currRecReader == null) { - currRecReader = getRecordReader(); + while (true) { if (currRecReader == null) { - return 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()); + + 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);