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 e4642ae8f2bb54e396182d1f71c34b393cc8b817 Author: Hang Jia <[email protected]> AuthorDate: Fri Mar 17 10:03:03 2023 +0800 KYLIN-5568 Enhance the ability to identify customer metadata case sensitivity --- .../org/apache/kylin/common/KylinConfigBase.java | 4 ++++ .../org/apache/kylin/source/SourceFactory.java | 1 + .../apache/kylin/source/jdbc/JdbcSourceTest.java | 28 ++++++++++++++++++++-- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java b/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java index 098b1803d8..dd98c34d40 100644 --- a/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java +++ b/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java @@ -1414,6 +1414,10 @@ public abstract class KylinConfigBase implements Serializable { "org.apache.kylin.source.jdbc.DefaultSourceConnector"); } + public String getJdbcConvertToLowerCase() { + return getOptional("kylin.source.jdbc.convert-to-lowercase", FALSE); + } + // ============================================================================ // STORAGE.PARQUET // ============================================================================ diff --git a/src/core-metadata/src/main/java/org/apache/kylin/source/SourceFactory.java b/src/core-metadata/src/main/java/org/apache/kylin/source/SourceFactory.java index 6da5e7906c..f1493b2bcc 100644 --- a/src/core-metadata/src/main/java/org/apache/kylin/source/SourceFactory.java +++ b/src/core-metadata/src/main/java/org/apache/kylin/source/SourceFactory.java @@ -116,6 +116,7 @@ public class SourceFactory { builder.append(config.getJdbcDriver()).append('|'); builder.append(config.getJdbcDialect()).append('|'); builder.append(config.getJdbcAdaptorClass()).append('|'); + builder.append(config.getJdbcConvertToLowerCase()).append('|'); return builder.toString(); } diff --git a/src/spark-project/source-jdbc/src/test/java/org/apache/kylin/source/jdbc/JdbcSourceTest.java b/src/spark-project/source-jdbc/src/test/java/org/apache/kylin/source/jdbc/JdbcSourceTest.java index 26aa083510..d9b34341b8 100644 --- a/src/spark-project/source-jdbc/src/test/java/org/apache/kylin/source/jdbc/JdbcSourceTest.java +++ b/src/spark-project/source-jdbc/src/test/java/org/apache/kylin/source/jdbc/JdbcSourceTest.java @@ -20,7 +20,9 @@ package org.apache.kylin.source.jdbc; import java.io.IOException; import org.apache.kylin.common.KylinConfig; +import org.apache.kylin.engine.spark.NSparkCubingEngine; import org.apache.kylin.metadata.model.ISourceAware; +import org.apache.kylin.metadata.model.NTableMetadataManager; import org.apache.kylin.metadata.model.SegmentRange; import org.apache.kylin.metadata.model.TableDesc; import org.apache.kylin.source.IReadableTable; @@ -28,8 +30,6 @@ import org.apache.kylin.source.ISampleDataDeployer; import org.apache.kylin.source.ISource; import org.apache.kylin.source.ISourceMetadataExplorer; import org.apache.kylin.source.SourceFactory; -import org.apache.kylin.engine.spark.NSparkCubingEngine; -import org.apache.kylin.metadata.model.NTableMetadataManager; import org.junit.Assert; import org.junit.Test; @@ -81,4 +81,28 @@ public class JdbcSourceTest extends JdbcTestBase { assert !source.supportBuildSnapShotByPartition(); source.close(); } + + @Test + public void testNeedToLowerCase() { + ISourceAware aware = new ISourceAware() { + @Override + public int getSourceType() { + return ISourceAware.ID_JDBC; + } + + @Override + public KylinConfig getConfig() { + return getTestConfig(); + } + }; + ISource source = SourceFactory.getSource(aware); + aware.getConfig().setProperty("kylin.source.jdbc.convert-to-lowercase", "false"); + ISource defaultSource = SourceFactory.getSource(aware); + + Assert.assertEquals(source, defaultSource); + + aware.getConfig().setProperty("kylin.source.jdbc.convert-to-lowercase", "true"); + ISource lowerCaseSource = SourceFactory.getSource(aware); + Assert.assertNotEquals(source, lowerCaseSource); + } }
