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 <[email protected]> Authored: Mon Aug 4 23:16:54 2014 -0700 Committer: James Taylor <[email protected]> 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; }
