Repository: incubator-drill
Updated Branches:
  refs/heads/master ae2790ed8 -> 71f5ad447


DRILL-1567 - Pushdown fails with WHERE clause with more than one AND or OR 
operator of same type


Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/67df8cfa
Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/67df8cfa
Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/67df8cfa

Branch: refs/heads/master
Commit: 67df8cfa27041c9696255ee96e2d066e034f6f58
Parents: 958de3d
Author: Aditya Kishore <[email protected]>
Authored: Tue Oct 21 20:53:39 2014 -0700
Committer: Aditya Kishore <[email protected]>
Committed: Wed Oct 22 18:20:00 2014 -0700

----------------------------------------------------------------------
 .../exec/store/hbase/HBaseFilterBuilder.java     | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/67df8cfa/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseFilterBuilder.java
----------------------------------------------------------------------
diff --git 
a/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseFilterBuilder.java
 
b/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseFilterBuilder.java
index ee011a5..9d74b69 100644
--- 
a/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseFilterBuilder.java
+++ 
b/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseFilterBuilder.java
@@ -100,15 +100,18 @@ public class HBaseFilterBuilder extends 
AbstractExprVisitor<HBaseScanSpec, Void,
       switch (functionName) {
       case "booleanAnd":
       case "booleanOr":
-        HBaseScanSpec leftScanSpec = args.get(0).accept(this, null);
-        HBaseScanSpec rightScanSpec = args.get(1).accept(this, null);
-        if (leftScanSpec != null && rightScanSpec != null) {
-          nodeScanSpec = mergeScanSpecs(functionName, leftScanSpec, 
rightScanSpec);
-        } else {
-          allExpressionsConverted = false;
-          if ("booleanAnd".equals(functionName)) {
-            nodeScanSpec = leftScanSpec == null ? rightScanSpec : leftScanSpec;
+        HBaseScanSpec firstScanSpec = args.get(0).accept(this, null);
+        for (int i = 1; i < args.size(); ++i) {
+          HBaseScanSpec nextScanSpec = args.get(i).accept(this, null);
+          if (firstScanSpec != null && nextScanSpec != null) {
+            nodeScanSpec = mergeScanSpecs(functionName, firstScanSpec, 
nextScanSpec);
+          } else {
+            allExpressionsConverted = false;
+            if ("booleanAnd".equals(functionName)) {
+              nodeScanSpec = firstScanSpec == null ? nextScanSpec : 
firstScanSpec;
+            }
           }
+          firstScanSpec = nodeScanSpec;
         }
         break;
       }

Reply via email to