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;
}