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