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

Reply via email to