Repository: kylin
Updated Branches:
  refs/heads/master e53de3084 -> 425d56bb5


KYLIN-1538 fix DoubleDeltaSerializer for big numbers (over 32 bits)


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/425d56bb
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/425d56bb
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/425d56bb

Branch: refs/heads/master
Commit: 425d56bb5afccd99e666786f755cd4686a1706cc
Parents: e53de30
Author: Li Yang <[email protected]>
Authored: Mon Mar 28 16:19:35 2016 +0800
Committer: Li Yang <[email protected]>
Committed: Mon Mar 28 16:19:35 2016 +0800

----------------------------------------------------------------------
 .../measure/topn/DoubleDeltaSerializer.java     |  2 +-
 .../measure/topn/DoubleDeltaSerializerTest.java | 21 +++++++++++++++++++-
 2 files changed, 21 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/425d56bb/core-metadata/src/main/java/org/apache/kylin/measure/topn/DoubleDeltaSerializer.java
----------------------------------------------------------------------
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/measure/topn/DoubleDeltaSerializer.java
 
b/core-metadata/src/main/java/org/apache/kylin/measure/topn/DoubleDeltaSerializer.java
index f972cbc..2d9e3ee 100644
--- 
a/core-metadata/src/main/java/org/apache/kylin/measure/topn/DoubleDeltaSerializer.java
+++ 
b/core-metadata/src/main/java/org/apache/kylin/measure/topn/DoubleDeltaSerializer.java
@@ -34,7 +34,7 @@ public class DoubleDeltaSerializer {
     static final long[] MASKS = new long[64];
     {
         for (int i = 0; i < MASKS.length; i++) {
-            MASKS[i] = (1 << i) - 1;
+            MASKS[i] = (1L << i) - 1;
         }
     }
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/425d56bb/core-metadata/src/test/java/org/apache/kylin/measure/topn/DoubleDeltaSerializerTest.java
----------------------------------------------------------------------
diff --git 
a/core-metadata/src/test/java/org/apache/kylin/measure/topn/DoubleDeltaSerializerTest.java
 
b/core-metadata/src/test/java/org/apache/kylin/measure/topn/DoubleDeltaSerializerTest.java
index 3a387f5..3c742a9 100644
--- 
a/core-metadata/src/test/java/org/apache/kylin/measure/topn/DoubleDeltaSerializerTest.java
+++ 
b/core-metadata/src/test/java/org/apache/kylin/measure/topn/DoubleDeltaSerializerTest.java
@@ -76,10 +76,29 @@ public class DoubleDeltaSerializerTest {
         System.out.println("doubles size of " + (n * 8) + " bytes serialized 
to " + buf.limit() + " bytes");
     }
 
+    @Test
+    public void testRandom2() {
+        Random rand = new Random();
+        int n = 1000;
+
+        double[] nums = new double[n];
+        for (int i = 0; i < n; i++) {
+            nums[i] = rand.nextInt();
+        }
+        Arrays.sort(nums);
+
+        buf.clear();
+        dds.serialize(nums, buf);
+        buf.flip();
+        double[] r = dds.deserialize(buf);
+        assertArrayEquals(nums, r);
+        System.out.println("doubles size of " + (n * 8) + " bytes serialized 
to " + buf.limit() + " bytes");
+    }
+
     private static void assertArrayEquals(double[] expected, double[] actual) {
         assertEquals(expected.length, actual.length);
         for (int i = 0; i < expected.length; i++) {
-            assertEquals(expected[i], actual[i], 0.01);
+            assertEquals(expected[i], actual[i], 0.02);
         }
     }
 }

Reply via email to