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 <[email protected]> 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 <[email protected]> Authored: Wed Dec 13 14:05:12 2017 +0800 Committer: shaofengshi <[email protected]> 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());
