This is an automated email from the ASF dual-hosted git repository. nic pushed a commit to branch 3.0.x in repository https://gitbox.apache.org/repos/asf/kylin.git
commit 21241e847fb47d211dbc8b0dd9697961502a0101 Author: zengruios <[email protected]> AuthorDate: Mon Dec 16 21:40:53 2019 +0800 fix bug KYLIN-4300. --- .../cube/model/validation/rule/StreamingCubeRule.java | 3 ++- .../org/apache/kylin/rest/service/ModelService.java | 17 +++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/StreamingCubeRule.java b/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/StreamingCubeRule.java index 647f4c1..dfc5624 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/StreamingCubeRule.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/model/validation/rule/StreamingCubeRule.java @@ -44,7 +44,8 @@ public class StreamingCubeRule implements IValidatorRule<CubeDesc> { public void validate(CubeDesc cube, ValidateContext context) { DataModelDesc model = cube.getModel(); - if (model.getRootFactTable().getTableDesc().getSourceType() != ISourceAware.ID_STREAMING) { + if (model.getRootFactTable().getTableDesc().getSourceType() != ISourceAware.ID_STREAMING + && !model.getRootFactTable().getTableDesc().isStreamingTable()) { return; } diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/ModelService.java b/server-base/src/main/java/org/apache/kylin/rest/service/ModelService.java index a385fab..888db7c 100644 --- a/server-base/src/main/java/org/apache/kylin/rest/service/ModelService.java +++ b/server-base/src/main/java/org/apache/kylin/rest/service/ModelService.java @@ -136,12 +136,7 @@ public class ModelService extends BasicService { throw new BadRequestException(String.format(Locale.ROOT, msg.getDUPLICATE_MODEL_NAME(), desc.getName())); } - String factTableName = desc.getRootFactTableName(); - TableDesc tableDesc = getTableManager().getTableDesc(factTableName, projectName); - if (tableDesc.getSourceType() == ISourceAware.ID_STREAMING - && (desc.getPartitionDesc() == null || desc.getPartitionDesc().getPartitionDateColumn() == null)) { - throw new IllegalArgumentException("Must define a partition column."); - } + validateModel(projectName, desc); DataModelDesc createdDesc = null; String owner = SecurityContextHolder.getContext().getAuthentication().getName(); @@ -151,10 +146,20 @@ public class ModelService extends BasicService { public DataModelDesc updateModelAndDesc(String project, DataModelDesc desc) throws IOException { aclEvaluate.checkProjectWritePermission(project); + validateModel(project, desc); getDataModelManager().updateDataModelDesc(desc); return desc; } + public void validateModel(String project, DataModelDesc desc) throws IllegalArgumentException { + String factTableName = desc.getRootFactTableName(); + TableDesc tableDesc = getTableManager().getTableDesc(factTableName, project); + if ((tableDesc.getSourceType() == ISourceAware.ID_STREAMING || tableDesc.isStreamingTable()) + && (desc.getPartitionDesc() == null || desc.getPartitionDesc().getPartitionDateColumn() == null)) { + throw new IllegalArgumentException("Must define a partition column."); + } + } + public void dropModel(DataModelDesc desc) throws IOException { aclEvaluate.checkProjectWritePermission(desc.getProjectInstance().getName()); Message msg = MsgPicker.getMsg();
