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 669d9a08241 Add DialectSchemaOption (#35186) 669d9a08241 is described below commit 669d9a08241450aad0388dfa753a5010d8727674 Author: Liang Zhang <zhangli...@apache.org> AuthorDate: Sun Apr 13 22:11:34 2025 +0800 Add DialectSchemaOption (#35186) * Add DialectSchemaOption * Add DialectSchemaOption * Add DialectSchemaOption * Add DialectSchemaOption * Add DialectSchemaOption --- .../data/ShardingTableStatisticsCollector.java | 2 +- .../dml/from/type/SimpleTableSegmentBinder.java | 2 +- .../shardingsphere/infra/datanode/DataNode.java | 6 +-- .../schema/builder/SystemSchemaBuilder.java | 2 +- .../database/schema/util/SystemSchemaUtils.java | 6 +-- .../builder/ShardingSphereStatisticsFactory.java | 2 +- .../data/loader/MetaDataLoaderConnection.java | 2 +- .../data/loader/type/SchemaMetaDataLoader.java | 4 +- .../database/metadata/DialectDatabaseMetaData.java | 38 +++-------------- .../option/scehma/DefaultSchemaOption.java} | 39 ++++++++++-------- .../option/scehma/DialectSchemaOption.java} | 48 +++++++++++----------- .../database/core/type/DatabaseTypeRegistry.java | 2 +- .../fixture/TrunkDialectDatabaseMetaData.java | 10 ++--- .../metadata/database/HiveDatabaseMetaData.java | 10 ++--- .../database/OpenGaussDatabaseMetaData.java | 13 ++---- .../database/OpenGaussDatabaseMetaDataTest.java | 4 +- .../metadata/database/OracleDatabaseMetaData.java | 19 ++------- .../database/option/OracleSchemaOption.java} | 32 ++++++++------- .../database/OracleDatabaseMetaDataTest.java | 4 +- .../database/PostgreSQLDatabaseMetaData.java | 13 ++---- .../database/PostgreSQLDatabaseMetaDataTest.java | 4 +- .../metadata/database/PrestoDatabaseMetaData.java | 10 ++--- .../database/SQLServerDatabaseMetaData.java | 10 ++--- .../rql/resource/ShowLogicalTablesExecutor.java | 2 +- .../generator/generic/RemoveTokenGenerator.java | 2 +- .../jdbc/adapter/AbstractStatementAdapter.java | 2 +- .../core/connection/ShardingSphereConnection.java | 2 +- .../core/importer/ImporterConfiguration.java | 2 +- .../StandardPipelineTableMetaDataLoader.java | 2 +- .../datasource/PipelineJobDataSourcePreparer.java | 4 +- .../segment/PipelineSQLSegmentBuilder.java | 2 +- .../pipeline/cdc/handler/CDCBackendHandler.java | 2 +- .../pipeline/cdc/util/CDCSchemaTableUtils.java | 6 +-- .../migration/MigrationJobExecutorCallback.java | 2 +- .../scenario/migration/api/MigrationJobAPI.java | 2 +- .../SingleRuleConfigurationDecorator.java | 2 +- .../single/util/SingleTableLoadUtils.java | 6 +-- .../handler/update/LoadSingleTableExecutor.java | 2 +- .../database/DropDatabaseBackendHandler.java | 3 +- .../backend/handler/tcl/TCLBackendHandler.java | 8 ++-- .../SelectInformationSchemataExecutorTest.java | 2 +- .../pipeline/cases/PipelineContainerComposer.java | 2 +- .../test/e2e/data/pipeline/cases/cdc/CDCE2EIT.java | 4 +- .../pipeline/core/util/PipelineContextUtils.java | 2 +- 44 files changed, 153 insertions(+), 190 deletions(-) diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/data/ShardingTableStatisticsCollector.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/data/ShardingTableStatisticsCollector.java index fa32a2ea4b0..f3715a72a20 100644 --- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/data/ShardingTableStatisticsCollector.java +++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/data/ShardingTableStatisticsCollector.java @@ -55,7 +55,7 @@ public final class ShardingTableStatisticsCollector implements ShardingSphereTab DatabaseType protocolType = metaData.getAllDatabases().iterator().next().getProtocolType(); DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(protocolType).getDialectDatabaseMetaData(); currentId = 1; - if (dialectDatabaseMetaData.getDefaultSchema().isPresent()) { + if (dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent()) { collectFromDatabase(metaData.getDatabase(databaseName), result); } else { for (ShardingSphereDatabase each : metaData.getAllDatabases()) { diff --git a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SimpleTableSegmentBinder.java b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SimpleTableSegmentBinder.java index 3ed922a95cd..09dfd4f9b74 100644 --- a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SimpleTableSegmentBinder.java +++ b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/engine/segment/dml/from/type/SimpleTableSegmentBinder.java @@ -105,7 +105,7 @@ public final class SimpleTableSegmentBinder { private static IdentifierValue getDatabaseName(final SimpleTableSegment segment, final SQLStatementBinderContext binderContext) { DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(binderContext.getSqlStatement().getDatabaseType()).getDialectDatabaseMetaData(); - Optional<OwnerSegment> owner = dialectDatabaseMetaData.getDefaultSchema().isPresent() ? segment.getOwner().flatMap(OwnerSegment::getOwner) : segment.getOwner(); + Optional<OwnerSegment> owner = dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent() ? segment.getOwner().flatMap(OwnerSegment::getOwner) : segment.getOwner(); IdentifierValue result = new IdentifierValue(owner.map(optional -> optional.getIdentifier().getValue()).orElse(binderContext.getCurrentDatabaseName())); ShardingSpherePreconditions.checkNotNull(result.getValue(), NoDatabaseSelectedException::new); ShardingSpherePreconditions.checkState(binderContext.getMetaData().containsDatabase(result.getValue()), () -> new UnknownDatabaseException(result.getValue())); diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/datanode/DataNode.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/datanode/DataNode.java index c6ec1f0f813..cf9342bf314 100644 --- a/infra/common/src/main/java/org/apache/shardingsphere/infra/datanode/DataNode.java +++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/datanode/DataNode.java @@ -87,12 +87,12 @@ public final class DataNode { } private boolean isSchemaAvailable(final DatabaseType databaseType) { - return new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData().isSchemaAvailable(); + return new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData().getSchemaOption().isSchemaAvailable(); } private String getSchemaName(final String databaseName, final DatabaseType databaseType, final boolean containsSchema, final List<String> segments) { DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData(); - if (dialectDatabaseMetaData.getDefaultSchema().isPresent()) { + if (dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent()) { return containsSchema ? segments.get(1) : ASTERISK; } return databaseName; @@ -123,7 +123,7 @@ public final class DataNode { */ public String format(final DatabaseType databaseType) { DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData(); - return dialectDatabaseMetaData.getDefaultSchema().isPresent() && null != schemaName + return dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent() && null != schemaName ? String.join(DELIMITER, dataSourceName, schemaName, tableName) : String.join(DELIMITER, dataSourceName, tableName); } diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/SystemSchemaBuilder.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/SystemSchemaBuilder.java index bae85a4e5e3..ec9ce200bfb 100644 --- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/SystemSchemaBuilder.java +++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/SystemSchemaBuilder.java @@ -72,7 +72,7 @@ public final class SystemSchemaBuilder { private static Collection<String> getSystemSchemas(final String originalDatabaseName, final DatabaseType databaseType, final SystemDatabase systemDatabase) { DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData(); - String databaseName = dialectDatabaseMetaData.getDefaultSchema().isPresent() ? "postgres" : originalDatabaseName; + String databaseName = dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent() ? "postgres" : originalDatabaseName; return systemDatabase.getSystemDatabaseSchemaMap().getOrDefault(databaseName, Collections.emptyList()); } diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SystemSchemaUtils.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SystemSchemaUtils.java index cb84194e6b8..8cea6f723f3 100644 --- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SystemSchemaUtils.java +++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SystemSchemaUtils.java @@ -55,7 +55,7 @@ public final class SystemSchemaUtils { */ public static boolean containsSystemSchema(final DatabaseType databaseType, final Collection<String> schemaNames, final ShardingSphereDatabase database) { DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData(); - if (database.isComplete() && !dialectDatabaseMetaData.getDefaultSchema().isPresent()) { + if (database.isComplete() && !dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent()) { return false; } SystemDatabase systemDatabase = new SystemDatabase(databaseType); @@ -64,7 +64,7 @@ public final class SystemSchemaUtils { return true; } } - return !dialectDatabaseMetaData.getDefaultSchema().isPresent() && systemDatabase.getSystemSchemas().contains(database.getName()); + return !dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent() && systemDatabase.getSystemSchemas().contains(database.getName()); } /** @@ -90,7 +90,7 @@ public final class SystemSchemaUtils { */ public static boolean isSystemSchema(final ShardingSphereDatabase database) { DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(database.getProtocolType()).getDialectDatabaseMetaData(); - if (database.isComplete() && !dialectDatabaseMetaData.getDefaultSchema().isPresent()) { + if (database.isComplete() && !dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent()) { return false; } return new SystemDatabase(database.getProtocolType()).getSystemSchemas().contains(database.getName()); diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/ShardingSphereStatisticsFactory.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/ShardingSphereStatisticsFactory.java index 5496e9bb7cf..268e8c185fe 100644 --- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/ShardingSphereStatisticsFactory.java +++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/ShardingSphereStatisticsFactory.java @@ -74,7 +74,7 @@ public final class ShardingSphereStatisticsFactory { DatabaseType protocolType = metaData.getAllDatabases().iterator().next().getProtocolType(); DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(protocolType).getDialectDatabaseMetaData(); // TODO can `protocolType instanceof SchemaSupportedDatabaseType ? "PostgreSQL" : protocolType.getType()` replace to trunk database type? - return dialectDatabaseMetaData.getDefaultSchema().isPresent() ? TypedSPILoader.getService(DatabaseType.class, "PostgreSQL") : protocolType; + return dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent() ? TypedSPILoader.getService(DatabaseType.class, "PostgreSQL") : protocolType; } private static void fillDefaultStatistics(final ShardingSphereMetaData metaData, final ShardingSphereStatistics statistics) { diff --git a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/loader/MetaDataLoaderConnection.java b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/loader/MetaDataLoaderConnection.java index a72d23a3489..e944f99fc48 100644 --- a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/loader/MetaDataLoaderConnection.java +++ b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/loader/MetaDataLoaderConnection.java @@ -71,7 +71,7 @@ public final class MetaDataLoaderConnection implements Connection { @Override public String getSchema() { - return dialectDatabaseMetaData.getSchema(connection); + return dialectDatabaseMetaData.getSchemaOption().getSchema(connection); } @Override diff --git a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/loader/type/SchemaMetaDataLoader.java b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/loader/type/SchemaMetaDataLoader.java index e0b08fae5fc..d8a9e0036cd 100644 --- a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/loader/type/SchemaMetaDataLoader.java +++ b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/loader/type/SchemaMetaDataLoader.java @@ -73,7 +73,7 @@ public final class SchemaMetaDataLoader { DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData(); Map<String, Collection<String>> result = new CaseInsensitiveMap<>(schemaNames.size(), 1F); for (String each : schemaNames) { - String schemaName = dialectDatabaseMetaData.getDefaultSchema().isPresent() ? each : databaseName; + String schemaName = dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent() ? each : databaseName; result.put(schemaName, loadTableNames(connection, each, excludedTables)); } return result; @@ -90,7 +90,7 @@ public final class SchemaMetaDataLoader { */ public static Collection<String> loadSchemaNames(final Connection connection, final DatabaseType databaseType) throws SQLException { DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData(); - if (!dialectDatabaseMetaData.getDefaultSchema().isPresent()) { + if (!dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent()) { return Collections.singletonList(connection.getSchema()); } Collection<String> result = new LinkedList<>(); 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 a47f41c5385..42e26393897 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 @@ -22,14 +22,12 @@ import org.apache.shardingsphere.infra.database.core.metadata.database.enums.Quo import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.datatype.DefaultDataTypeOption; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.datatype.DialectDataTypeOption; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.join.DialectJoinOrderOption; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.scehma.DefaultSchemaOption; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.scehma.DialectSchemaOption; 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; -import java.sql.Connection; -import java.sql.SQLException; -import java.util.Optional; - /** * Dialect database meta data. */ @@ -61,36 +59,12 @@ public interface DialectDatabaseMetaData extends DatabaseTypedSPI { } /** - * Is schema feature available. - * - * @return true or false - */ - default boolean isSchemaAvailable() { - return false; - } - - /** - * Get schema. - * - * @param connection connection - * @return schema - */ - @SuppressWarnings("ReturnOfNull") - default String getSchema(final Connection connection) { - try { - return connection.getSchema(); - } catch (final SQLException ignored) { - return null; - } - } - - /** - * Get default schema name. + * Get schema option. * - * @return default schema name + * @return schema option */ - default Optional<String> getDefaultSchema() { - return Optional.empty(); + default DialectSchemaOption getSchemaOption() { + return new DefaultSchemaOption(false, null); } /** diff --git a/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/metadata/database/fixture/TrunkDialectDatabaseMetaData.java b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/option/scehma/DefaultSchemaOption.java similarity index 58% copy from infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/metadata/database/fixture/TrunkDialectDatabaseMetaData.java copy to infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/option/scehma/DefaultSchemaOption.java index 80615ffc9b9..9d2672f4b95 100644 --- a/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/metadata/database/fixture/TrunkDialectDatabaseMetaData.java +++ b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/option/scehma/DefaultSchemaOption.java @@ -15,33 +15,38 @@ * limitations under the License. */ -package org.apache.shardingsphere.infra.database.core.metadata.database.fixture; +package org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.scehma; -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 lombok.Getter; +import lombok.RequiredArgsConstructor; +import java.sql.Connection; +import java.sql.SQLException; import java.util.Optional; -public final class TrunkDialectDatabaseMetaData implements DialectDatabaseMetaData { +/** + * Default schema option. + */ +@RequiredArgsConstructor +public final class DefaultSchemaOption implements DialectSchemaOption { - @Override - public QuoteCharacter getQuoteCharacter() { - return QuoteCharacter.NONE; - } + @Getter + private final boolean isSchemaAvailable; - @Override - public NullsOrderType getDefaultNullsOrderType() { - return NullsOrderType.LOW; - } + private final String defaultSchema; @Override - public Optional<String> getDefaultSchema() { - return Optional.of("test"); + @SuppressWarnings("ReturnOfNull") + public String getSchema(final Connection connection) { + try { + return connection.getSchema(); + } catch (final SQLException ignored) { + return null; + } } @Override - public String getDatabaseType() { - return "TRUNK"; + public Optional<String> getDefaultSchema() { + return Optional.ofNullable(defaultSchema); } } diff --git a/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/metadata/database/fixture/TrunkDialectDatabaseMetaData.java b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/option/scehma/DialectSchemaOption.java similarity index 53% copy from infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/metadata/database/fixture/TrunkDialectDatabaseMetaData.java copy to infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/option/scehma/DialectSchemaOption.java index 80615ffc9b9..cc72ecfda7f 100644 --- a/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/metadata/database/fixture/TrunkDialectDatabaseMetaData.java +++ b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/option/scehma/DialectSchemaOption.java @@ -15,33 +15,35 @@ * limitations under the License. */ -package org.apache.shardingsphere.infra.database.core.metadata.database.fixture; - -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; +package org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.scehma; +import java.sql.Connection; import java.util.Optional; -public final class TrunkDialectDatabaseMetaData implements DialectDatabaseMetaData { - - @Override - public QuoteCharacter getQuoteCharacter() { - return QuoteCharacter.NONE; - } +/** + * Dialect schema option. + */ +public interface DialectSchemaOption { - @Override - public NullsOrderType getDefaultNullsOrderType() { - return NullsOrderType.LOW; - } + /** + * Is schema feature available. + * + * @return true or false + */ + boolean isSchemaAvailable(); - @Override - public Optional<String> getDefaultSchema() { - return Optional.of("test"); - } + /** + * Get schema. + * + * @param connection connection + * @return schema + */ + String getSchema(Connection connection); - @Override - public String getDatabaseType() { - return "TRUNK"; - } + /** + * Get default schema name. + * + * @return default schema name + */ + Optional<String> getDefaultSchema(); } 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 87416a5fb0a..bae3aeacc90 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 @@ -64,6 +64,6 @@ public final class DatabaseTypeRegistry { * @return default schema name */ public String getDefaultSchemaName(final String databaseName) { - return dialectDatabaseMetaData.getDefaultSchema().orElseGet(() -> null == databaseName ? null : databaseName.toLowerCase()); + return dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().orElseGet(() -> null == databaseName ? null : databaseName.toLowerCase()); } } diff --git a/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/metadata/database/fixture/TrunkDialectDatabaseMetaData.java b/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/metadata/database/fixture/TrunkDialectDatabaseMetaData.java index 80615ffc9b9..447a683b254 100644 --- a/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/metadata/database/fixture/TrunkDialectDatabaseMetaData.java +++ b/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/metadata/database/fixture/TrunkDialectDatabaseMetaData.java @@ -17,11 +17,11 @@ package org.apache.shardingsphere.infra.database.core.metadata.database.fixture; -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 java.util.Optional; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.DialectDatabaseMetaData; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.scehma.DefaultSchemaOption; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.scehma.DialectSchemaOption; public final class TrunkDialectDatabaseMetaData implements DialectDatabaseMetaData { @@ -36,8 +36,8 @@ public final class TrunkDialectDatabaseMetaData implements DialectDatabaseMetaDa } @Override - public Optional<String> getDefaultSchema() { - return Optional.of("test"); + public DialectSchemaOption getSchemaOption() { + return new DefaultSchemaOption(false, "test"); } @Override diff --git a/infra/database/type/hive/src/main/java/org/apache/shardingsphere/infra/database/hive/metadata/database/HiveDatabaseMetaData.java b/infra/database/type/hive/src/main/java/org/apache/shardingsphere/infra/database/hive/metadata/database/HiveDatabaseMetaData.java index 931ba8e5e72..1a40559063c 100644 --- a/infra/database/type/hive/src/main/java/org/apache/shardingsphere/infra/database/hive/metadata/database/HiveDatabaseMetaData.java +++ b/infra/database/type/hive/src/main/java/org/apache/shardingsphere/infra/database/hive/metadata/database/HiveDatabaseMetaData.java @@ -17,11 +17,11 @@ package org.apache.shardingsphere.infra.database.hive.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 java.util.Optional; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.DialectDatabaseMetaData; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.scehma.DefaultSchemaOption; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.scehma.DialectSchemaOption; /** * Database meta data of Hive. @@ -39,8 +39,8 @@ public final class HiveDatabaseMetaData implements DialectDatabaseMetaData { } @Override - public Optional<String> getDefaultSchema() { - return Optional.of("default"); + public DialectSchemaOption getSchemaOption() { + return new DefaultSchemaOption(false, "default"); } @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 aed075fe4d4..7c973ddb7e7 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 @@ -21,11 +21,11 @@ import org.apache.shardingsphere.infra.database.core.metadata.database.enums.Nul import org.apache.shardingsphere.infra.database.core.metadata.database.enums.QuoteCharacter; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.DialectDatabaseMetaData; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.datatype.DialectDataTypeOption; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.scehma.DefaultSchemaOption; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.scehma.DialectSchemaOption; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.transaction.DialectTransactionOption; import org.apache.shardingsphere.infra.database.opengauss.metadata.database.option.OpenGaussDataTypeOption; -import java.util.Optional; - /** * Database meta data of openGauss. */ @@ -47,13 +47,8 @@ public final class OpenGaussDatabaseMetaData implements DialectDatabaseMetaData } @Override - public boolean isSchemaAvailable() { - return true; - } - - @Override - public Optional<String> getDefaultSchema() { - return Optional.of("public"); + public DialectSchemaOption getSchemaOption() { + return new DefaultSchemaOption(true, "public"); } @Override diff --git a/infra/database/type/opengauss/src/test/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/OpenGaussDatabaseMetaDataTest.java b/infra/database/type/opengauss/src/test/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/OpenGaussDatabaseMetaDataTest.java index 8fecb8d44ab..f5e2bba5c00 100644 --- a/infra/database/type/opengauss/src/test/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/OpenGaussDatabaseMetaDataTest.java +++ b/infra/database/type/opengauss/src/test/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/OpenGaussDatabaseMetaDataTest.java @@ -41,11 +41,11 @@ class OpenGaussDatabaseMetaDataTest { @Test void assertIsSchemaAvailable() { - assertTrue(dialectDatabaseMetaData.isSchemaAvailable()); + assertTrue(dialectDatabaseMetaData.getSchemaOption().isSchemaAvailable()); } @Test void assertGetDefaultSchema() { - assertThat(dialectDatabaseMetaData.getDefaultSchema(), is(Optional.of("public"))); + assertThat(dialectDatabaseMetaData.getSchemaOption().getDefaultSchema(), is(Optional.of("public"))); } } 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 a61fcd94c67..4fdeae34913 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 @@ -21,11 +21,9 @@ import org.apache.shardingsphere.infra.database.core.metadata.database.enums.Nul import org.apache.shardingsphere.infra.database.core.metadata.database.enums.QuoteCharacter; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.DialectDatabaseMetaData; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.datatype.DialectDataTypeOption; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.scehma.DialectSchemaOption; import org.apache.shardingsphere.infra.database.oracle.metadata.database.option.OracleDataTypeOption; - -import java.sql.Connection; -import java.sql.SQLException; -import java.util.Optional; +import org.apache.shardingsphere.infra.database.oracle.metadata.database.option.OracleSchemaOption; /** * Database meta data of Oracle. @@ -48,17 +46,8 @@ public final class OracleDatabaseMetaData implements DialectDatabaseMetaData { } @Override - public boolean isSchemaAvailable() { - return true; - } - - @Override - public String getSchema(final Connection connection) { - try { - return Optional.ofNullable(connection.getMetaData().getUserName()).map(String::toUpperCase).orElse(null); - } catch (final SQLException ignored) { - return null; - } + public DialectSchemaOption getSchemaOption() { + return new OracleSchemaOption(); } @Override diff --git a/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/metadata/database/fixture/TrunkDialectDatabaseMetaData.java b/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/option/OracleSchemaOption.java similarity index 59% copy from infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/metadata/database/fixture/TrunkDialectDatabaseMetaData.java copy to infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/option/OracleSchemaOption.java index 80615ffc9b9..92e8ec6ee17 100644 --- a/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/metadata/database/fixture/TrunkDialectDatabaseMetaData.java +++ b/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/metadata/database/option/OracleSchemaOption.java @@ -15,33 +15,35 @@ * limitations under the License. */ -package org.apache.shardingsphere.infra.database.core.metadata.database.fixture; +package org.apache.shardingsphere.infra.database.oracle.metadata.database.option; -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.scehma.DialectSchemaOption; +import java.sql.Connection; +import java.sql.SQLException; import java.util.Optional; -public final class TrunkDialectDatabaseMetaData implements DialectDatabaseMetaData { +/** + * Schema option for Oracle. + */ +public final class OracleSchemaOption implements DialectSchemaOption { @Override - public QuoteCharacter getQuoteCharacter() { - return QuoteCharacter.NONE; + public boolean isSchemaAvailable() { + return true; } @Override - public NullsOrderType getDefaultNullsOrderType() { - return NullsOrderType.LOW; + public String getSchema(final Connection connection) { + try { + return Optional.ofNullable(connection.getMetaData().getUserName()).map(String::toUpperCase).orElse(null); + } catch (final SQLException ignored) { + return null; + } } @Override public Optional<String> getDefaultSchema() { - return Optional.of("test"); - } - - @Override - public String getDatabaseType() { - return "TRUNK"; + return Optional.empty(); } } 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 cdee1003ceb..9b0c75e4850 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 @@ -47,14 +47,14 @@ class OracleDatabaseMetaDataTest { void assertGetSchema() throws SQLException { Connection connection = mock(Connection.class, RETURNS_DEEP_STUBS); when(connection.getMetaData().getUserName()).thenReturn("scott"); - assertThat(dialectDatabaseMetaData.getSchema(connection), is("SCOTT")); + assertThat(dialectDatabaseMetaData.getSchemaOption().getSchema(connection), is("SCOTT")); } @Test void assertGetSchemaIfExceptionThrown() throws SQLException { Connection connection = mock(Connection.class, RETURNS_DEEP_STUBS); when(connection.getMetaData().getUserName()).thenThrow(SQLException.class); - assertNull(dialectDatabaseMetaData.getSchema(connection)); + assertNull(dialectDatabaseMetaData.getSchemaOption().getSchema(connection)); } @Test 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 db4f9545da5..06c4807e1ed 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 @@ -21,11 +21,11 @@ import org.apache.shardingsphere.infra.database.core.metadata.database.enums.Nul import org.apache.shardingsphere.infra.database.core.metadata.database.enums.QuoteCharacter; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.DialectDatabaseMetaData; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.datatype.DialectDataTypeOption; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.scehma.DefaultSchemaOption; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.scehma.DialectSchemaOption; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.transaction.DialectTransactionOption; import org.apache.shardingsphere.infra.database.postgresql.metadata.database.option.PostgreSQLDataTypeOption; -import java.util.Optional; - /** * Database meta data of PostgreSQL. */ @@ -47,13 +47,8 @@ public final class PostgreSQLDatabaseMetaData implements DialectDatabaseMetaData } @Override - public boolean isSchemaAvailable() { - return true; - } - - @Override - public Optional<String> getDefaultSchema() { - return Optional.of("public"); + public DialectSchemaOption getSchemaOption() { + return new DefaultSchemaOption(true, "public"); } @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 c364a9bc301..90df7ff0d5a 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 @@ -41,12 +41,12 @@ class PostgreSQLDatabaseMetaDataTest { @Test void assertIsSchemaAvailable() { - assertTrue(dialectDatabaseMetaData.isSchemaAvailable()); + assertTrue(dialectDatabaseMetaData.getSchemaOption().isSchemaAvailable()); } @Test void assertGetDefaultSchema() { - assertThat(dialectDatabaseMetaData.getDefaultSchema(), is(Optional.of("public"))); + assertThat(dialectDatabaseMetaData.getSchemaOption().getDefaultSchema(), is(Optional.of("public"))); } @Test diff --git a/infra/database/type/presto/src/main/java/org/apache/shardingsphere/infra/database/presto/metadata/database/PrestoDatabaseMetaData.java b/infra/database/type/presto/src/main/java/org/apache/shardingsphere/infra/database/presto/metadata/database/PrestoDatabaseMetaData.java index 9b26b84f06f..20ddd9800d0 100644 --- a/infra/database/type/presto/src/main/java/org/apache/shardingsphere/infra/database/presto/metadata/database/PrestoDatabaseMetaData.java +++ b/infra/database/type/presto/src/main/java/org/apache/shardingsphere/infra/database/presto/metadata/database/PrestoDatabaseMetaData.java @@ -17,11 +17,11 @@ package org.apache.shardingsphere.infra.database.presto.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 java.util.Optional; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.DialectDatabaseMetaData; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.scehma.DefaultSchemaOption; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.scehma.DialectSchemaOption; /** * Database meta data of Presto. @@ -39,8 +39,8 @@ public final class PrestoDatabaseMetaData implements DialectDatabaseMetaData { } @Override - public Optional<String> getDefaultSchema() { - return Optional.of("default"); + public DialectSchemaOption getSchemaOption() { + return new DefaultSchemaOption(false, "default"); } @Override diff --git a/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/metadata/database/SQLServerDatabaseMetaData.java b/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/metadata/database/SQLServerDatabaseMetaData.java index 9eb95132f9e..d036ec042a3 100644 --- a/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/metadata/database/SQLServerDatabaseMetaData.java +++ b/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/metadata/database/SQLServerDatabaseMetaData.java @@ -17,11 +17,11 @@ package org.apache.shardingsphere.infra.database.sqlserver.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 java.util.Optional; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.DialectDatabaseMetaData; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.scehma.DefaultSchemaOption; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.scehma.DialectSchemaOption; /** * Database meta data of SQLServer. @@ -39,8 +39,8 @@ public final class SQLServerDatabaseMetaData implements DialectDatabaseMetaData } @Override - public Optional<String> getDefaultSchema() { - return Optional.of("dbo"); + public DialectSchemaOption getSchemaOption() { + return new DefaultSchemaOption(false, "dbo"); } @Override diff --git a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rql/resource/ShowLogicalTablesExecutor.java b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rql/resource/ShowLogicalTablesExecutor.java index 5b8a1467b5c..682cf358916 100644 --- a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rql/resource/ShowLogicalTablesExecutor.java +++ b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/executor/rql/resource/ShowLogicalTablesExecutor.java @@ -55,7 +55,7 @@ public final class ShowLogicalTablesExecutor implements DistSQLQueryExecutor<Sho @Override public Collection<LocalDataQueryResultRow> getRows(final ShowLogicalTablesStatement sqlStatement, final ContextManager contextManager) { DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(database.getProtocolType()).getDialectDatabaseMetaData(); - String schemaName = dialectDatabaseMetaData.getDefaultSchema().orElse(database.getName()); + String schemaName = dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().orElse(database.getName()); if (null == database.getSchema(schemaName)) { return Collections.emptyList(); } diff --git a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/common/generator/generic/RemoveTokenGenerator.java b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/common/generator/generic/RemoveTokenGenerator.java index 0c0a1ebd2b1..d0cde0b40c7 100644 --- a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/common/generator/generic/RemoveTokenGenerator.java +++ b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/common/generator/generic/RemoveTokenGenerator.java @@ -79,7 +79,7 @@ public final class RemoveTokenGenerator implements CollectionSQLTokenGenerator<S } DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData(); OwnerSegment ownerSegment = each.getOwner().get(); - if (dialectDatabaseMetaData.getDefaultSchema().isPresent()) { + if (dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent()) { ownerSegment.getOwner().ifPresent(optional -> result.add(new RemoveToken(optional.getStartIndex(), ownerSegment.getStartIndex() - 1))); } else { result.add(new RemoveToken(ownerSegment.getStartIndex(), each.getTableName().getStartIndex() - 1)); diff --git a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractStatementAdapter.java b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractStatementAdapter.java index 03224fc26cb..59c0af0cc00 100644 --- a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractStatementAdapter.java +++ b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractStatementAdapter.java @@ -57,7 +57,7 @@ public abstract class AbstractStatementAdapter extends WrapperAdapter implements if (connection.getDatabaseConnectionManager().getConnectionContext().getTransactionContext().isInTransaction()) { DatabaseType databaseType = metaData.getDatabase(connection.getCurrentDatabaseName()).getProtocolType(); DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData(); - if (dialectDatabaseMetaData.getDefaultSchema().isPresent()) { + if (dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent()) { connection.getDatabaseConnectionManager().getConnectionContext().getTransactionContext().setExceptionOccur(true); } } diff --git a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java index c41917e7745..7d8431a6b8c 100644 --- a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java +++ b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java @@ -238,7 +238,7 @@ public final class ShardingSphereConnection extends AbstractConnectionAdapter { private boolean isSchemaSupportedDatabaseType() { DatabaseType databaseType = contextManager.getMetaDataContexts().getMetaData().getDatabase(currentDatabaseName).getProtocolType(); - return new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData().getDefaultSchema().isPresent(); + return new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData().getSchemaOption().getDefaultSchema().isPresent(); } @SuppressWarnings("MagicConstant") diff --git a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/importer/ImporterConfiguration.java b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/importer/ImporterConfiguration.java index 6df8bec8936..f1cfb2abe5e 100644 --- a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/importer/ImporterConfiguration.java +++ b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/importer/ImporterConfiguration.java @@ -77,7 +77,7 @@ public final class ImporterConfiguration { */ public Optional<String> findSchemaName(final String logicTableName) { DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(dataSourceConfig.getDatabaseType()).getDialectDatabaseMetaData(); - return dialectDatabaseMetaData.isSchemaAvailable() ? Optional.of(tableAndSchemaNameMapper.getSchemaName(logicTableName)) : Optional.empty(); + return dialectDatabaseMetaData.getSchemaOption().isSchemaAvailable() ? Optional.of(tableAndSchemaNameMapper.getSchemaName(logicTableName)) : Optional.empty(); } /** diff --git a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/loader/StandardPipelineTableMetaDataLoader.java b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/loader/StandardPipelineTableMetaDataLoader.java index ff0333dce1d..2b2cccf2060 100644 --- a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/loader/StandardPipelineTableMetaDataLoader.java +++ b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/loader/StandardPipelineTableMetaDataLoader.java @@ -74,7 +74,7 @@ public final class StandardPipelineTableMetaDataLoader implements PipelineTableM private void loadTableMetaData(final String schemaName, final String tableName) throws SQLException { try (Connection connection = dataSource.getConnection()) { DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(dataSource.getDatabaseType()).getDialectDatabaseMetaData(); - tableMetaDataMap.putAll(loadTableMetaData(connection, dialectDatabaseMetaData.isSchemaAvailable() ? schemaName : null, tableName)); + tableMetaDataMap.putAll(loadTableMetaData(connection, dialectDatabaseMetaData.getSchemaOption().isSchemaAvailable() ? schemaName : null, tableName)); } } diff --git a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/datasource/PipelineJobDataSourcePreparer.java b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/datasource/PipelineJobDataSourcePreparer.java index fd88018e4a0..b805de5f628 100644 --- a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/datasource/PipelineJobDataSourcePreparer.java +++ b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/datasource/PipelineJobDataSourcePreparer.java @@ -70,10 +70,10 @@ public final class PipelineJobDataSourcePreparer { public void prepareTargetSchemas(final PrepareTargetSchemasParameter param) throws SQLException { DatabaseType targetDatabaseType = param.getTargetDatabaseType(); DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(targetDatabaseType).getDialectDatabaseMetaData(); - if (!dialectDatabaseMetaData.isSchemaAvailable()) { + if (!dialectDatabaseMetaData.getSchemaOption().isSchemaAvailable()) { return; } - String defaultSchema = dialectDatabaseMetaData.getDefaultSchema().orElse(null); + String defaultSchema = dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().orElse(null); PipelinePrepareSQLBuilder pipelineSQLBuilder = new PipelinePrepareSQLBuilder(targetDatabaseType); Collection<String> createdSchemaNames = new HashSet<>(param.getCreateTableConfigurations().size(), 1F); for (CreateTableConfiguration each : param.getCreateTableConfigurations()) { diff --git a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/sqlbuilder/segment/PipelineSQLSegmentBuilder.java b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/sqlbuilder/segment/PipelineSQLSegmentBuilder.java index 88a8f9239a7..bb58daa0cc5 100644 --- a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/sqlbuilder/segment/PipelineSQLSegmentBuilder.java +++ b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/sqlbuilder/segment/PipelineSQLSegmentBuilder.java @@ -53,7 +53,7 @@ public final class PipelineSQLSegmentBuilder { */ public String getQualifiedTableName(final String schemaName, final String tableName) { StringBuilder result = new StringBuilder(); - if (dialectDatabaseMetaData.isSchemaAvailable() && !Strings.isNullOrEmpty(schemaName)) { + if (dialectDatabaseMetaData.getSchemaOption().isSchemaAvailable() && !Strings.isNullOrEmpty(schemaName)) { result.append(getEscapedIdentifier(schemaName)).append('.'); } result.append(getEscapedIdentifier(tableName)); diff --git a/kernel/data-pipeline/scenario/cdc/core/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/handler/CDCBackendHandler.java b/kernel/data-pipeline/scenario/cdc/core/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/handler/CDCBackendHandler.java index fde535b6fc5..632352bba5a 100644 --- a/kernel/data-pipeline/scenario/cdc/core/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/handler/CDCBackendHandler.java +++ b/kernel/data-pipeline/scenario/cdc/core/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/handler/CDCBackendHandler.java @@ -105,7 +105,7 @@ public final class CDCBackendHandler { Collection<String> tableNames; Set<String> schemaTableNames = new HashSet<>(); DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(database.getProtocolType()).getDialectDatabaseMetaData(); - if (dialectDatabaseMetaData.isSchemaAvailable()) { + if (dialectDatabaseMetaData.getSchemaOption().isSchemaAvailable()) { schemaTableNameMap = CDCSchemaTableUtils.parseTableExpressionWithSchema(database, requestBody.getSourceSchemaTableList()); // TODO if different schema have same table names, table name may be overwritten, because the table name at sharding rule not contain schema. tableNames = schemaTableNameMap.values().stream().flatMap(Collection::stream).collect(Collectors.toList()); diff --git a/kernel/data-pipeline/scenario/cdc/core/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/util/CDCSchemaTableUtils.java b/kernel/data-pipeline/scenario/cdc/core/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/util/CDCSchemaTableUtils.java index db1a3884be7..14f06dd4b2b 100644 --- a/kernel/data-pipeline/scenario/cdc/core/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/util/CDCSchemaTableUtils.java +++ b/kernel/data-pipeline/scenario/cdc/core/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/util/CDCSchemaTableUtils.java @@ -67,8 +67,8 @@ public final class CDCSchemaTableUtils { result.putAll(parseTableExpressionWithAllTable(database, each)); } else { String schemaName = each.getSchema(); - if (dialectDatabaseMetaData.getDefaultSchema().isPresent() && schemaName.isEmpty()) { - schemaName = dialectDatabaseMetaData.getDefaultSchema().get(); + if (dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent() && schemaName.isEmpty()) { + schemaName = dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().get(); } ShardingSpherePreconditions.checkNotNull(database.getSchema(schemaName).getTable(each.getTable()), () -> new TableNotFoundException(each.getTable())); result.computeIfAbsent(schemaName, ignored -> new HashSet<>()).add(each.getTable()); @@ -101,7 +101,7 @@ public final class CDCSchemaTableUtils { private static Map<String, Set<String>> parseTableExpressionWithAllTable(final ShardingSphereDatabase database, final SchemaTable schemaTable) { DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(database.getProtocolType()).getDialectDatabaseMetaData(); String schemaName = schemaTable.getSchema().isEmpty() - ? dialectDatabaseMetaData.getDefaultSchema().orElseThrow(() -> new IllegalStateException("Default schema should exist.")) + ? dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().orElseThrow(() -> new IllegalStateException("Default schema should exist.")) : schemaTable.getSchema(); ShardingSphereSchema schema = database.getSchema(schemaName); ShardingSpherePreconditions.checkNotNull(schema, () -> new SchemaNotFoundException(schemaTable.getSchema())); diff --git a/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/MigrationJobExecutorCallback.java b/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/MigrationJobExecutorCallback.java index 38c173d2540..e20f916968f 100644 --- a/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/MigrationJobExecutorCallback.java +++ b/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/MigrationJobExecutorCallback.java @@ -80,7 +80,7 @@ public final class MigrationJobExecutorCallback implements DistributedPipelineJo DataNode dataNode = jobDataNodeEntry.getDataNodes().get(0); PipelineDataSourceConfiguration sourceDataSourceConfig = jobConfig.getSources().get(dataNode.getDataSourceName()); String sourceSchemaName = mapper.getSchemaName(jobDataNodeEntry.getLogicTableName()); - String targetSchemaName = new DatabaseTypeRegistry(jobConfig.getTargetDatabaseType()).getDialectDatabaseMetaData().isSchemaAvailable() ? sourceSchemaName : null; + String targetSchemaName = new DatabaseTypeRegistry(jobConfig.getTargetDatabaseType()).getDialectDatabaseMetaData().getSchemaOption().isSchemaAvailable() ? sourceSchemaName : null; return new CreateTableConfiguration(sourceDataSourceConfig, new QualifiedTable(sourceSchemaName, dataNode.getTableName()), jobConfig.getTarget(), new QualifiedTable(targetSchemaName, jobDataNodeEntry.getLogicTableName())); } diff --git a/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/api/MigrationJobAPI.java b/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/api/MigrationJobAPI.java index 2d0fbbe4189..e9e6eb6446a 100644 --- a/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/api/MigrationJobAPI.java +++ b/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/api/MigrationJobAPI.java @@ -144,7 +144,7 @@ public final class MigrationJobAPI implements TransmissionJobAPI { StandardPipelineDataSourceConfiguration sourceDataSourceConfig = new StandardPipelineDataSourceConfiguration(sourceDataSourcePoolProps); configSources.put(dataSourceName, buildYamlPipelineDataSourceConfiguration(sourceDataSourceConfig.getType(), sourceDataSourceConfig.getParameter())); DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(sourceDataSourceConfig.getDatabaseType()).getDialectDatabaseMetaData(); - if (null == each.getSource().getSchemaName() && dialectDatabaseMetaData.isSchemaAvailable()) { + if (null == each.getSource().getSchemaName() && dialectDatabaseMetaData.getSchemaOption().isSchemaAvailable()) { each.getSource().setSchemaName(PipelineSchemaUtils.getDefaultSchema(sourceDataSourceConfig)); } DatabaseType sourceDatabaseType = sourceDataSourceConfig.getDatabaseType(); diff --git a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/decorator/SingleRuleConfigurationDecorator.java b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/decorator/SingleRuleConfigurationDecorator.java index 908d51be858..a51064eba0f 100644 --- a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/decorator/SingleRuleConfigurationDecorator.java +++ b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/decorator/SingleRuleConfigurationDecorator.java @@ -67,7 +67,7 @@ public final class SingleRuleConfigurationDecorator implements RuleConfiguration DatabaseType databaseType = dataSources.isEmpty() ? DatabaseTypeEngine.getDefaultStorageType() : DatabaseTypeEngine.getStorageType(dataSources.values().iterator().next()); Collection<String> excludedTables = SingleTableLoadUtils.getExcludedTables(builtRules); Map<String, Collection<DataNode>> actualDataNodes = SingleTableDataNodeLoader.load(databaseName, aggregatedDataSources, excludedTables); - boolean isSchemaSupportedDatabaseType = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData().getDefaultSchema().isPresent(); + boolean isSchemaSupportedDatabaseType = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData().getSchemaOption().getDefaultSchema().isPresent(); if (splitTables.contains(SingleTableConstants.ALL_TABLES) || splitTables.contains(SingleTableConstants.ALL_SCHEMA_TABLES)) { return loadAllTables(isSchemaSupportedDatabaseType, actualDataNodes); } diff --git a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/util/SingleTableLoadUtils.java b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/util/SingleTableLoadUtils.java index 1582b1c6cf2..f7178eb3739 100644 --- a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/util/SingleTableLoadUtils.java +++ b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/util/SingleTableLoadUtils.java @@ -118,7 +118,7 @@ public final class SingleTableLoadUtils { */ public static String getAllTablesNodeStr(final DatabaseType databaseType) { DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData(); - return dialectDatabaseMetaData.getDefaultSchema().isPresent() ? SingleTableConstants.ALL_SCHEMA_TABLES : SingleTableConstants.ALL_TABLES; + return dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent() ? SingleTableConstants.ALL_SCHEMA_TABLES : SingleTableConstants.ALL_TABLES; } /** @@ -131,7 +131,7 @@ public final class SingleTableLoadUtils { */ public static String getAllTablesNodeStrFromDataSource(final DatabaseType databaseType, final String dataSourceName, final String schemaName) { DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData(); - return dialectDatabaseMetaData.getDefaultSchema().isPresent() + return dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent() ? formatDataNode(dataSourceName, schemaName, SingleTableConstants.ASTERISK) : formatDataNode(dataSourceName, SingleTableConstants.ASTERISK); } @@ -147,7 +147,7 @@ public final class SingleTableLoadUtils { */ public static String getDataNodeString(final DatabaseType databaseType, final String dataSourceName, final String schemaName, final String tableName) { DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData(); - return dialectDatabaseMetaData.getDefaultSchema().isPresent() ? formatDataNode(dataSourceName, schemaName, tableName) : formatDataNode(dataSourceName, tableName); + return dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent() ? formatDataNode(dataSourceName, schemaName, tableName) : formatDataNode(dataSourceName, tableName); } private static String formatDataNode(final String dataSourceName, final String tableName) { diff --git a/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/update/LoadSingleTableExecutor.java b/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/update/LoadSingleTableExecutor.java index c1e424963a7..116aa221b65 100644 --- a/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/update/LoadSingleTableExecutor.java +++ b/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/update/LoadSingleTableExecutor.java @@ -87,7 +87,7 @@ public final class LoadSingleTableExecutor implements DatabaseRuleCreateExecutor private void checkShouldNotExistLogicTables(final LoadSingleTableStatement sqlStatement, final String defaultSchemaName) { Collection<SingleTableSegment> tableSegments = sqlStatement.getTables(); DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(database.getProtocolType()).getDialectDatabaseMetaData(); - boolean isSchemaSupportedDatabaseType = dialectDatabaseMetaData.getDefaultSchema().isPresent(); + boolean isSchemaSupportedDatabaseType = dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent(); ShardingSphereSchema schema = database.getSchema(defaultSchemaName); for (SingleTableSegment each : tableSegments) { checkTableNodeFormat(isSchemaSupportedDatabaseType, each); diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DropDatabaseBackendHandler.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DropDatabaseBackendHandler.java index 0670e692990..71979feb4b8 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DropDatabaseBackendHandler.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DropDatabaseBackendHandler.java @@ -75,6 +75,7 @@ public final class DropDatabaseBackendHandler implements ProxyBackendHandler { private void checkSupportedDropCurrentDatabase(final ConnectionSession connectionSession) { DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(connectionSession.getProtocolType()).getDialectDatabaseMetaData(); - ShardingSpherePreconditions.checkState(!dialectDatabaseMetaData.getDefaultSchema().isPresent(), () -> new UnsupportedOperationException("cannot drop the currently open database")); + ShardingSpherePreconditions.checkState(!dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent(), + () -> new UnsupportedOperationException("cannot drop the currently open database")); } } diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLBackendHandler.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLBackendHandler.java index 8388cb34023..5c3bf278f2a 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLBackendHandler.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLBackendHandler.java @@ -101,7 +101,7 @@ public final class TCLBackendHandler implements ProxyBackendHandler { if (connectionSession.getTransactionStatus().isInTransaction()) { if (dialectDatabaseMetaData.getTransactionOption().isSupportAutoCommitInNestedTransaction()) { backendTransactionManager.commit(); - } else if (dialectDatabaseMetaData.getDefaultSchema().isPresent()) { + } else if (dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent()) { throw new InTransactionException(); } } @@ -109,19 +109,19 @@ public final class TCLBackendHandler implements ProxyBackendHandler { } private void handleSavepoint() throws SQLException { - ShardingSpherePreconditions.checkState(connectionSession.getTransactionStatus().isInTransaction() || !dialectDatabaseMetaData.getDefaultSchema().isPresent(), + ShardingSpherePreconditions.checkState(connectionSession.getTransactionStatus().isInTransaction() || !dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent(), () -> new SQLFeatureNotSupportedException("SAVEPOINT can only be used in transaction blocks")); backendTransactionManager.setSavepoint(((SavepointStatement) tclStatement).getSavepointName()); } private void handleRollbackToSavepoint() throws SQLException { - ShardingSpherePreconditions.checkState(connectionSession.getTransactionStatus().isInTransaction() || !dialectDatabaseMetaData.getDefaultSchema().isPresent(), + ShardingSpherePreconditions.checkState(connectionSession.getTransactionStatus().isInTransaction() || !dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent(), () -> new SQLFeatureNotSupportedException("ROLLBACK TO SAVEPOINT can only be used in transaction blocks")); backendTransactionManager.rollbackTo(((RollbackStatement) tclStatement).getSavepointName().get()); } private void handleReleaseSavepoint() throws SQLException { - ShardingSpherePreconditions.checkState(connectionSession.getTransactionStatus().isInTransaction() || !dialectDatabaseMetaData.getDefaultSchema().isPresent(), + ShardingSpherePreconditions.checkState(connectionSession.getTransactionStatus().isInTransaction() || !dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent(), () -> new SQLFeatureNotSupportedException("RELEASE SAVEPOINT can only be used in transaction blocks")); backendTransactionManager.releaseSavepoint(((ReleaseSavepointStatement) tclStatement).getSavepointName()); } diff --git a/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/information/SelectInformationSchemataExecutorTest.java b/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/information/SelectInformationSchemataExecutorTest.java index 1422b562800..04658f455c4 100644 --- a/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/information/SelectInformationSchemataExecutorTest.java +++ b/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/information/SelectInformationSchemataExecutorTest.java @@ -113,7 +113,7 @@ class SelectInformationSchemataExecutorTest { expectedResultSetMap.put("SCHEMA_NAME", "foo_ds"); expectedResultSetMap.put("DEFAULT_COLLATION_NAME", "utf8mb4"); try (MockedConstruction<DatabaseTypeRegistry> ignored = mockConstruction(DatabaseTypeRegistry.class, (mock, mockContext) -> { - DialectDatabaseMetaData dialectDatabaseMetaData = mock(DialectDatabaseMetaData.class); + DialectDatabaseMetaData dialectDatabaseMetaData = mock(DialectDatabaseMetaData.class, RETURNS_DEEP_STUBS); when(dialectDatabaseMetaData.isInstanceConnectionAvailable()).thenReturn(true); when(mock.getDialectDatabaseMetaData()).thenReturn(dialectDatabaseMetaData); })) { diff --git a/test/e2e/operation/pipeline/src/test/java/org/apache/shardingsphere/test/e2e/data/pipeline/cases/PipelineContainerComposer.java b/test/e2e/operation/pipeline/src/test/java/org/apache/shardingsphere/test/e2e/data/pipeline/cases/PipelineContainerComposer.java index 7812f9a130a..e9b09a81395 100644 --- a/test/e2e/operation/pipeline/src/test/java/org/apache/shardingsphere/test/e2e/data/pipeline/cases/PipelineContainerComposer.java +++ b/test/e2e/operation/pipeline/src/test/java/org/apache/shardingsphere/test/e2e/data/pipeline/cases/PipelineContainerComposer.java @@ -312,7 +312,7 @@ public final class PipelineContainerComposer implements AutoCloseable { * @throws SQLException SQL exception */ public void createSchema(final Connection connection, final int sleepSeconds) throws SQLException { - if (!new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData().isSchemaAvailable()) { + if (!new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData().getSchemaOption().isSchemaAvailable()) { return; } connection.createStatement().execute(String.format("CREATE SCHEMA %s", SCHEMA_NAME)); diff --git a/test/e2e/operation/pipeline/src/test/java/org/apache/shardingsphere/test/e2e/data/pipeline/cases/cdc/CDCE2EIT.java b/test/e2e/operation/pipeline/src/test/java/org/apache/shardingsphere/test/e2e/data/pipeline/cases/cdc/CDCE2EIT.java index 7900d9e8f7b..0e024bec57a 100644 --- a/test/e2e/operation/pipeline/src/test/java/org/apache/shardingsphere/test/e2e/data/pipeline/cases/cdc/CDCE2EIT.java +++ b/test/e2e/operation/pipeline/src/test/java/org/apache/shardingsphere/test/e2e/data/pipeline/cases/cdc/CDCE2EIT.java @@ -125,7 +125,7 @@ class CDCE2EIT { String jobId = containerComposer.queryForListWithLog("SHOW STREAMING LIST").get(0).get("id").toString(); containerComposer.waitIncrementTaskFinished(String.format("SHOW STREAMING STATUS '%s'", jobId)); DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(containerComposer.getDatabaseType()).getDialectDatabaseMetaData(); - String tableName = dialectDatabaseMetaData.isSchemaAvailable() ? String.join(".", PipelineContainerComposer.SCHEMA_NAME, SOURCE_TABLE_NAME) : SOURCE_TABLE_NAME; + String tableName = dialectDatabaseMetaData.getSchemaOption().isSchemaAvailable() ? String.join(".", PipelineContainerComposer.SCHEMA_NAME, SOURCE_TABLE_NAME) : SOURCE_TABLE_NAME; new E2EIncrementalTask(sourceDataSource, tableName, new SnowflakeKeyGenerateAlgorithm(), containerComposer.getDatabaseType(), 20).run(); containerComposer.waitIncrementTaskFinished(String.format("SHOW STREAMING STATUS '%s'", jobId)); for (int i = 1; i <= 4; i++) { @@ -133,7 +133,7 @@ class CDCE2EIT { containerComposer.proxyExecuteWithLog(String.format("INSERT INTO %s (order_id, user_id, status) VALUES (%d, %d, 'OK')", tableName, orderId, i), 0); containerComposer.assertOrderRecordExist(targetDataSource, tableName, orderId); } - QualifiedTable orderQualifiedTable = dialectDatabaseMetaData.isSchemaAvailable() + QualifiedTable orderQualifiedTable = dialectDatabaseMetaData.getSchemaOption().isSchemaAvailable() ? new QualifiedTable(PipelineContainerComposer.SCHEMA_NAME, SOURCE_TABLE_NAME) : new QualifiedTable(null, SOURCE_TABLE_NAME); assertDataMatched(sourceDataSource, targetDataSource, orderQualifiedTable); diff --git a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/util/PipelineContextUtils.java b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/util/PipelineContextUtils.java index f3e260fae70..be61a68260f 100644 --- a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/util/PipelineContextUtils.java +++ b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/util/PipelineContextUtils.java @@ -222,7 +222,7 @@ public final class PipelineContextUtils { for (JobDataNodeEntry each : jobConfig.getTablesFirstDataNodes().getEntries()) { String sourceSchemaName = tableAndSchemaNameMapper.getSchemaName(each.getLogicTableName()); DialectDatabaseMetaData dialectDatabaseMetaData = new DatabaseTypeRegistry(jobConfig.getTargetDatabaseType()).getDialectDatabaseMetaData(); - String targetSchemaName = dialectDatabaseMetaData.isSchemaAvailable() ? sourceSchemaName : null; + String targetSchemaName = dialectDatabaseMetaData.getSchemaOption().isSchemaAvailable() ? sourceSchemaName : null; DataNode dataNode = each.getDataNodes().get(0); PipelineDataSourceConfiguration sourceDataSourceConfig = jobConfig.getSources().get(dataNode.getDataSourceName()); CreateTableConfiguration createTableConfig = new CreateTableConfiguration(sourceDataSourceConfig, new QualifiedTable(sourceSchemaName, dataNode.getTableName()),