You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by xx...@apache.org on 2023/02/27 08:01:00 UTC

[kylin] 20/34: KYLIN-5455 Added parameter check items for /api/models/semantic API. If PartitionDesc is null then set MultiPartitionDesc to null

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 <hu...@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) {