Github user vrozov commented on a diff in the pull request:
https://github.com/apache/drill/pull/1237#discussion_r184559236
--- Diff:
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/unorderedreceiver/UnorderedReceiverBatch.java
---
@@ -149,25 +149,32 @@ private RawFragmentBatch getNextBatch() throws
IOException {
}
}
+ private RawFragmentBatch getNextNotEmptyBatch() throws IOException {
+ RawFragmentBatch batch;
+ try {
+ stats.startWait();
+ batch = getNextBatch();
+
+ // skip over empty batches. we do this since these are basically
control messages.
+ while (batch != null && batch.getHeader().getDef().getRecordCount()
== 0
+ && (!first || batch.getHeader().getDef().getFieldCount() == 0)) {
+ batch = getNextBatch();
+ }
+ } finally {
+ stats.stopWait();
+ }
+ return batch;
+ }
+
@Override
public IterOutcome next() {
batchLoader.resetRecordCount();
stats.startProcessing();
- try{
- RawFragmentBatch batch;
- try {
- stats.startWait();
- batch = getNextBatch();
- // skip over empty batches. we do this since these are basically
control messages.
- while (batch != null &&
batch.getHeader().getDef().getRecordCount() == 0
- && (!first || batch.getHeader().getDef().getFieldCount() ==
0)) {
- batch = getNextBatch();
- }
- } finally {
- stats.stopWait();
- }
+ RawFragmentBatch batch = null;
+ try {
+ batch = getNextNotEmptyBatch();
first = false;
if (batch == null) {
--- End diff --
I think that `batchLoader.clear()` is not required as it is part of
`close()`. Consider changing the return to a ternary operator.
---