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) {

Reply via email to