You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2015/06/17 08:46:37 UTC

incubator-kylin git commit: minor, fix NumberDictionary for empty string value

Repository: incubator-kylin
Updated Branches:
  refs/heads/0.7-staging 759e95675 -> 4a6e2d3d0


minor, fix NumberDictionary for empty string value


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

Branch: refs/heads/0.7-staging
Commit: 4a6e2d3d066e2d71a1f6418cd9f88df3b9a0acba
Parents: 759e956
Author: Li, Yang <ya...@ebay.com>
Authored: Wed Jun 17 14:46:27 2015 +0800
Committer: Li, Yang <ya...@ebay.com>
Committed: Wed Jun 17 14:46:27 2015 +0800

----------------------------------------------------------------------
 .../main/java/org/apache/kylin/dict/DictionaryGenerator.java    | 3 +++
 .../src/main/java/org/apache/kylin/dict/NumberDictionary.java   | 5 +++++
 .../src/main/java/org/apache/kylin/dict/TrieDictionary.java     | 2 +-
 3 files changed, 9 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/4a6e2d3d/dictionary/src/main/java/org/apache/kylin/dict/DictionaryGenerator.java
----------------------------------------------------------------------
diff --git a/dictionary/src/main/java/org/apache/kylin/dict/DictionaryGenerator.java b/dictionary/src/main/java/org/apache/kylin/dict/DictionaryGenerator.java
index 04c5aed..033ac4b 100644
--- a/dictionary/src/main/java/org/apache/kylin/dict/DictionaryGenerator.java
+++ b/dictionary/src/main/java/org/apache/kylin/dict/DictionaryGenerator.java
@@ -26,6 +26,7 @@ import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.util.Bytes;
 import org.apache.kylin.dict.lookup.TableReader;
@@ -160,6 +161,8 @@ public class DictionaryGenerator {
         TrieDictionaryBuilder builder = new TrieDictionaryBuilder(new StringBytesConverter());
         for (byte[] value : values) {
             String v = Bytes.toString(value);
+            if (StringUtils.isBlank(v)) // empty string is null for numbers
+                continue;
             builder.addValue(v);
             if (samples.size() < nSamples && samples.contains(v) == false)
                 samples.add(v);

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/4a6e2d3d/dictionary/src/main/java/org/apache/kylin/dict/NumberDictionary.java
----------------------------------------------------------------------
diff --git a/dictionary/src/main/java/org/apache/kylin/dict/NumberDictionary.java b/dictionary/src/main/java/org/apache/kylin/dict/NumberDictionary.java
index d0d97e0..b03af84 100644
--- a/dictionary/src/main/java/org/apache/kylin/dict/NumberDictionary.java
+++ b/dictionary/src/main/java/org/apache/kylin/dict/NumberDictionary.java
@@ -166,6 +166,11 @@ public class NumberDictionary<T> extends TrieDictionary<T> {
     }
 
     @Override
+    protected boolean isNullObjectForm(T value) {
+        return value == null || value.equals("");
+    }
+
+    @Override
     protected int getIdFromValueBytesImpl(byte[] value, int offset, int len, int roundingFlag) {
         NumberBytesCodec codec = getCodec();
         codec.encodeNumber(value, offset, len);

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/4a6e2d3d/dictionary/src/main/java/org/apache/kylin/dict/TrieDictionary.java
----------------------------------------------------------------------
diff --git a/dictionary/src/main/java/org/apache/kylin/dict/TrieDictionary.java b/dictionary/src/main/java/org/apache/kylin/dict/TrieDictionary.java
index ef845ce..94108a2 100644
--- a/dictionary/src/main/java/org/apache/kylin/dict/TrieDictionary.java
+++ b/dictionary/src/main/java/org/apache/kylin/dict/TrieDictionary.java
@@ -169,7 +169,7 @@ public class TrieDictionary<T> extends Dictionary<T> {
         int seq = lookupSeqNoFromValue(headSize, value, offset, offset + len, roundingFlag);
         int id = calcIdFromSeqNo(seq);
         if (id < 0)
-            throw new IllegalArgumentException("Not a valid value: " + bytesConvert.convertFromBytes(value, offset, len));
+            throw new IllegalArgumentException("Not a valid value: '" + bytesConvert.convertFromBytes(value, offset, len) + "'");
         return id;
     }