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 03c6a0f4ea53de09b17f54109d844e3b8a8c6518 Author: Xinglong Li <xinglong...@kyligence.io> AuthorDate: Fri Sep 30 17:30:28 2022 +0800 KYLIN-5364 Support case-insensitive when using table reloading api Co-authored-by: Xinglong.Li <xinglong...@kyligence.io> --- .../java/org/apache/kylin/rest/service/TableService.java | 4 ++-- .../apache/kylin/rest/service/TableReloadServiceTest.java | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/datasource-service/src/main/java/org/apache/kylin/rest/service/TableService.java b/src/datasource-service/src/main/java/org/apache/kylin/rest/service/TableService.java index fe8e38292e..f4c94be684 100644 --- a/src/datasource-service/src/main/java/org/apache/kylin/rest/service/TableService.java +++ b/src/datasource-service/src/main/java/org/apache/kylin/rest/service/TableService.java @@ -1072,9 +1072,9 @@ public class TableService extends BasicService { public OpenPreReloadTableResponse preProcessBeforeReloadWithoutFailFast(String project, String tableIdentity, boolean needDetails) throws Exception { + Preconditions.checkNotNull(tableIdentity, "table identity can not be null"); aclEvaluate.checkProjectWritePermission(project); - - val context = calcReloadContext(project, tableIdentity, false); + val context = calcReloadContext(project, tableIdentity.toUpperCase(Locale.ROOT), false); removeFusionModelBatchPart(project, context); PreReloadTableResponse preReloadTableResponse = preProcessBeforeReloadWithContext(project, context, needDetails); diff --git a/src/modeling-service/src/test/java/org/apache/kylin/rest/service/TableReloadServiceTest.java b/src/modeling-service/src/test/java/org/apache/kylin/rest/service/TableReloadServiceTest.java index 91e1b2a83e..b252929a93 100644 --- a/src/modeling-service/src/test/java/org/apache/kylin/rest/service/TableReloadServiceTest.java +++ b/src/modeling-service/src/test/java/org/apache/kylin/rest/service/TableReloadServiceTest.java @@ -226,6 +226,20 @@ public class TableReloadServiceTest extends CSVSourceTestCase { Assert.assertEquals("BIGINT", model.getComputedColumnDescs().get(0).getDatatype()); } + @Test + public void testPreProcess_UseCaseSensitiveTableIdentity() throws Exception { + NTableMetadataManager manager = NTableMetadataManager.getInstance(getTestConfig(), PROJECT); + TableDesc tableDesc = manager.getTableDesc("DEFAULT.TEST_KYLIN_FACT"); + Assert.assertNotNull(tableDesc); + val response = tableService.preProcessBeforeReloadWithoutFailFast(PROJECT, "DEFAULT.TEST_KYLIN_FAct", false); + Assert.assertFalse(response.isHasDatasourceChanged()); + + // test table identity is null + thrown.expect(NullPointerException.class); + thrown.expectMessage("table identity can not be null"); + tableService.preProcessBeforeReloadWithoutFailFast(PROJECT, null, false); + } + private void dropModelWhen(Predicate<String> predicate) { modelService.listAllModelIdsInProject(PROJECT).stream().filter(predicate) .forEach(id -> modelService.innerDropModel(id, PROJECT));