From e49e97fb9c1b4833c987b371fc7411780b4aaa73 Mon Sep 17 00:00:00 2001 From: xingpeng1 Date: Thu, 8 Feb 2018 16:45:30 +0800 Subject: [PATCH 1/1] KYLIN-3247 --- .../apache/kylin/cube/model/CubeJoinedFlatTableDesc.java | 4 ++++ .../org/apache/kylin/rest/controller/CubeController.java | 16 ++++++++++++---- .../apache/kylin/rest/controller/CubeControllerTest.java | 2 +- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/core-cube/src/main/java/org/apache/kylin/cube/model/CubeJoinedFlatTableDesc.java b/core-cube/src/main/java/org/apache/kylin/cube/model/CubeJoinedFlatTableDesc.java index 4a1cfc0d8..d50a5afca 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/model/CubeJoinedFlatTableDesc.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/model/CubeJoinedFlatTableDesc.java @@ -63,6 +63,10 @@ public class CubeJoinedFlatTableDesc implements IJoinedFlatTableDesc, Serializab this(cubeSegment.getCubeDesc(), cubeSegment, false); } + public CubeJoinedFlatTableDesc(CubeSegment cubeSegment, boolean includingDerived) { + this(cubeSegment.getCubeDesc(), cubeSegment, includingDerived); + } + private CubeJoinedFlatTableDesc(CubeDesc cubeDesc, CubeSegment cubeSegment /* can be null */, boolean includingDerived) { this.cubeDesc = cubeDesc; diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller/CubeController.java b/server-base/src/main/java/org/apache/kylin/rest/controller/CubeController.java index 292857249..b4ebcbabc 100644 --- a/server-base/src/main/java/org/apache/kylin/rest/controller/CubeController.java +++ b/server-base/src/main/java/org/apache/kylin/rest/controller/CubeController.java @@ -42,7 +42,6 @@ import org.apache.kylin.cube.model.CubeDesc; import org.apache.kylin.cube.model.CubeJoinedFlatTableDesc; import org.apache.kylin.cube.model.RowKeyColDesc; import org.apache.kylin.dimension.DimensionEncodingFactory; -import org.apache.kylin.engine.EngineFactory; import org.apache.kylin.engine.mr.common.CuboidStatsReaderUtil; import org.apache.kylin.job.JobInstance; import org.apache.kylin.job.JoinedFlatTable; @@ -196,7 +195,7 @@ public class CubeController extends BasicController { if (cube == null) { throw new InternalErrorException("Cannot find cube " + cubeName); } - IJoinedFlatTableDesc flatTableDesc = EngineFactory.getJoinedFlatTableDesc(cube.getDescriptor()); + IJoinedFlatTableDesc flatTableDesc = new CubeJoinedFlatTableDesc(cube.getDescriptor(), true); String sql = JoinedFlatTable.generateSelectDataStatement(flatTableDesc); GeneralResponse response = new GeneralResponse(); @@ -218,7 +217,16 @@ public class CubeController extends BasicController { @ResponseBody public GeneralResponse getSql(@PathVariable String cubeName, @PathVariable String segmentName) { CubeInstance cube = cubeService.getCubeManager().getCube(cubeName); - IJoinedFlatTableDesc flatTableDesc = new CubeJoinedFlatTableDesc(cube.getDescriptor(), true); + if (cube == null) { + throw new InternalErrorException("Cannot find cube " + cubeName); + } + + CubeSegment segment = cube.getSegment(segmentName, null); + if (segment == null) { + throw new InternalErrorException("Cannot find segment " + segmentName); + } + + IJoinedFlatTableDesc flatTableDesc = new CubeJoinedFlatTableDesc(segment, true); String sql = JoinedFlatTable.generateSelectDataStatement(flatTableDesc); GeneralResponse response = new GeneralResponse(); @@ -1044,4 +1052,4 @@ public class CubeController extends BasicController { public void setJobService(JobService jobService) { this.jobService = jobService; } -} +} \ No newline at end of file diff --git a/server/src/test/java/org/apache/kylin/rest/controller/CubeControllerTest.java b/server/src/test/java/org/apache/kylin/rest/controller/CubeControllerTest.java index 96ff29eee..b43cb9c22 100644 --- a/server/src/test/java/org/apache/kylin/rest/controller/CubeControllerTest.java +++ b/server/src/test/java/org/apache/kylin/rest/controller/CubeControllerTest.java @@ -195,7 +195,7 @@ public class CubeControllerTest extends ServiceTestBase { @Test public void testGetSql() { - GeneralResponse response = cubeController.getSql("test_kylin_cube_with_slr_ready", null); + GeneralResponse response = cubeController.getSql("test_kylin_cube_with_slr_ready"); String sql = response.getProperty("sql"); CubeDesc cubeDesc = cubeDescController.getDesc("test_kylin_cube_with_slr_ready"); -- 2.11.0.windows.1