minor, enhance buildSingleColumnRangeCondition

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

Branch: refs/heads/master
Commit: 58ca04efc1b10b38bd996513a41233f5a31c0180
Parents: 0d55c31
Author: Cheng Wang <cheng.w...@kyligence.io>
Authored: Mon Sep 18 21:11:05 2017 +0800
Committer: liyang-gmt8 <liy...@apache.org>
Committed: Mon Sep 18 21:26:44 2017 +0800

----------------------------------------------------------------------
 .../apache/kylin/metadata/model/PartitionDesc.java |  8 +++++++-
 .../DefaultPartitionConditionBuilderTest.java      | 17 +++++++++++++----
 2 files changed, 20 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/58ca04ef/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 cfa062b..dcbbfd2 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
@@ -184,7 +184,7 @@ public class PartitionDesc implements Serializable {
         public String buildDateRangeCondition(PartitionDesc partDesc, 
SegmentRange segRange) {
             long startInclusive = (Long) segRange.start.v;
             long endExclusive = (Long) segRange.end.v;
-            
+
             TblColRef partitionDateColumn = 
partDesc.getPartitionDateColumnRef();
             TblColRef partitionTimeColumn = 
partDesc.getPartitionTimeColumnRef();
             StringBuilder builder = new StringBuilder();
@@ -232,6 +232,12 @@ public class PartitionDesc implements Serializable {
         private static void buildSingleColumnRangeCondition(StringBuilder 
builder, TblColRef partitionColumn,
                 long startInclusive, long endExclusive, String 
partitionColumnDateFormat) {
             String partitionColumnName = partitionColumn.getIdentity();
+
+            if (endExclusive <= startInclusive) {
+                builder.append("1=1");
+                return;
+            }
+
             if (startInclusive > 0) {
                 builder.append(partitionColumnName + " >= '"
                         + DateFormat.formatToDateStr(startInclusive, 
partitionColumnDateFormat) + "'");

http://git-wip-us.apache.org/repos/asf/kylin/blob/58ca04ef/core-metadata/src/test/java/org/apache/kylin/metadata/model/DefaultPartitionConditionBuilderTest.java
----------------------------------------------------------------------
diff --git 
a/core-metadata/src/test/java/org/apache/kylin/metadata/model/DefaultPartitionConditionBuilderTest.java
 
b/core-metadata/src/test/java/org/apache/kylin/metadata/model/DefaultPartitionConditionBuilderTest.java
index 19d6f2f..cc7156a 100644
--- 
a/core-metadata/src/test/java/org/apache/kylin/metadata/model/DefaultPartitionConditionBuilderTest.java
+++ 
b/core-metadata/src/test/java/org/apache/kylin/metadata/model/DefaultPartitionConditionBuilderTest.java
@@ -54,7 +54,12 @@ public class DefaultPartitionConditionBuilderTest extends 
LocalFileMetadataTestC
         partitionDesc.setPartitionDateFormat("yyyy-MM-dd");
         TSRange range = new TSRange(DateFormat.stringToMillis("2016-02-22"), 
DateFormat.stringToMillis("2016-02-23"));
         String condition = 
partitionConditionBuilder.buildDateRangeCondition(partitionDesc, range);
-        Assert.assertEquals("UNKNOWN_ALIAS.DATE_COLUMN >= '2016-02-22' AND 
UNKNOWN_ALIAS.DATE_COLUMN < '2016-02-23'", condition);
+        Assert.assertEquals("UNKNOWN_ALIAS.DATE_COLUMN >= '2016-02-22' AND 
UNKNOWN_ALIAS.DATE_COLUMN < '2016-02-23'",
+                condition);
+
+        range = new TSRange(0L, 0L);
+        condition = 
partitionConditionBuilder.buildDateRangeCondition(partitionDesc, range);
+        Assert.assertEquals("1=1", condition);
     }
 
     @Test
@@ -64,7 +69,8 @@ public class DefaultPartitionConditionBuilderTest extends 
LocalFileMetadataTestC
         partitionDesc.setPartitionTimeColumnRef(col);
         partitionDesc.setPartitionTimeColumn(col.getCanonicalName());
         partitionDesc.setPartitionTimeFormat("HH");
-        TSRange range = new TSRange(DateFormat.stringToMillis("2016-02-22 
00:00:00"), DateFormat.stringToMillis("2016-02-23 01:00:00"));
+        TSRange range = new TSRange(DateFormat.stringToMillis("2016-02-22 
00:00:00"),
+                DateFormat.stringToMillis("2016-02-23 01:00:00"));
         String condition = 
partitionConditionBuilder.buildDateRangeCondition(partitionDesc, range);
         Assert.assertEquals("UNKNOWN_ALIAS.HOUR_COLUMN >= '00' AND 
UNKNOWN_ALIAS.HOUR_COLUMN < '01'", condition);
     }
@@ -80,9 +86,12 @@ public class DefaultPartitionConditionBuilderTest extends 
LocalFileMetadataTestC
         partitionDesc.setPartitionTimeColumnRef(col2);
         partitionDesc.setPartitionTimeColumn(col2.getCanonicalName());
         partitionDesc.setPartitionTimeFormat("H");
-        TSRange range = new TSRange(DateFormat.stringToMillis("2016-02-22 
00:00:00"), DateFormat.stringToMillis("2016-02-23 01:00:00"));
+        TSRange range = new TSRange(DateFormat.stringToMillis("2016-02-22 
00:00:00"),
+                DateFormat.stringToMillis("2016-02-23 01:00:00"));
         String condition = 
partitionConditionBuilder.buildDateRangeCondition(partitionDesc, range);
-        Assert.assertEquals("((UNKNOWN_ALIAS.DATE_COLUMN = '2016-02-22' AND 
UNKNOWN_ALIAS.HOUR_COLUMN >= '0') OR (UNKNOWN_ALIAS.DATE_COLUMN > 
'2016-02-22')) AND ((UNKNOWN_ALIAS.DATE_COLUMN = '2016-02-23' AND 
UNKNOWN_ALIAS.HOUR_COLUMN < '1') OR (UNKNOWN_ALIAS.DATE_COLUMN < 
'2016-02-23'))", condition);
+        Assert.assertEquals(
+                "((UNKNOWN_ALIAS.DATE_COLUMN = '2016-02-22' AND 
UNKNOWN_ALIAS.HOUR_COLUMN >= '0') OR (UNKNOWN_ALIAS.DATE_COLUMN > 
'2016-02-22')) AND ((UNKNOWN_ALIAS.DATE_COLUMN = '2016-02-23' AND 
UNKNOWN_ALIAS.HOUR_COLUMN < '1') OR (UNKNOWN_ALIAS.DATE_COLUMN < 
'2016-02-23'))",
+                condition);
     }
 
 }

Reply via email to