You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by sh...@apache.org on 2017/12/13 10:01:20 UTC

kylin git commit: KYLIN-3100 Building empty partitioned cube with rest api supports partition_start_date

Repository: kylin
Updated Branches:
  refs/heads/master 79374047d -> 39c80ca16


KYLIN-3100 Building empty partitioned cube with rest api supports partition_start_date

Signed-off-by: shaofengshi <sh...@apache.org>


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

Branch: refs/heads/master
Commit: 39c80ca16fea0a1353f86002e2ee28ee8a3442a0
Parents: 7937404
Author: Tianhao Zhao <th...@outlook.com>
Authored: Wed Dec 13 14:05:12 2017 +0800
Committer: shaofengshi <sh...@apache.org>
Committed: Wed Dec 13 18:01:14 2017 +0800

----------------------------------------------------------------------
 .../java/org/apache/kylin/cube/CubeManager.java |  9 +++++--
 .../org/apache/kylin/cube/CubeManagerTest.java  | 26 ++++++++++++++++++++
 2 files changed, 33 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/39c80ca1/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java b/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
index 5e72721..e5ec2d7 100755
--- a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
@@ -469,8 +469,13 @@ public class CubeManager implements IRealizationProvider {
         if (cube.getModel().getPartitionDesc().isPartitioned()) {
             // if missing start, set it to where last time ends
             CubeSegment last = cube.getLastSegment();
-            if (last != null && !last.isOffsetCube() && tsRange.start.v == 0) {
-                tsRange = new TSRange(last.getTSRange().end.v, tsRange.end.v);
+            CubeDesc cubeDesc = cube.getDescriptor();
+            if (tsRange != null && tsRange.start.v == 0) {
+                if (last == null) {
+                    tsRange = new TSRange(cubeDesc.getPartitionDateStart(), tsRange.end.v);
+                } else if (!last.isOffsetCube()) {
+                    tsRange = new TSRange(last.getTSRange().end.v, tsRange.end.v);
+                }
             }
         } else {
             // full build

http://git-wip-us.apache.org/repos/asf/kylin/blob/39c80ca1/core-cube/src/test/java/org/apache/kylin/cube/CubeManagerTest.java
----------------------------------------------------------------------
diff --git a/core-cube/src/test/java/org/apache/kylin/cube/CubeManagerTest.java b/core-cube/src/test/java/org/apache/kylin/cube/CubeManagerTest.java
index bb91650..03dd928 100644
--- a/core-cube/src/test/java/org/apache/kylin/cube/CubeManagerTest.java
+++ b/core-cube/src/test/java/org/apache/kylin/cube/CubeManagerTest.java
@@ -22,6 +22,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 import java.util.NavigableSet;
@@ -409,6 +410,31 @@ public class CubeManagerTest extends LocalFileMetadataTestCase {
         }
     }
 
+    @Test
+    public void testBuildCubeWithPartitionStartDate() throws IOException {
+        Long PARTITION_DATE_START = 1513123200L;
+        Long FIRST_BUILD_DATE_END = 1514764800L;
+        Long SECOND_BUILD_DATE_END = 1540339200L;
+
+        KylinConfig config = getTestConfig();
+        CubeManager cubeManager = CubeManager.getInstance(config);
+        CubeInstance cube = cubeManager.getCube("test_kylin_cube_with_slr_empty");
+        cube.getDescriptor().setPartitionDateStart(PARTITION_DATE_START);
+
+        CubeSegment segment = cubeManager.appendSegment(cube, new TSRange(0L, FIRST_BUILD_DATE_END), null, null, null);
+        assertEquals(segment._getDateRangeStart(), PARTITION_DATE_START.longValue());
+        assertEquals(segment._getDateRangeEnd(), FIRST_BUILD_DATE_END.longValue());
+
+        segment.setStatus(SegmentStatusEnum.READY);
+        CubeUpdate cubeBuilder = new CubeUpdate(cube);
+        cubeManager.updateCube(cubeBuilder);
+
+        segment = cubeManager.appendSegment(cube, new TSRange(0L, SECOND_BUILD_DATE_END), null, null, null);
+        assertEquals(segment._getDateRangeStart(), FIRST_BUILD_DATE_END.longValue());
+        assertEquals(segment._getDateRangeEnd(), SECOND_BUILD_DATE_END.longValue());
+
+    }
+
 
     public CubeDescManager getCubeDescManager() {
         return CubeDescManager.getInstance(getTestConfig());