You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ma...@apache.org on 2016/11/21 07:45:06 UTC

[3/3] kylin git commit: KYLIN-1875 minor bug fix

KYLIN-1875 minor bug fix


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

Branch: refs/heads/master
Commit: d38d2e9550a0a296ab7edbbbbb0155cfa39fc21f
Parents: 4b525d0
Author: Hongbin Ma <ma...@apache.org>
Authored: Mon Nov 21 13:37:20 2016 +0800
Committer: Hongbin Ma <ma...@apache.org>
Committed: Mon Nov 21 13:37:59 2016 +0800

----------------------------------------------------------------------
 .../apache/kylin/common/util/DateFormat.java    | 10 ++++++--
 .../org/apache/kylin/metadata/tuple/Tuple.java  | 27 ++++++++++----------
 .../apache/kylin/query/schema/OLAPTable.java    |  2 +-
 3 files changed, 23 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/d38d2e95/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java b/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java
index 1d70a2d..2412543 100644
--- a/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java
+++ b/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java
@@ -103,6 +103,7 @@ public class DateFormat {
         // try to be smart and guess the date format
         if (isAllDigits(str)) {
             if (str.length() == 8)
+                //TODO: might be prolematic if an actual ts happends to be 8 digits, e.g. 1970-01-01 10:00:01.123
                 return stringToDate(str, COMPACT_DATE_PATTERN).getTime();
             else
                 return Long.parseLong(str);
@@ -119,8 +120,13 @@ public class DateFormat {
 
     private static boolean isAllDigits(String str) {
         for (int i = 0, n = str.length(); i < n; i++) {
-            if (Character.isDigit(str.charAt(i)) == false)
-                return false;
+            if (!Character.isDigit(str.charAt(i))) {
+                if (i == 0 && str.charAt(0) == '-') {
+                    continue;
+                } else {
+                    return false;
+                }
+            }
         }
         return true;
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/d38d2e95/core-metadata/src/main/java/org/apache/kylin/metadata/tuple/Tuple.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/tuple/Tuple.java b/core-metadata/src/main/java/org/apache/kylin/metadata/tuple/Tuple.java
index 9074403..721a719 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/tuple/Tuple.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/tuple/Tuple.java
@@ -181,29 +181,30 @@ public class Tuple implements ITuple {
         if ((strValue.equals("") || strValue.equals("\\N")) && !dataTypeName.equals("string") && !dataTypeName.startsWith("varchar"))
             return null;
 
-        // TODO use data type enum instead of string comparison
-        if ("date".equals(dataTypeName)) {
+        switch (dataTypeName) {
+        case "date":
             // convert epoch time
             return Integer.valueOf(dateToEpicDays(strValue));// Optiq expects Integer instead of Long. by honma
-        } else if ("timestamp".equals(dataTypeName) || "datetime".equals(dataTypeName)) {
+        case "datetime":
+        case "timestamp":
             return Long.valueOf(DateFormat.stringToMillis(strValue));
-        } else if ("tinyint".equals(dataTypeName)) {
+        case "tinyint":
             return Byte.valueOf(strValue);
-        } else if ("smallint".equals(dataTypeName)) {
+        case "smallint":
             return Short.valueOf(strValue);
-        } else if ("integer".equals(dataTypeName)) {
+        case "integer":
             return Integer.valueOf(strValue);
-        } else if ("bigint".equals(dataTypeName)) {
+        case "bigint":
             return Long.valueOf(strValue);
-        } else if ("double".equals(dataTypeName)) {
+        case "double":
             return Double.valueOf(strValue);
-        } else if ("decimal".equals(dataTypeName)) {
+        case "decimal":
             return new BigDecimal(strValue);
-        } else if ("float".equals(dataTypeName)) {
+        case "float":
             return Float.valueOf(strValue);
-        } else if ("boolean".equals(dataTypeName)) {
-            return Boolean.valueOf(strValue);
-        } else {
+        case "boolean":
+            return Boolean.valueOf(strValue) | "1".equals(strValue); // in some extended encodings boolean might be encoded as a number
+        default:
             return strValue;
         }
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/d38d2e95/query/src/main/java/org/apache/kylin/query/schema/OLAPTable.java
----------------------------------------------------------------------
diff --git a/query/src/main/java/org/apache/kylin/query/schema/OLAPTable.java b/query/src/main/java/org/apache/kylin/query/schema/OLAPTable.java
index 21b60f1..06ffdba 100644
--- a/query/src/main/java/org/apache/kylin/query/schema/OLAPTable.java
+++ b/query/src/main/java/org/apache/kylin/query/schema/OLAPTable.java
@@ -203,7 +203,7 @@ public class OLAPTable extends AbstractQueryableTable implements TranslatableTab
             if (realization.getType() == RealizationType.INVERTED_INDEX && realization.getModel().isFactTable(sourceTable.getIdentity())) {
                 DataModelDesc dataModelDesc = realization.getModel();
                 for (String metricColumn : dataModelDesc.getMetrics()) {
-                    ColumnDesc columnDesc = metadataManager.getColumnDesc(dataModelDesc.getRootFactTable() + "." + metricColumn);
+                    ColumnDesc columnDesc = metadataManager.getColumnDesc(dataModelDesc.getRootFactTable().getTableIdentity() + "." + metricColumn);
                     if (columnDesc.getType().isIntegerFamily() && !columnDesc.getType().isBigInt())
                         updateColumns.add(columnDesc);
                 }