KYLIN-1180 Fix some NPE on Dictionary

Signed-off-by: honma <[email protected]>


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

Branch: refs/heads/2.0-rc
Commit: 1314fdafc00f40f6989492ac3eb4d7b1e74bb3a3
Parents: b2c0963
Author: lidongsjtu <[email protected]>
Authored: Mon Nov 30 10:52:08 2015 +0800
Committer: honma <[email protected]>
Committed: Fri Dec 4 16:14:20 2015 +0800

----------------------------------------------------------------------
 .../java/org/apache/kylin/dict/TableColumnValueEnumerator.java | 2 +-
 .../java/org/apache/kylin/dict/lookup/LookupBytesTable.java    | 4 ++++
 .../java/org/apache/kylin/dict/lookup/LookupStringTable.java   | 3 +++
 .../main/java/org/apache/kylin/dict/lookup/LookupTable.java    | 6 ++++--
 4 files changed, 12 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/1314fdaf/core-dictionary/src/main/java/org/apache/kylin/dict/TableColumnValueEnumerator.java
----------------------------------------------------------------------
diff --git 
a/core-dictionary/src/main/java/org/apache/kylin/dict/TableColumnValueEnumerator.java
 
b/core-dictionary/src/main/java/org/apache/kylin/dict/TableColumnValueEnumerator.java
index ab9a6ff..5f9460c 100644
--- 
a/core-dictionary/src/main/java/org/apache/kylin/dict/TableColumnValueEnumerator.java
+++ 
b/core-dictionary/src/main/java/org/apache/kylin/dict/TableColumnValueEnumerator.java
@@ -53,7 +53,7 @@ public class TableColumnValueEnumerator implements 
IDictionaryValueEnumerator {
                 colStrValue = split[colIndex];
             }
 
-            colValue = Bytes.toBytes(colStrValue);
+            colValue = colStrValue == null ? null : Bytes.toBytes(colStrValue);
             return true;
 
         } else {

http://git-wip-us.apache.org/repos/asf/kylin/blob/1314fdaf/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/LookupBytesTable.java
----------------------------------------------------------------------
diff --git 
a/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/LookupBytesTable.java
 
b/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/LookupBytesTable.java
index 081a97e..0758edc 100644
--- 
a/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/LookupBytesTable.java
+++ 
b/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/LookupBytesTable.java
@@ -49,4 +49,8 @@ public class LookupBytesTable extends LookupTable<ByteArray> {
         return cell.toString();
     }
 
+    public Class<?> getType() {
+        return ByteArray.class;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/1314fdaf/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/LookupStringTable.java
----------------------------------------------------------------------
diff --git 
a/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/LookupStringTable.java
 
b/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/LookupStringTable.java
index 2d92d68..ce73feb 100644
--- 
a/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/LookupStringTable.java
+++ 
b/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/LookupStringTable.java
@@ -43,4 +43,7 @@ public class LookupStringTable extends LookupTable<String> {
         return cell;
     }
 
+    public Class<?> getType() {
+        return String.class;
+    }
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/1314fdaf/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/LookupTable.java
----------------------------------------------------------------------
diff --git 
a/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/LookupTable.java 
b/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/LookupTable.java
index 5d43542..eb2b963 100644
--- 
a/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/LookupTable.java
+++ 
b/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/LookupTable.java
@@ -36,7 +36,7 @@ import com.google.common.collect.Sets;
 /**
  * An in-memory lookup table, in which each cell is an object of type T. The
  * table is indexed by specified PK for fast lookup.
- * 
+ *
  * @author yangli9
  */
 abstract public class LookupTable<T extends Comparable<T>> {
@@ -73,7 +73,7 @@ abstract public class LookupTable<T extends Comparable<T>> {
     @SuppressWarnings("unchecked")
     private void initRow(String[] cols, int[] keyIndex) {
         T[] value = convertRow(cols);
-        T[] keyCols = (T[]) 
java.lang.reflect.Array.newInstance(value[0].getClass(), keyIndex.length);
+        T[] keyCols = (T[]) java.lang.reflect.Array.newInstance(getType(), 
keyIndex.length);
         for (int i = 0; i < keyCols.length; i++)
             keyCols[i] = value[keyIndex[i]];
 
@@ -162,6 +162,8 @@ abstract public class LookupTable<T extends Comparable<T>> {
 
     abstract protected String toString(T cell);
 
+    abstract public Class<?> getType();
+
     public void dump() {
         for (Array<T> key : data.keySet()) {
             System.out.println(toString(key.data) + " => " + 
toString(data.get(key)));

Reply via email to