PHOENIX-3158 COUNT(DISTINCT) may return null instead of 0 after PHOENIX-258.
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/6198bf7b Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/6198bf7b Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/6198bf7b Branch: refs/heads/4.x-HBase-1.0 Commit: 6198bf7b43fb522319cffb44d4237756cc4834f3 Parents: 503fba6 Author: Lars Hofhansl <la...@apache.org> Authored: Sat Aug 6 16:27:32 2016 -0700 Committer: Lars Hofhansl <la...@apache.org> Committed: Sat Aug 6 16:28:05 2016 -0700 ---------------------------------------------------------------------- .../it/java/org/apache/phoenix/end2end/DistinctPrefixFilterIT.java | 2 ++ .../src/main/java/org/apache/phoenix/execute/AggregatePlan.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/6198bf7b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DistinctPrefixFilterIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DistinctPrefixFilterIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DistinctPrefixFilterIT.java index 1a0e4e1..e8e9e07 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DistinctPrefixFilterIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DistinctPrefixFilterIT.java @@ -290,6 +290,8 @@ public class DistinctPrefixFilterIT extends BaseHBaseManagedTimeTableReuseIT { testCount("SELECT %s COUNT(DISTINCT col1) FROM " + testTable, -1); testCount("SELECT %s COUNT(DISTINCT col2) FROM " + testTable, -1); + + testCount("SELECT %s COUNT(DISTINCT prefix1) FROM " + testTable + " WHERE col1 < 0", -1); } @Test http://git-wip-us.apache.org/repos/asf/phoenix/blob/6198bf7b/phoenix-core/src/main/java/org/apache/phoenix/execute/AggregatePlan.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/execute/AggregatePlan.java b/phoenix-core/src/main/java/org/apache/phoenix/execute/AggregatePlan.java index 136379d..00d478a 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/execute/AggregatePlan.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/execute/AggregatePlan.java @@ -223,7 +223,7 @@ public class AggregatePlan extends BaseQueryPlan { AggregatingResultIterator aggResultIterator; // No need to merge sort for ungrouped aggregation - if (groupBy.isEmpty()) { + if (groupBy.isEmpty() || groupBy.isUngroupedAggregate()) { aggResultIterator = new UngroupedAggregatingResultIterator(new ConcatResultIterator(iterators), aggregators); // If salted or local index we still need a merge sort as we'll potentially have multiple group by keys that aren't contiguous. } else if (groupBy.isOrderPreserving() && !(this.getTableRef().getTable().getBucketNum() != null || this.getTableRef().getTable().getIndexType() == IndexType.LOCAL)) {