From 8d944a62c9be396df482d59f4104781125d34c89 Mon Sep 17 00:00:00 2001 From: sunyerui Date: Wed, 9 Dec 2015 17:41:21 +0800 Subject: [PATCH] KYLIN-1216 Can't parse DateFormat like 'YYYYMMDD' correctly in query --- .gitignore | 2 ++ .../src/main/java/org/apache/kylin/common/util/DateFormat.java | 8 +++++++- .../java/org/apache/kylin/storage/translate/HBaseKeyRange.java | 8 ++++---- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index e3a72a2..7d1091d 100644 --- a/.gitignore +++ b/.gitignore @@ -85,3 +85,5 @@ webapp/app/components/* ebay* build/commit_SHA1 +dist/ +tomcat/ 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 43ff00e..9fc3122 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 @@ -85,9 +85,15 @@ public class DateFormat { } public static long stringToMillis(String str) { + return stringToMillis(str, DEFAULT_DATE_PATTERN); + } + + public static long stringToMillis(String str, String partitionDateFormat) { if (isAllDigits(str)) { return Long.parseLong(str); - } else if (str.length() == 10) { + } else if (str.length() == 8 && partitionDateFormat.length() == 8) { + return stringToDate(str, partitionDateFormat).getTime(); + } else if (str.length() == 10 && partitionDateFormat.length() == 10) { return stringToDate(str, DEFAULT_DATE_PATTERN).getTime(); } else if (str.length() == 19) { return stringToDate(str, DEFAULT_DATETIME_PATTERN_WITHOUT_MILLISECONDS).getTime(); diff --git a/core-storage/src/main/java/org/apache/kylin/storage/translate/HBaseKeyRange.java b/core-storage/src/main/java/org/apache/kylin/storage/translate/HBaseKeyRange.java index 42946eb..a5ca62b 100644 --- a/core-storage/src/main/java/org/apache/kylin/storage/translate/HBaseKeyRange.java +++ b/core-storage/src/main/java/org/apache/kylin/storage/translate/HBaseKeyRange.java @@ -115,7 +115,7 @@ public class HBaseKeyRange implements Comparable { TblColRef partitionDateColumnRef = cubeSeg.getCubeDesc().getModel().getPartitionDesc().getPartitionDateColumnRef(); if (column.equals(partitionDateColumnRef)) { - initPartitionRange(dimRange); + initPartitionRange(dimRange, cubeSeg.getCubeDesc().getModel().getPartitionDesc().getPartitionDateFormat()); } } @@ -130,12 +130,12 @@ public class HBaseKeyRange implements Comparable { this.fuzzyKeys = buildFuzzyKeys(fuzzyValues); } - private void initPartitionRange(ColumnValueRange dimRange) { + private void initPartitionRange(ColumnValueRange dimRange, String partitionDateFormat) { if (null != dimRange.getBeginValue()) { - this.partitionColumnStartDate = DateFormat.stringToMillis(dimRange.getBeginValue()); + this.partitionColumnStartDate = DateFormat.stringToMillis(dimRange.getBeginValue(), partitionDateFormat); } if (null != dimRange.getEndValue()) { - this.partitionColumnEndDate = DateFormat.stringToMillis(dimRange.getEndValue()); + this.partitionColumnEndDate = DateFormat.stringToMillis(dimRange.getEndValue(), partitionDateFormat); } } -- 2.3.2 (Apple Git-55)