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());