KYLIN-1635 enhance clear()
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/44ce1354 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/44ce1354 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/44ce1354 Branch: refs/heads/1.5.x-HBase1.x Commit: 44ce1354ba1c0d7e895d39ee0b39a8f95c74654b Parents: c1ece6a Author: Yang Li <liy...@apache.org> Authored: Sun May 1 20:32:56 2016 +0800 Committer: Yang Li <liy...@apache.org> Committed: Sun May 1 20:32:56 2016 +0800 ---------------------------------------------------------------------- .../apache/kylin/measure/hllc/HyperLogLogPlusCounter.java | 8 +++++++- .../org/apache/kylin/measure/hll/HyperLogLogCounterTest.java | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/44ce1354/core-metadata/src/main/java/org/apache/kylin/measure/hllc/HyperLogLogPlusCounter.java ---------------------------------------------------------------------- diff --git a/core-metadata/src/main/java/org/apache/kylin/measure/hllc/HyperLogLogPlusCounter.java b/core-metadata/src/main/java/org/apache/kylin/measure/hllc/HyperLogLogPlusCounter.java index 4e6a652..823a08f 100644 --- a/core-metadata/src/main/java/org/apache/kylin/measure/hllc/HyperLogLogPlusCounter.java +++ b/core-metadata/src/main/java/org/apache/kylin/measure/hllc/HyperLogLogPlusCounter.java @@ -70,7 +70,13 @@ public class HyperLogLogPlusCounter implements Serializable, Comparable<HyperLog public void clear() { byte zero = (byte) 0; - Arrays.fill(registers, zero); + if (singleBucket == -1) { + ; + } else if (singleBucket >= 0) { + registers[singleBucket] = 0; + } else { + Arrays.fill(registers, zero); + } singleBucket = -1; } http://git-wip-us.apache.org/repos/asf/kylin/blob/44ce1354/core-metadata/src/test/java/org/apache/kylin/measure/hll/HyperLogLogCounterTest.java ---------------------------------------------------------------------- diff --git a/core-metadata/src/test/java/org/apache/kylin/measure/hll/HyperLogLogCounterTest.java b/core-metadata/src/test/java/org/apache/kylin/measure/hll/HyperLogLogCounterTest.java index b42fd50..be93f8a 100644 --- a/core-metadata/src/test/java/org/apache/kylin/measure/hll/HyperLogLogCounterTest.java +++ b/core-metadata/src/test/java/org/apache/kylin/measure/hll/HyperLogLogCounterTest.java @@ -54,6 +54,7 @@ public class HyperLogLogCounterTest { one.add(rand1.nextInt()); hllc.merge(one); } + assertTrue(hllc.getCountEstimate() > 1000000 * 0.9); } @Test