This is an automated email from the ASF dual-hosted git repository.

zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new a6786a17f11 Add DialectTableOption (#35189)
a6786a17f11 is described below

commit a6786a17f116d3b60ded187225d4b4909faa311e
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Sun Apr 13 23:32:08 2025 +0800

    Add DialectTableOption (#35189)
    
    * Add DialectTableOption
    
    * Add DialectTableOption
    
    * Add DialectTableOption
---
 .../encrypt/enums/EncryptDerivedColumnSuffix.java  |  2 +-
 .../data/loader/type/TableMetaDataLoader.java      |  2 +-
 .../database/metadata/DialectDatabaseMetaData.java | 11 +++--
 .../metadata/option/table/DialectTableOption.java  | 55 ++++++++++++++++++++++
 .../database/FirebirdDatabaseMetaData.java         |  6 ++-
 .../database/OpenGaussDatabaseMetaData.java        |  6 ++-
 .../metadata/database/OracleDatabaseMetaData.java  |  6 ++-
 .../database/OracleDatabaseMetaDataTest.java       |  2 +-
 .../database/PostgreSQLDatabaseMetaData.java       |  6 ++-
 .../database/PostgreSQLDatabaseMetaDataTest.java   |  2 +-
 .../metadata/refresher/util/TableRefreshUtils.java |  2 +-
 .../test/e2e/env/DataSetEnvironmentManager.java    |  2 +-
 12 files changed, 83 insertions(+), 19 deletions(-)

diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/enums/EncryptDerivedColumnSuffix.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/enums/EncryptDerivedColumnSuffix.java
index 2d7de89c77d..26362f9dfd0 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/enums/EncryptDerivedColumnSuffix.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/enums/EncryptDerivedColumnSuffix.java
@@ -44,6 +44,6 @@ public enum EncryptDerivedColumnSuffix {
      */
     public String getDerivedColumnName(final String columnName, final 
DatabaseType databaseType) {
         DialectDatabaseMetaData dialectDatabaseMetaData = new 
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
-        return String.format("%s%s", columnName, 
dialectDatabaseMetaData.formatTableNamePattern(suffix));
+        return String.format("%s%s", columnName, 
dialectDatabaseMetaData.getTableOption().formatTableNamePattern(suffix));
     }
 }
diff --git 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/loader/type/TableMetaDataLoader.java
 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/loader/type/TableMetaDataLoader.java
index 76a75a122f0..17fa728ec15 100644
--- 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/loader/type/TableMetaDataLoader.java
+++ 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/loader/type/TableMetaDataLoader.java
@@ -50,7 +50,7 @@ public final class TableMetaDataLoader {
     public static Optional<TableMetaData> load(final DataSource dataSource, 
final String tableNamePattern, final DatabaseType databaseType) throws 
SQLException {
         DialectDatabaseMetaData dialectDatabaseMetaData = new 
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
         try (MetaDataLoaderConnection connection = new 
MetaDataLoaderConnection(databaseType, dataSource.getConnection())) {
-            String formattedTableNamePattern = 
dialectDatabaseMetaData.formatTableNamePattern(tableNamePattern);
+            String formattedTableNamePattern = 
dialectDatabaseMetaData.getTableOption().formatTableNamePattern(tableNamePattern);
             return isTableExist(connection, formattedTableNamePattern)
                     ? Optional.of(new TableMetaData(tableNamePattern, 
ColumnMetaDataLoader.load(
                             connection, formattedTableNamePattern, 
databaseType), IndexMetaDataLoader.load(connection, formattedTableNamePattern), 
Collections.emptyList()))
diff --git 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/DialectDatabaseMetaData.java
 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/DialectDatabaseMetaData.java
index 994d4b79459..9b3b9607210 100644
--- 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/DialectDatabaseMetaData.java
+++ 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/DialectDatabaseMetaData.java
@@ -25,6 +25,8 @@ import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.join.DialectJoinOrderOption;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.schema.DefaultSchemaOption;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.schema.DialectSchemaOption;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DialectTableOption;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DialectTableOption.Type;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.transaction.DialectTransactionOption;
 import org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPI;
 import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
@@ -69,13 +71,12 @@ public interface DialectDatabaseMetaData extends 
DatabaseTypedSPI {
     }
     
     /**
-     * Format table name pattern.
+     * Get table option.
      *
-     * @param tableNamePattern table name pattern
-     * @return formatted table name pattern
+     * @return table option
      */
-    default String formatTableNamePattern(final String tableNamePattern) {
-        return tableNamePattern;
+    default DialectTableOption getTableOption() {
+        return new DialectTableOption(Type.KEEP_ORIGIN);
     }
     
     /**
diff --git 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/option/table/DialectTableOption.java
 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/option/table/DialectTableOption.java
new file mode 100644
index 00000000000..182f2fdd9d6
--- /dev/null
+++ 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/option/table/DialectTableOption.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table;
+
+import lombok.RequiredArgsConstructor;
+
+/**
+ * Dialect table option.
+ */
+@RequiredArgsConstructor
+public final class DialectTableOption {
+    
+    private final Type type;
+    
+    /**
+     * Format table name pattern.
+     *
+     * @param tableNamePattern table name pattern
+     * @return formatted table name pattern
+     */
+    public String formatTableNamePattern(final String tableNamePattern) {
+        switch (type) {
+            case UPPER_CASE:
+                return tableNamePattern.toUpperCase();
+            case LOWER_CASE:
+                return tableNamePattern.toLowerCase();
+            case KEEP_ORIGIN:
+            default:
+                return tableNamePattern;
+        }
+    }
+    
+    /**
+     * Dialect table option type.
+     */
+    public enum Type {
+        
+        UPPER_CASE, LOWER_CASE, KEEP_ORIGIN
+    }
+}
diff --git 
a/infra/database/type/firebird/src/main/java/org/apache/shardingsphere/infra/database/firebird/metadata/database/FirebirdDatabaseMetaData.java
 
b/infra/database/type/firebird/src/main/java/org/apache/shardingsphere/infra/database/firebird/metadata/database/FirebirdDatabaseMetaData.java
index ad7779913b9..dd245f49405 100644
--- 
a/infra/database/type/firebird/src/main/java/org/apache/shardingsphere/infra/database/firebird/metadata/database/FirebirdDatabaseMetaData.java
+++ 
b/infra/database/type/firebird/src/main/java/org/apache/shardingsphere/infra/database/firebird/metadata/database/FirebirdDatabaseMetaData.java
@@ -20,6 +20,8 @@ package 
org.apache.shardingsphere.infra.database.firebird.metadata.database;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.DialectDatabaseMetaData;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.enums.NullsOrderType;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.enums.QuoteCharacter;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DialectTableOption;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DialectTableOption.Type;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.transaction.DialectTransactionOption;
 
 /**
@@ -38,8 +40,8 @@ public final class FirebirdDatabaseMetaData implements 
DialectDatabaseMetaData {
     }
     
     @Override
-    public String formatTableNamePattern(final String tableNamePattern) {
-        return tableNamePattern.toUpperCase();
+    public DialectTableOption getTableOption() {
+        return new DialectTableOption(Type.UPPER_CASE);
     }
     
     @Override
diff --git 
a/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/OpenGaussDatabaseMetaData.java
 
b/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/OpenGaussDatabaseMetaData.java
index a42e8cd273f..f246b00aca9 100644
--- 
a/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/OpenGaussDatabaseMetaData.java
+++ 
b/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/OpenGaussDatabaseMetaData.java
@@ -23,6 +23,8 @@ import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.datatype.DialectDataTypeOption;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.schema.DefaultSchemaOption;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.schema.DialectSchemaOption;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DialectTableOption;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DialectTableOption.Type;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.transaction.DialectTransactionOption;
 import 
org.apache.shardingsphere.infra.database.opengauss.metadata.database.option.OpenGaussDataTypeOption;
 
@@ -57,8 +59,8 @@ public final class OpenGaussDatabaseMetaData implements 
DialectDatabaseMetaData
     }
     
     @Override
-    public String formatTableNamePattern(final String tableNamePattern) {
-        return tableNamePattern.toLowerCase();
+    public DialectTableOption getTableOption() {
+        return new DialectTableOption(Type.LOWER_CASE);
     }
     
     @Override
diff --git 
a/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/OracleDatabaseMetaData.java
 
b/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/OracleDatabaseMetaData.java
index f020af082c2..7f7455478db 100644
--- 
a/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/OracleDatabaseMetaData.java
+++ 
b/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/OracleDatabaseMetaData.java
@@ -23,6 +23,8 @@ import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.connection.DialectConnectionOption;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.datatype.DialectDataTypeOption;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.schema.DialectSchemaOption;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DialectTableOption;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DialectTableOption.Type;
 import 
org.apache.shardingsphere.infra.database.oracle.metadata.database.option.OracleDataTypeOption;
 import 
org.apache.shardingsphere.infra.database.oracle.metadata.database.option.OracleSchemaOption;
 
@@ -52,8 +54,8 @@ public final class OracleDatabaseMetaData implements 
DialectDatabaseMetaData {
     }
     
     @Override
-    public String formatTableNamePattern(final String tableNamePattern) {
-        return tableNamePattern.toUpperCase();
+    public DialectTableOption getTableOption() {
+        return new DialectTableOption(Type.UPPER_CASE);
     }
     
     @Override
diff --git 
a/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/OracleDatabaseMetaDataTest.java
 
b/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/OracleDatabaseMetaDataTest.java
index 9b0c75e4850..bd76a81ce07 100644
--- 
a/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/OracleDatabaseMetaDataTest.java
+++ 
b/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/OracleDatabaseMetaDataTest.java
@@ -59,6 +59,6 @@ class OracleDatabaseMetaDataTest {
     
     @Test
     void assertFormatTableNamePattern() {
-        assertThat(dialectDatabaseMetaData.formatTableNamePattern("tbl"), 
is("TBL"));
+        
assertThat(dialectDatabaseMetaData.getTableOption().formatTableNamePattern("tbl"),
 is("TBL"));
     }
 }
diff --git 
a/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/metadata/database/PostgreSQLDatabaseMetaData.java
 
b/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/metadata/database/PostgreSQLDatabaseMetaData.java
index 41cc37f6287..89b7b62f83f 100644
--- 
a/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/metadata/database/PostgreSQLDatabaseMetaData.java
+++ 
b/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/metadata/database/PostgreSQLDatabaseMetaData.java
@@ -23,6 +23,8 @@ import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.datatype.DialectDataTypeOption;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.schema.DefaultSchemaOption;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.schema.DialectSchemaOption;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DialectTableOption;
+import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DialectTableOption.Type;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.transaction.DialectTransactionOption;
 import 
org.apache.shardingsphere.infra.database.postgresql.metadata.database.option.PostgreSQLDataTypeOption;
 
@@ -52,8 +54,8 @@ public final class PostgreSQLDatabaseMetaData implements 
DialectDatabaseMetaData
     }
     
     @Override
-    public String formatTableNamePattern(final String tableNamePattern) {
-        return tableNamePattern.toLowerCase();
+    public DialectTableOption getTableOption() {
+        return new DialectTableOption(Type.LOWER_CASE);
     }
     
     @Override
diff --git 
a/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/metadata/database/PostgreSQLDatabaseMetaDataTest.java
 
b/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/metadata/database/PostgreSQLDatabaseMetaDataTest.java
index 90df7ff0d5a..e2667ea9ae5 100644
--- 
a/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/metadata/database/PostgreSQLDatabaseMetaDataTest.java
+++ 
b/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/metadata/database/PostgreSQLDatabaseMetaDataTest.java
@@ -51,6 +51,6 @@ class PostgreSQLDatabaseMetaDataTest {
     
     @Test
     void assertFormatTableNamePattern() {
-        assertThat(dialectDatabaseMetaData.formatTableNamePattern("T_ORDER"), 
is("t_order"));
+        
assertThat(dialectDatabaseMetaData.getTableOption().formatTableNamePattern("T_ORDER"),
 is("t_order"));
     }
 }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/util/TableRefreshUtils.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/util/TableRefreshUtils.java
index c0cb7975d15..825e005c338 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/util/TableRefreshUtils.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/util/TableRefreshUtils.java
@@ -53,7 +53,7 @@ public final class TableRefreshUtils {
      */
     public static String getTableName(final IdentifierValue 
tableIdentifierValue, final DatabaseType databaseType) {
         return QuoteCharacter.NONE == tableIdentifierValue.getQuoteCharacter()
-                ? new 
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData().formatTableNamePattern(tableIdentifierValue.getValue())
+                ? new 
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData().getTableOption().formatTableNamePattern(tableIdentifierValue.getValue())
                 : tableIdentifierValue.getValue();
     }
     
diff --git 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/env/DataSetEnvironmentManager.java
 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/env/DataSetEnvironmentManager.java
index 8e153e6ceb0..6efdd8564be 100644
--- 
a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/env/DataSetEnvironmentManager.java
+++ 
b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/env/DataSetEnvironmentManager.java
@@ -237,7 +237,7 @@ public final class DataSetEnvironmentManager {
         
         private String getQuotedTableName(final String tableName, final 
DatabaseType databaseType) {
             DialectDatabaseMetaData dialectDatabaseMetaData = new 
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
-            return 
dialectDatabaseMetaData.getQuoteCharacter().wrap(dialectDatabaseMetaData.formatTableNamePattern(tableName));
+            return 
dialectDatabaseMetaData.getQuoteCharacter().wrap(dialectDatabaseMetaData.getTableOption().formatTableNamePattern(tableName));
         }
     }
 }

Reply via email to