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;
}