This is an automated email from the ASF dual-hosted git repository. xxyu pushed a commit to branch kylin5 in repository https://gitbox.apache.org/repos/asf/kylin.git
commit cf0b7a83d01c647a2d416c71c1117ad41452154e Author: huangsheng <huangshen...@163.com> AuthorDate: Fri Dec 30 14:00:13 2022 +0800 KYLIN-5455 Added parameter check items for /api/models/semantic API. If PartitionDesc is null then set MultiPartitionDesc to null KYLIN-5455 Optimize the multi partition model judgment logic --- .../src/main/java/org/apache/kylin/metadata/model/NDataModel.java | 4 +++- .../src/test/java/org/apache/kylin/rest/service/ModelServiceTest.java | 2 +- .../src/main/scala/org/apache/kylin/engine/spark/job/SegmentJob.java | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/core-metadata/src/main/java/org/apache/kylin/metadata/model/NDataModel.java b/src/core-metadata/src/main/java/org/apache/kylin/metadata/model/NDataModel.java index e8df524f38..9c6209ec59 100644 --- a/src/core-metadata/src/main/java/org/apache/kylin/metadata/model/NDataModel.java +++ b/src/core-metadata/src/main/java/org/apache/kylin/metadata/model/NDataModel.java @@ -1455,7 +1455,9 @@ public class NDataModel extends RootPersistentEntity { } public boolean isMultiPartitionModel() { - return multiPartitionDesc != null && CollectionUtils.isNotEmpty(multiPartitionDesc.getColumns()); + // a multi-partition model can be determined only if neither partitionDesc nor multiPartitionDesc is null + return partitionDesc != null && multiPartitionDesc != null + && CollectionUtils.isNotEmpty(multiPartitionDesc.getColumns()); } public List<Integer> getMeasureRelatedCols() { diff --git a/src/modeling-service/src/test/java/org/apache/kylin/rest/service/ModelServiceTest.java b/src/modeling-service/src/test/java/org/apache/kylin/rest/service/ModelServiceTest.java index df0b60b2b6..3e585b7392 100644 --- a/src/modeling-service/src/test/java/org/apache/kylin/rest/service/ModelServiceTest.java +++ b/src/modeling-service/src/test/java/org/apache/kylin/rest/service/ModelServiceTest.java @@ -4550,7 +4550,7 @@ public class ModelServiceTest extends SourceTestCase { Assert.assertEquals(3, model.getMultiPartitionDesc().getPartitions().size()); // PartitionDesc change - modelService.updatePartitionColumn(getProject(), modelId, null, model.getMultiPartitionDesc()); + modelService.updatePartitionColumn(getProject(), modelId, new PartitionDesc(), model.getMultiPartitionDesc()); val df1 = dfm.getDataflow(modelId); val model1 = modelManager.getDataModelDesc(modelId); Assert.assertEquals(0, df1.getSegments().getSegments().size()); diff --git a/src/spark-project/engine-spark/src/main/scala/org/apache/kylin/engine/spark/job/SegmentJob.java b/src/spark-project/engine-spark/src/main/scala/org/apache/kylin/engine/spark/job/SegmentJob.java index 0b969ed923..28174f8d4f 100644 --- a/src/spark-project/engine-spark/src/main/scala/org/apache/kylin/engine/spark/job/SegmentJob.java +++ b/src/spark-project/engine-spark/src/main/scala/org/apache/kylin/engine/spark/job/SegmentJob.java @@ -218,7 +218,8 @@ public abstract class SegmentJob extends SparkApplication { } protected boolean isPartitioned() { - return Objects.nonNull(indexPlan.getModel().getMultiPartitionDesc()); + return Objects.nonNull(indexPlan.getModel().getPartitionDesc()) + && Objects.nonNull(indexPlan.getModel().getMultiPartitionDesc()); } private boolean needSkipSegment(NDataSegment dataSegment) {