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 7a142e4da5c Add DatabaseTypeRegistry.formatTableNamePattern() (#35190) 7a142e4da5c is described below commit 7a142e4da5c0515e1d69cd0e4dab8030a2355b78 Author: Liang Zhang <zhangli...@apache.org> AuthorDate: Mon Apr 14 00:09:16 2025 +0800 Add DatabaseTypeRegistry.formatTableNamePattern() (#35190) --- .../encrypt/enums/EncryptDerivedColumnSuffix.java | 4 +-- .../data/loader/type/TableMetaDataLoader.java | 4 +-- .../database/metadata/DialectDatabaseMetaData.java | 11 ++++--- ...tTableOption.java => TableNamePatternType.java} | 35 ++-------------------- .../database/core/type/DatabaseTypeRegistry.java | 19 ++++++++++++ .../database/FirebirdDatabaseMetaData.java | 9 +++--- .../database/OpenGaussDatabaseMetaData.java | 7 ++--- .../metadata/database/OracleDatabaseMetaData.java | 7 ++--- .../database/OracleDatabaseMetaDataTest.java | 5 ---- .../database/PostgreSQLDatabaseMetaData.java | 7 ++--- .../database/PostgreSQLDatabaseMetaDataTest.java | 5 ---- .../metadata/refresher/util/TableRefreshUtils.java | 2 +- .../test/e2e/env/DataSetEnvironmentManager.java | 5 ++-- 13 files changed, 45 insertions(+), 75 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 26362f9dfd0..7f6b4f1c3c3 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 @@ -19,7 +19,6 @@ package org.apache.shardingsphere.encrypt.enums; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; -import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.DialectDatabaseMetaData; import org.apache.shardingsphere.infra.database.core.type.DatabaseType; import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry; @@ -43,7 +42,6 @@ public enum EncryptDerivedColumnSuffix { * @return derived column name */ public String getDerivedColumnName(final String columnName, final DatabaseType databaseType) { - DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData(); - return String.format("%s%s", columnName, dialectDatabaseMetaData.getTableOption().formatTableNamePattern(suffix)); + return String.format("%s%s", columnName, new DatabaseTypeRegistry(databaseType).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 17fa728ec15..f4774129076 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 @@ -21,7 +21,6 @@ import lombok.AccessLevel; import lombok.NoArgsConstructor; import org.apache.shardingsphere.infra.database.core.metadata.data.loader.MetaDataLoaderConnection; import org.apache.shardingsphere.infra.database.core.metadata.data.model.TableMetaData; -import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.DialectDatabaseMetaData; import org.apache.shardingsphere.infra.database.core.type.DatabaseType; import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry; @@ -48,9 +47,8 @@ public final class TableMetaDataLoader { * @throws SQLException SQL exception */ 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.getTableOption().formatTableNamePattern(tableNamePattern); + String formattedTableNamePattern = new DatabaseTypeRegistry(databaseType).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 9b3b9607210..98eb490f358 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,8 +25,7 @@ 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.table.TableNamePatternType; 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; @@ -71,12 +70,12 @@ public interface DialectDatabaseMetaData extends DatabaseTypedSPI { } /** - * Get table option. + * Get table name pattern type. * - * @return table option + * @return table name pattern type */ - default DialectTableOption getTableOption() { - return new DialectTableOption(Type.KEEP_ORIGIN); + default TableNamePatternType getTableNamePatternType() { + return TableNamePatternType.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/TableNamePatternType.java similarity index 52% rename from infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/option/table/DialectTableOption.java rename to infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/option/table/TableNamePatternType.java index 182f2fdd9d6..b504e3851d0 100644 --- 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/TableNamePatternType.java @@ -17,39 +17,10 @@ package org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table; -import lombok.RequiredArgsConstructor; - /** - * Dialect table option. + * Table name pattern type. */ -@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; - } - } +public enum TableNamePatternType { - /** - * Dialect table option type. - */ - public enum Type { - - UPPER_CASE, LOWER_CASE, KEEP_ORIGIN - } + UPPER_CASE, LOWER_CASE, KEEP_ORIGIN } diff --git a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/DatabaseTypeRegistry.java b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/DatabaseTypeRegistry.java index bae3aeacc90..01b7d8b5dbc 100644 --- a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/DatabaseTypeRegistry.java +++ b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/type/DatabaseTypeRegistry.java @@ -66,4 +66,23 @@ public final class DatabaseTypeRegistry { public String getDefaultSchemaName(final String databaseName) { return dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().orElseGet(() -> null == databaseName ? null : databaseName.toLowerCase()); } + + /** + * Format table name pattern. + * + * @param tableNamePattern table name pattern + * @return formatted table name pattern + */ + public String formatTableNamePattern(final String tableNamePattern) { + DatabaseType databaseType = this.databaseType.getTrunkDatabaseType().orElse(this.databaseType); + switch (DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType).getTableNamePatternType()) { + case UPPER_CASE: + return tableNamePattern.toUpperCase(); + case LOWER_CASE: + return tableNamePattern.toLowerCase(); + case KEEP_ORIGIN: + default: + return tableNamePattern; + } + } } 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 dd245f49405..1a38d0c17be 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 @@ -17,11 +17,10 @@ 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.DialectDatabaseMetaData; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.TableNamePatternType; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.transaction.DialectTransactionOption; /** @@ -40,8 +39,8 @@ public final class FirebirdDatabaseMetaData implements DialectDatabaseMetaData { } @Override - public DialectTableOption getTableOption() { - return new DialectTableOption(Type.UPPER_CASE); + public TableNamePatternType getTableNamePatternType() { + return TableNamePatternType.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 f246b00aca9..0f3f70dc92a 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,8 +23,7 @@ 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.table.TableNamePatternType; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.transaction.DialectTransactionOption; import org.apache.shardingsphere.infra.database.opengauss.metadata.database.option.OpenGaussDataTypeOption; @@ -59,8 +58,8 @@ public final class OpenGaussDatabaseMetaData implements DialectDatabaseMetaData } @Override - public DialectTableOption getTableOption() { - return new DialectTableOption(Type.LOWER_CASE); + public TableNamePatternType getTableNamePatternType() { + return TableNamePatternType.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 7f7455478db..b7a311ab6aa 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,8 +23,7 @@ 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.core.metadata.database.metadata.option.table.TableNamePatternType; import org.apache.shardingsphere.infra.database.oracle.metadata.database.option.OracleDataTypeOption; import org.apache.shardingsphere.infra.database.oracle.metadata.database.option.OracleSchemaOption; @@ -54,8 +53,8 @@ public final class OracleDatabaseMetaData implements DialectDatabaseMetaData { } @Override - public DialectTableOption getTableOption() { - return new DialectTableOption(Type.UPPER_CASE); + public TableNamePatternType getTableNamePatternType() { + return TableNamePatternType.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 bd76a81ce07..425a2b72919 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 @@ -56,9 +56,4 @@ class OracleDatabaseMetaDataTest { when(connection.getMetaData().getUserName()).thenThrow(SQLException.class); assertNull(dialectDatabaseMetaData.getSchemaOption().getSchema(connection)); } - - @Test - void assertFormatTableNamePattern() { - 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 89b7b62f83f..2befc131028 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,8 +23,7 @@ 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.table.TableNamePatternType; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.transaction.DialectTransactionOption; import org.apache.shardingsphere.infra.database.postgresql.metadata.database.option.PostgreSQLDataTypeOption; @@ -54,8 +53,8 @@ public final class PostgreSQLDatabaseMetaData implements DialectDatabaseMetaData } @Override - public DialectTableOption getTableOption() { - return new DialectTableOption(Type.LOWER_CASE); + public TableNamePatternType getTableNamePatternType() { + return TableNamePatternType.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 e2667ea9ae5..22c5c0cdb4a 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 @@ -48,9 +48,4 @@ class PostgreSQLDatabaseMetaDataTest { void assertGetDefaultSchema() { assertThat(dialectDatabaseMetaData.getSchemaOption().getDefaultSchema(), is(Optional.of("public"))); } - - @Test - void assertFormatTableNamePattern() { - 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 825e005c338..6bce690f359 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().getTableOption().formatTableNamePattern(tableIdentifierValue.getValue()) + ? new DatabaseTypeRegistry(databaseType).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 6efdd8564be..cf9f37d884e 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 @@ -19,7 +19,6 @@ package org.apache.shardingsphere.test.e2e.env; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; -import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.DialectDatabaseMetaData; import org.apache.shardingsphere.infra.database.core.type.DatabaseType; import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeFactory; import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry; @@ -236,8 +235,8 @@ public final class DataSetEnvironmentManager { } private String getQuotedTableName(final String tableName, final DatabaseType databaseType) { - DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData(); - return dialectDatabaseMetaData.getQuoteCharacter().wrap(dialectDatabaseMetaData.getTableOption().formatTableNamePattern(tableName)); + DatabaseTypeRegistry databaseTypeRegistry = new DatabaseTypeRegistry(databaseType); + return databaseTypeRegistry.getDialectDatabaseMetaData().getQuoteCharacter().wrap(databaseTypeRegistry.formatTableNamePattern(tableName)); } } }