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