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 2016/09/02 07:49:58 UTC

kylin git commit: KYLIN-1698 backend done, pending GUI

Repository: kylin
Updated Branches:
  refs/heads/master 16de8ba27 -> a20d709d2


KYLIN-1698 backend done, pending GUI


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

Branch: refs/heads/master
Commit: a20d709d27da9060d63ccb1c14902235a3aedec2
Parents: 16de8ba
Author: Li Yang <li...@apache.org>
Authored: Fri Sep 2 15:49:34 2016 +0800
Committer: Li Yang <li...@apache.org>
Committed: Fri Sep 2 15:49:48 2016 +0800

----------------------------------------------------------------------
 .../kylin/metadata/datatype/DataType.java       |  2 +-
 .../kylin/metadata/model/PartitionDesc.java     | 20 +++++++++++++++++++-
 2 files changed, 20 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/a20d709d/core-metadata/src/main/java/org/apache/kylin/metadata/datatype/DataType.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/datatype/DataType.java b/core-metadata/src/main/java/org/apache/kylin/metadata/datatype/DataType.java
index 032fba2..c981f46 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/datatype/DataType.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/datatype/DataType.java
@@ -63,7 +63,7 @@ public class DataType implements Serializable {
         register("any", "char", "varchar", "string", //
                 "boolean", "byte", "binary", //
                 "int", "short", "long", "integer", "tinyint", "smallint", "bigint", //
-                "int4", "long8", //
+                "int4", "long8", // for test only
                 "float", "real", "double", "decimal", "numeric", //
                 "date", "time", "datetime", "timestamp", //
                 InnerDataTypeEnum.LITERAL.getDataType(), InnerDataTypeEnum.DERIVED.getDataType());

http://git-wip-us.apache.org/repos/asf/kylin/blob/a20d709d/core-metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java b/core-metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java
index 3f265e2..8d3979e 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java
@@ -24,6 +24,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.kylin.common.util.ClassUtil;
 import org.apache.kylin.common.util.DateFormat;
 import org.apache.kylin.common.util.StringSplitter;
+import org.apache.kylin.metadata.datatype.DataType;
 
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
@@ -90,6 +91,11 @@ public class PartitionDesc {
         partitionConditionBuilder = (IPartitionConditionBuilder) ClassUtil.newInstance(partitionConditionBuilderClz);
     }
 
+    public boolean partitionColumnIsTimeMillis() {
+        DataType type = partitionDateColumnRef.getType();
+        return type.isBigInt();
+    }
+
     public boolean isPartitioned() {
         return partitionDateColumnRef != null;
     }
@@ -166,7 +172,9 @@ public class PartitionDesc {
             String partitionDateColumnName = partDesc.getPartitionDateColumn();
             String partitionTimeColumnName = partDesc.getPartitionTimeColumn();
 
-            if (partitionDateColumnName != null && partitionTimeColumnName == null) {
+            if (partDesc.partitionColumnIsTimeMillis()) {
+                buildSingleColumnRangeCondition(builder, partitionDateColumnName, startInclusive, endExclusive, tableAlias);
+            } else if (partitionDateColumnName != null && partitionTimeColumnName == null) {
                 buildSingleColumnRangeCondition(builder, partitionDateColumnName, startInclusive, endExclusive, partDesc.getPartitionDateFormat(), tableAlias);
             } else if (partitionDateColumnName == null && partitionTimeColumnName != null) {
                 buildSingleColumnRangeCondition(builder, partitionTimeColumnName, startInclusive, endExclusive, partDesc.getPartitionTimeFormat(), tableAlias);
@@ -190,6 +198,15 @@ public class PartitionDesc {
             return columnName;
         }
 
+        private static void buildSingleColumnRangeCondition(StringBuilder builder, String partitionColumnName, long startInclusive, long endExclusive, Map<String, String> tableAlias) {
+            partitionColumnName = replaceColumnNameWithAlias(partitionColumnName, tableAlias);
+            if (startInclusive > 0) {
+                builder.append(partitionColumnName + " >= " + startInclusive);
+                builder.append(" AND ");
+            }
+            builder.append(partitionColumnName + " < " + endExclusive);
+        }
+
         private static void buildSingleColumnRangeCondition(StringBuilder builder, String partitionColumnName, long startInclusive, long endExclusive, String partitionColumnDateFormat, Map<String, String> tableAlias) {
             partitionColumnName = replaceColumnNameWithAlias(partitionColumnName, tableAlias);
             if (startInclusive > 0) {
@@ -272,4 +289,5 @@ public class PartitionDesc {
         newPartDesc.setPartitionDateStart(partitionDesc.getPartitionDateStart());
         return newPartDesc;
     }
+
 }