Repository: phoenix
Updated Branches:
  refs/heads/master f1c7fc879 -> 4493b9c0a


PHOENIX-1137 SkipScanFilter.intersect not called for aggregate queries (Lars 
Hofhansl)


Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/4493b9c0
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/4493b9c0
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/4493b9c0

Branch: refs/heads/master
Commit: 4493b9c0ae1b46704bf25af67328c56123f1ccd3
Parents: f1c7fc8
Author: James Taylor <[email protected]>
Authored: Mon Aug 4 23:18:17 2014 -0700
Committer: James Taylor <[email protected]>
Committed: Mon Aug 4 23:18:17 2014 -0700

----------------------------------------------------------------------
 .../java/org/apache/phoenix/util/ScanUtil.java  | 26 ++++++++++----------
 1 file changed, 13 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/4493b9c0/phoenix-core/src/main/java/org/apache/phoenix/util/ScanUtil.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/util/ScanUtil.java 
b/phoenix-core/src/main/java/org/apache/phoenix/util/ScanUtil.java
index 8ad786f..15977cf 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/util/ScanUtil.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/util/ScanUtil.java
@@ -162,21 +162,21 @@ public class ScanUtil {
                 // Intersect found: replace skip scan with intersected one
                 scan.setFilter(newFilter);
             } else if (filter instanceof FilterList) {
-                FilterList filterList = (FilterList)filter;
-                Filter firstFilter = filterList.getFilters().get(0);
-                if (firstFilter instanceof SkipScanFilter) {
-                    SkipScanFilter oldFilter = (SkipScanFilter)firstFilter;
-                    SkipScanFilter newFilter = oldFilter.intersect(startKey, 
stopKey);
-                    if (newFilter == null) {
-                        return false;
+                FilterList oldList = (FilterList)filter;
+                FilterList newList = new 
FilterList(FilterList.Operator.MUST_PASS_ALL);
+                for (Filter f : oldList.getFilters()) {
+                    if (f instanceof SkipScanFilter) {
+                        SkipScanFilter newFilter = 
((SkipScanFilter)f).intersect(startKey, stopKey);
+                        if (newFilter == null) {
+                            return false;
+                        }
+                        newList.addFilter(newFilter);
+                    } else {
+                        newList.addFilter(f);
                     }
-                    // Intersect found: replace skip scan with intersected one
-                    List<Filter> allFilters = new 
ArrayList<Filter>(filterList.getFilters().size());
-                    allFilters.addAll(filterList.getFilters());
-                    allFilters.set(0, newFilter);
-                    scan.setFilter(new 
FilterList(FilterList.Operator.MUST_PASS_ALL,allFilters));
                 }
-            }
+                scan.setFilter(newList);
+           }
         }
         return mayHaveRows;
     }

Reply via email to