Github user paul-rogers commented on a diff in the pull request:
https://github.com/apache/drill/pull/1059#discussion_r155938551
--- Diff:
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/join/HashJoinBatch.java
---
@@ -535,4 +537,25 @@ public void close() {
}
super.close();
}
+
+ @Override
+ protected boolean checkForEarlyFinish() {
+ if (joinType == JoinRelType.INNER &&
+ (leftUpstream == IterOutcome.NONE || rightUpstream ==
IterOutcome.NONE) ||
+ joinType != JoinRelType.INNER &&
+ (leftUpstream == IterOutcome.NONE && rightUpstream ==
IterOutcome.NONE)) {
+ return true;
+ }
+ return false;
+ }
+
+ private boolean isFurtherProcessingRequired(IterOutcome upStream) {
+ if (upStream == IterOutcome.OUT_OF_MEMORY ||
+ upStream == IterOutcome.NONE ||
+ upStream == IterOutcome.NOT_YET ||
+ upStream == IterOutcome.STOP) {
+ return false;
+ }
+ return true;
--- End diff --
The classic way to do this would be:
```
return upStream == IterOutcome.OK || upStream == IterOutcome.OK_NEW_SCHEMA;
```
That is, express the return value as a Boolean expression. Also, identify
the states that need processing, rather than those that don't.
---