You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ja...@apache.org on 2014/08/05 08:13:27 UTC

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

Repository: phoenix
Updated Branches:
  refs/heads/3.0 1bd787441 -> defbd3477


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/defbd347
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/defbd347
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/defbd347

Branch: refs/heads/3.0
Commit: defbd347738c45d6df1120d439fdb38f7369ce66
Parents: 1bd7874
Author: James Taylor <jt...@salesforce.com>
Authored: Mon Aug 4 23:16:54 2014 -0700
Committer: James Taylor <jt...@salesforce.com>
Committed: Mon Aug 4 23:16:54 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/defbd347/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 5375169..b156ae0 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
@@ -136,21 +136,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;
     }