This is an automated email from the ASF dual-hosted git repository. volodymyr pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/drill.git
commit bf40c5ca84c7a3c783984369564dc151349114b9 Author: Sorabh Hamirwasia <[email protected]> AuthorDate: Thu Jun 28 22:20:32 2018 -0700 DRILL-6548: IllegalStateException: Unexpected EMIT outcome received in buildSchema phase closes #1352 --- .../apache/drill/exec/physical/impl/TopN/TopNBatch.java | 1 + .../exec/physical/impl/TopN/TestTopNEmitOutcome.java | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/TopN/TopNBatch.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/TopN/TopNBatch.java index a8c6804..4fc0d15 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/TopN/TopNBatch.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/TopN/TopNBatch.java @@ -174,6 +174,7 @@ public class TopNBatch extends AbstractRecordBatch<TopN> { return; case NONE: state = BatchState.DONE; + return; case EMIT: throw new IllegalStateException("Unexpected EMIT outcome received in buildSchema phase"); default: diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TopN/TestTopNEmitOutcome.java b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TopN/TestTopNEmitOutcome.java index 9358ff7..04d06aa 100644 --- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TopN/TestTopNEmitOutcome.java +++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TopN/TestTopNEmitOutcome.java @@ -638,4 +638,20 @@ public class TestTopNEmitOutcome extends BaseTestOpBatchEmitOutcome { assertTrue(topNBatch.next() == RecordBatch.IterOutcome.OK_NEW_SCHEMA); assertTrue(topNBatch.next() == RecordBatch.IterOutcome.NONE); } + + @Test + public void testRegularTopNWithEmptyDataSetAndNoneOutcome() { + inputContainer.add(emptyInputRowSet.container()); + inputOutcomes.add(RecordBatch.IterOutcome.NONE); + + final MockRecordBatch mockInputBatch = new MockRecordBatch(operatorFixture.getFragmentContext(), opContext, + inputContainer, inputOutcomes, emptyInputRowSet.container().getSchema()); + + final TopN topNConfig = new TopN(null, + Lists.newArrayList(ordering("id_left", RelFieldCollation.Direction.DESCENDING, + RelFieldCollation.NullDirection.FIRST)), false, 4); + final TopNBatch topNBatch = new TopNBatch(topNConfig, operatorFixture.getFragmentContext(), mockInputBatch); + + assertTrue(topNBatch.next() == RecordBatch.IterOutcome.NONE); + } }
