This is an automated email from the ASF dual-hosted git repository.
wuweijie 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 2be8804ebb4 Refactor DatabaseTypeRegistry to improve performance
(#27588)
2be8804ebb4 is described below
commit 2be8804ebb4b2f604044f5c14cb6ea49862aca20
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Jul 31 17:30:25 2023 +0800
Refactor DatabaseTypeRegistry to improve performance (#27588)
---
.../dal/show/EncryptShowCreateTableMergedResult.java | 6 +++---
.../generator/EncryptProjectionTokenGenerator.java | 3 +--
.../sharding/merge/dql/ShardingDQLResultMerger.java | 2 +-
.../data/ShardingStatisticsTableCollector.java | 3 ++-
.../generator/impl/ProjectionsTokenGenerator.java | 4 ++--
.../select/orderby/engine/OrderByContextEngine.java | 4 ++--
.../binder/context/segment/table/TablesContext.java | 4 ++--
.../segment/from/impl/SimpleTableSegmentBinder.java | 5 ++---
.../shardingsphere/infra/datanode/DataNode.java | 6 +++---
.../pool/creator/DataSourcePoolCreator.java | 6 +++---
.../database/schema/builder/SystemSchemaBuilder.java | 4 ++--
.../database/schema/util/SystemSchemaUtils.java | 4 ++--
.../data/loader/MetaDataLoaderConnection.java | 4 ++--
.../data/loader/type/ColumnMetaDataLoader.java | 4 ++--
.../data/loader/type/SchemaMetaDataLoader.java | 6 +++---
.../data/loader/type/TableMetaDataLoader.java | 4 ++--
.../metadata/database/datatype/DataTypeLoader.java | 5 ++---
.../database/core/type/DatabaseTypeRegistry.java | 20 +++++++++++++++++---
.../infra/util/spi/type/typed/TypedSPILoader.java | 9 +++++----
.../jdbc/adapter/AbstractStatementAdapter.java | 4 ++--
.../common/config/ImporterConfiguration.java | 4 ++--
.../loader/StandardPipelineTableMetaDataLoader.java | 4 ++--
.../common/sqlbuilder/PipelineSQLSegmentBuilder.java | 4 ++--
.../datasource/AbstractDataSourcePreparer.java | 4 ++--
.../data/pipeline/cdc/handler/CDCBackendHandler.java | 6 +++---
.../data/pipeline/cdc/util/CDCSchemaTableUtils.java | 7 ++++---
.../scenario/migration/api/impl/MigrationJobAPI.java | 13 +++++++------
.../decorator/SingleRuleConfigurationDecorator.java | 9 ++++-----
.../single/util/SingleTableLoadUtils.java | 8 ++++----
.../update/LoadSingleTableStatementUpdater.java | 7 +++----
.../mode/metadata/MetaDataContexts.java | 5 +++--
.../segment/dml/order/item/OrderByItemSegment.java | 6 +++---
.../handler/database/DropDatabaseBackendHandler.java | 8 ++++----
.../distsql/rql/rule/ShowLogicalTableExecutor.java | 4 ++--
.../rql/storage/unit/ShowStorageUnitExecutor.java | 4 ++--
.../transaction/TransactionBackendHandler.java | 7 +++----
.../pipeline/cases/PipelineContainerComposer.java | 5 ++---
.../test/e2e/data/pipeline/cases/cdc/CDCE2EIT.java | 4 ++--
.../test/e2e/env/DataSetEnvironmentManager.java | 4 ++--
39 files changed, 116 insertions(+), 104 deletions(-)
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
index 4366a6b0448..ee0ad8f7453 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
@@ -24,9 +24,9 @@ import org.apache.shardingsphere.encrypt.rule.EncryptTable;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
-import org.apache.shardingsphere.infra.merge.result.MergedResult;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
+import org.apache.shardingsphere.infra.merge.result.MergedResult;
import java.io.InputStream;
import java.io.Reader;
@@ -54,7 +54,7 @@ public abstract class EncryptShowCreateTableMergedResult
implements MergedResult
protected EncryptShowCreateTableMergedResult(final SQLStatementContext
sqlStatementContext, final EncryptRule encryptRule) {
ShardingSpherePreconditions.checkState(sqlStatementContext instanceof
TableAvailable && 1 == ((TableAvailable)
sqlStatementContext).getAllTables().size(),
() -> new UnsupportedEncryptSQLException("SHOW CREATE TABLE
FOR MULTI TABLE"));
- dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class,
sqlStatementContext.getDatabaseType());
+ dialectDatabaseMetaData = new
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDialectDatabaseMetaData();
tableName = ((TableAvailable)
sqlStatementContext).getAllTables().iterator().next().getTableName().getIdentifier().getValue();
this.encryptRule = encryptRule;
}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
index c7a8cdfb3ea..01b2e176ecc 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
@@ -32,7 +32,6 @@ import
org.apache.shardingsphere.infra.binder.context.segment.select.projection.
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.dml.SelectStatementContext;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
@@ -138,7 +137,7 @@ public final class EncryptProjectionTokenGenerator
implements CollectionSQLToken
}
int startIndex = segment.getOwner().isPresent() ?
segment.getOwner().get().getStartIndex() : segment.getStartIndex();
previousSQLTokens.removeIf(each -> each.getStartIndex() == startIndex);
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class,
selectStatementContext.getDatabaseType());
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(selectStatementContext.getDatabaseType()).getDialectDatabaseMetaData();
return new SubstitutableColumnNameToken(startIndex,
segment.getStopIndex(), projections,
dialectDatabaseMetaData.getQuoteCharacter());
}
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dql/ShardingDQLResultMerger.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dql/ShardingDQLResultMerger.java
index 267ee401c6e..9fbd36d2bb5 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dql/ShardingDQLResultMerger.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dql/ShardingDQLResultMerger.java
@@ -107,7 +107,7 @@ public final class ShardingDQLResultMerger implements
ResultMerger {
}
private void setGroupByForDistinctRow(final SelectStatementContext
selectStatementContext) {
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class,
selectStatementContext.getSqlStatement().getDatabaseType());
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(selectStatementContext.getSqlStatement().getDatabaseType()).getDialectDatabaseMetaData();
for (int index = 1; index <=
selectStatementContext.getProjectionsContext().getExpandProjections().size();
index++) {
OrderByItem orderByItem = new OrderByItem(new
IndexOrderByItemSegment(-1, -1, index, OrderDirection.ASC,
dialectDatabaseMetaData.getDefaultNullsOrderType()));
orderByItem.setIndex(index);
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/data/ShardingStatisticsTableCollector.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/data/ShardingStatisticsTableCollector.java
index dc520b20157..210c7b3b721 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/data/ShardingStatisticsTableCollector.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/data/ShardingStatisticsTableCollector.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.sharding.metadata.data;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.infra.datanode.DataNode;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
@@ -51,7 +52,7 @@ public final class ShardingStatisticsTableCollector
implements ShardingSphereSta
final Map<String,
ShardingSphereDatabase> shardingSphereDatabases) throws SQLException {
ShardingSphereTableData result = new
ShardingSphereTableData(SHARDING_TABLE_STATISTICS);
DatabaseType protocolType =
shardingSphereDatabases.values().iterator().next().getProtocolType();
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, protocolType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(protocolType).getDialectDatabaseMetaData();
if (dialectDatabaseMetaData.getDefaultSchema().isPresent()) {
collectFromDatabase(shardingSphereDatabases.get(databaseName),
result);
} else {
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ProjectionsTokenGenerator.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ProjectionsTokenGenerator.java
index b81c20cad10..acfe714c643 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ProjectionsTokenGenerator.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ProjectionsTokenGenerator.java
@@ -27,8 +27,8 @@ import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementCont
import
org.apache.shardingsphere.infra.binder.context.statement.dml.SelectStatementContext;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
import
org.apache.shardingsphere.infra.database.core.metadata.database.enums.NullsOrderType;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import
org.apache.shardingsphere.infra.rewrite.sql.token.generator.OptionalSQLTokenGenerator;
import
org.apache.shardingsphere.infra.rewrite.sql.token.generator.aware.RouteContextAware;
import org.apache.shardingsphere.infra.route.context.RouteContext;
@@ -140,7 +140,7 @@ public final class ProjectionsTokenGenerator implements
OptionalSQLTokenGenerato
}
private NullsOrderType generateNewNullsOrderType(final OrderDirection
orderDirection, final DatabaseType databaseType) {
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
return OrderDirection.ASC == orderDirection ?
dialectDatabaseMetaData.getDefaultNullsOrderType() :
dialectDatabaseMetaData.getDefaultNullsOrderType().getReversedOrderType();
}
}
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/select/orderby/engine/OrderByContextEngine.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/select/orderby/engine/OrderByContextEngine.java
index 32b2beda94e..5bfb1e9ba65 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/select/orderby/engine/OrderByContextEngine.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/select/orderby/engine/OrderByContextEngine.java
@@ -21,7 +21,7 @@ import
org.apache.shardingsphere.infra.binder.context.segment.select.groupby.Gro
import
org.apache.shardingsphere.infra.binder.context.segment.select.orderby.OrderByContext;
import
org.apache.shardingsphere.infra.binder.context.segment.select.orderby.OrderByItem;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.sql.parser.sql.common.enums.OrderDirection;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.ColumnProjectionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.ProjectionSegment;
@@ -65,7 +65,7 @@ public final class OrderByContextEngine {
if (groupByContext.getItems().isEmpty() &&
selectStatement.getProjections().isDistinctRow()) {
int index = 0;
List<OrderByItem> orderByItems = new LinkedList<>();
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class,
selectStatement.getDatabaseType());
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(selectStatement.getDatabaseType()).getDialectDatabaseMetaData();
for (ProjectionSegment projectionSegment :
selectStatement.getProjections().getProjections()) {
if (projectionSegment instanceof ColumnProjectionSegment) {
ColumnProjectionSegment columnProjectionSegment =
(ColumnProjectionSegment) projectionSegment;
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContext.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContext.java
index d9af9050f19..c899a39a9f2 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContext.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContext.java
@@ -25,8 +25,8 @@ import
org.apache.shardingsphere.infra.binder.context.segment.select.subquery.Su
import
org.apache.shardingsphere.infra.binder.context.segment.select.subquery.engine.SubqueryTableContextEngine;
import
org.apache.shardingsphere.infra.binder.context.statement.dml.SelectStatementContext;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OwnerSegment;
@@ -92,7 +92,7 @@ public final class TablesContext {
}
private Optional<String> findDatabaseName(final SimpleTableSegment
tableSegment, final DatabaseType databaseType) {
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
Optional<OwnerSegment> owner =
dialectDatabaseMetaData.getDefaultSchema().isPresent() ?
tableSegment.getOwner().flatMap(OwnerSegment::getOwner) :
tableSegment.getOwner();
return owner.map(optional -> optional.getIdentifier().getValue());
}
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinder.java
index 60abef42aef..e053eaa05f3 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinder.java
@@ -21,7 +21,6 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.infra.binder.segment.from.TableSegmentBinderContext;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import
org.apache.shardingsphere.infra.database.opengauss.type.OpenGaussDatabaseType;
@@ -84,7 +83,7 @@ public final class SimpleTableSegmentBinder {
}
private static IdentifierValue getDatabaseName(final SimpleTableSegment
tableSegment, final String defaultDatabaseName, final DatabaseType
databaseType) {
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
Optional<OwnerSegment> owner =
dialectDatabaseMetaData.getDefaultSchema().isPresent() ?
tableSegment.getOwner().flatMap(OwnerSegment::getOwner) :
tableSegment.getOwner();
return new IdentifierValue(owner.map(optional ->
optional.getIdentifier().getValue()).orElse(defaultDatabaseName));
}
@@ -106,7 +105,7 @@ public final class SimpleTableSegmentBinder {
Collection<ShardingSphereColumn> columnNames =
Optional.ofNullable(schema.getTable(segment.getTableName().getIdentifier().getValue())).map(ShardingSphereTable::getColumnValues).orElseGet(Collections::emptyList);
Collection<ProjectionSegment> projectionSegments = new LinkedList<>();
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
for (ShardingSphereColumn each : columnNames) {
ColumnSegment columnSegment = new ColumnSegment(0, 0, new
IdentifierValue(each.getName(), dialectDatabaseMetaData.getQuoteCharacter()));
columnSegment.setOwner(new OwnerSegment(0, 0,
segment.getAlias().orElse(segment.getTableName().getIdentifier())));
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 c0676ffa39c..42e31567c64 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
@@ -24,8 +24,8 @@ import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import
org.apache.shardingsphere.infra.exception.InvalidDataNodesFormatException;
import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
@@ -88,7 +88,7 @@ public final class DataNode {
}
private String getSchemaName(final String databaseName, final DatabaseType
databaseType, final boolean containsSchema, final List<String> segments) {
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
if (dialectDatabaseMetaData.getDefaultSchema().isPresent()) {
return containsSchema ? segments.get(1) : ASTERISK;
}
@@ -119,7 +119,7 @@ public final class DataNode {
* @return formatted data node
*/
public String format(final DatabaseType databaseType) {
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
return dialectDatabaseMetaData.getDefaultSchema().isPresent() ?
dataSourceName + DELIMITER + schemaName + DELIMITER + tableName :
dataSourceName + DELIMITER + tableName;
}
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/datasource/pool/creator/DataSourcePoolCreator.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/datasource/pool/creator/DataSourcePoolCreator.java
index 120b149c8cc..3b7ebfb2886 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/datasource/pool/creator/DataSourcePoolCreator.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/datasource/pool/creator/DataSourcePoolCreator.java
@@ -25,9 +25,9 @@ import
org.apache.shardingsphere.infra.database.core.connector.url.JdbcUrl;
import
org.apache.shardingsphere.infra.database.core.connector.url.StandardJdbcUrlParser;
import
org.apache.shardingsphere.infra.database.core.connector.url.UnrecognizedDatabaseURLException;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
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;
import
org.apache.shardingsphere.infra.datasource.pool.destroyer.DataSourcePoolDestroyer;
import
org.apache.shardingsphere.infra.datasource.pool.metadata.DataSourcePoolMetaData;
import
org.apache.shardingsphere.infra.datasource.pool.metadata.DataSourcePoolMetaDataReflection;
@@ -124,7 +124,7 @@ public final class DataSourcePoolCreator {
}
private static StorageUnit getStorageUnit(final StorageNodeProperties
storageNodeProperties, final String unitName, final String url) {
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class,
storageNodeProperties.getDatabaseType());
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(storageNodeProperties.getDatabaseType()).getDialectDatabaseMetaData();
return dialectDatabaseMetaData.isInstanceConnectionAvailable()
? new StorageUnit(unitName, storageNodeProperties.getName(),
storageNodeProperties.getDatabase(), url)
: new StorageUnit(unitName, storageNodeProperties.getName(),
url);
@@ -142,7 +142,7 @@ public final class DataSourcePoolCreator {
final String
url, final String username, final DatabaseType databaseType) {
try {
JdbcUrl jdbcUrl = new StandardJdbcUrlParser().parse(url);
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
String nodeName =
dialectDatabaseMetaData.isInstanceConnectionAvailable() ?
generateStorageNodeName(jdbcUrl.getHostname(), jdbcUrl.getPort(), username) :
dataSourceName;
return new StorageNodeProperties(nodeName, databaseType,
dataSourceProperties, jdbcUrl.getDatabase());
} catch (final UnrecognizedDatabaseURLException ex) {
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 5ebbd93d250..5edfc20132f 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
@@ -23,8 +23,8 @@ import
org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import
org.apache.shardingsphere.infra.config.props.temporary.TemporaryConfigurationPropertyKey;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
import
org.apache.shardingsphere.infra.database.core.metadata.database.system.SystemDatabase;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
import
org.apache.shardingsphere.infra.yaml.schema.pojo.YamlShardingSphereTable;
@@ -70,7 +70,7 @@ public final class SystemSchemaBuilder {
}
private static Collection<String> getSystemSchemas(final String
originalDatabaseName, final DatabaseType databaseType, final SystemDatabase
systemDatabase) {
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
String databaseName =
dialectDatabaseMetaData.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 e72fcf31411..fb0776042a5 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
@@ -21,8 +21,8 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
import
org.apache.shardingsphere.infra.database.core.metadata.database.system.SystemDatabase;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import
org.apache.shardingsphere.infra.database.opengauss.type.OpenGaussDatabaseType;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.ExpressionProjectionSegment;
@@ -54,7 +54,7 @@ public final class SystemSchemaUtils {
* @return whether SQL statement contains system schema or not
*/
public static boolean containsSystemSchema(final DatabaseType
databaseType, final Collection<String> schemaNames, final
ShardingSphereDatabase database) {
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
if (database.isComplete() &&
!dialectDatabaseMetaData.getDefaultSchema().isPresent()) {
return false;
}
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 6bddce4485e..6e89d358ba7 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
@@ -18,8 +18,8 @@
package org.apache.shardingsphere.infra.database.core.metadata.data.loader;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import java.sql.Array;
import java.sql.Blob;
@@ -51,7 +51,7 @@ public final class MetaDataLoaderConnection implements
Connection {
public MetaDataLoaderConnection(final DatabaseType databaseType, final
Connection connection) {
this.connection = connection;
- dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
}
@SuppressWarnings("ReturnOfNull")
diff --git
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/loader/type/ColumnMetaDataLoader.java
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/loader/type/ColumnMetaDataLoader.java
index 08710a63320..2c34f7a92ec 100644
---
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/loader/type/ColumnMetaDataLoader.java
+++
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/loader/type/ColumnMetaDataLoader.java
@@ -21,8 +21,8 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.infra.database.core.metadata.data.model.ColumnMetaData;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import java.sql.Connection;
import java.sql.ResultSet;
@@ -86,7 +86,7 @@ public final class ColumnMetaDataLoader {
}
private static String generateEmptyResultSQL(final String table, final
List<String> columnNames, final DatabaseType databaseType) {
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
String wrappedColumnNames = columnNames.stream().map(each ->
dialectDatabaseMetaData.getQuoteCharacter().wrap(each)).collect(Collectors.joining(","));
return String.format("SELECT %s FROM %s WHERE 1 != 1",
wrappedColumnNames, dialectDatabaseMetaData.getQuoteCharacter().wrap(table));
}
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 5f8644fe1bf..5d63dd24b9f 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
@@ -22,8 +22,8 @@ import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.infra.database.core.metadata.data.loader.MetaDataLoaderConnection;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
import
org.apache.shardingsphere.infra.database.core.metadata.database.system.SystemDatabase;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import javax.sql.DataSource;
import java.sql.Connection;
@@ -65,7 +65,7 @@ public final class SchemaMetaDataLoader {
public static Map<String, Collection<String>> loadSchemaTableNames(final
String databaseName, final DatabaseType databaseType, final DataSource
dataSource) throws SQLException {
try (MetaDataLoaderConnection connection = new
MetaDataLoaderConnection(databaseType, dataSource.getConnection())) {
Collection<String> schemaNames = loadSchemaNames(connection,
databaseType);
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
Map<String, Collection<String>> result = new
HashMap<>(schemaNames.size(), 1F);
for (String each : schemaNames) {
String schemaName =
dialectDatabaseMetaData.getDefaultSchema().isPresent() ? each : databaseName;
@@ -84,7 +84,7 @@ public final class SchemaMetaDataLoader {
* @throws SQLException SQL exception
*/
public static Collection<String> loadSchemaNames(final Connection
connection, final DatabaseType databaseType) throws SQLException {
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
if (!dialectDatabaseMetaData.getDefaultSchema().isPresent()) {
return Collections.singletonList(connection.getSchema());
}
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 5e8f15c7a9c..58a791f97b6 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
@@ -22,8 +22,8 @@ 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.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import javax.sql.DataSource;
import java.sql.Connection;
@@ -48,7 +48,7 @@ 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 =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
try (MetaDataLoaderConnection connection = new
MetaDataLoaderConnection(databaseType, dataSource.getConnection())) {
String formattedTableNamePattern =
dialectDatabaseMetaData.formatTableNamePattern(tableNamePattern);
return isTableExist(connection, formattedTableNamePattern)
diff --git
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/datatype/DataTypeLoader.java
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/datatype/DataTypeLoader.java
index 6a7d84be54f..343ad397a04 100644
---
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/datatype/DataTypeLoader.java
+++
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/datatype/DataTypeLoader.java
@@ -17,9 +17,8 @@
package
org.apache.shardingsphere.infra.database.core.metadata.database.datatype;
-import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
@@ -42,7 +41,7 @@ public final class DataTypeLoader {
*/
public Map<String, Integer> load(final DatabaseMetaData databaseMetaData,
final DatabaseType databaseType) throws SQLException {
Map<String, Integer> result = loadStandardDataTypes(databaseMetaData);
-
result.putAll(DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class,
databaseType).getExtraDataTypes());
+ result.putAll(new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData().getExtraDataTypes());
return result;
}
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 ef8c7730613..e00da56363d 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
@@ -17,22 +17,36 @@
package org.apache.shardingsphere.infra.database.core.type;
-import lombok.RequiredArgsConstructor;
+import lombok.Getter;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.util.spi.ShardingSphereServiceLoader;
import java.util.Collection;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
/**
* Database type registry.
*/
-@RequiredArgsConstructor
public final class DatabaseTypeRegistry {
+ private static final Map<DatabaseType, DialectDatabaseMetaData>
REGISTERED_META_DATA = new ConcurrentHashMap<>();
+
private final DatabaseType databaseType;
+ @Getter
+ private final DialectDatabaseMetaData dialectDatabaseMetaData;
+
+ public DatabaseTypeRegistry(final DatabaseType databaseType) {
+ this.databaseType = databaseType;
+ if (!REGISTERED_META_DATA.containsKey(databaseType)) {
+ REGISTERED_META_DATA.put(databaseType,
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType));
+ }
+ dialectDatabaseMetaData = REGISTERED_META_DATA.get(databaseType);
+ }
+
/**
* Get all branch database types.
*
@@ -50,6 +64,6 @@ public final class DatabaseTypeRegistry {
* @return default schema name
*/
public String getDefaultSchemaName(final String databaseName) {
- return
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class,
databaseType).getDefaultSchema().orElseGet(() -> null == databaseName ? null :
databaseName.toLowerCase());
+ return dialectDatabaseMetaData.getDefaultSchema().orElseGet(() -> null
== databaseName ? null : databaseName.toLowerCase());
}
}
diff --git
a/infra/spi/src/main/java/org/apache/shardingsphere/infra/util/spi/type/typed/TypedSPILoader.java
b/infra/spi/src/main/java/org/apache/shardingsphere/infra/util/spi/type/typed/TypedSPILoader.java
index 7fc6df89673..a2563894457 100644
---
a/infra/spi/src/main/java/org/apache/shardingsphere/infra/util/spi/type/typed/TypedSPILoader.java
+++
b/infra/spi/src/main/java/org/apache/shardingsphere/infra/util/spi/type/typed/TypedSPILoader.java
@@ -143,12 +143,13 @@ public final class TypedSPILoader {
}
private static boolean matchesType(final Object type, final TypedSPI
instance) {
- if (null == instance.getType()) {
+ Object instanceType = instance.getType();
+ if (null == instanceType) {
return false;
}
- if (instance.getType() instanceof String && type instanceof String) {
- return
instance.getType().toString().equalsIgnoreCase(type.toString()) ||
instance.getTypeAliases().contains(type);
+ if (instanceType instanceof String && type instanceof String) {
+ return instanceType.toString().equalsIgnoreCase(type.toString())
|| instance.getTypeAliases().contains(type);
}
- return instance.getType().equals(type) ||
instance.getTypeAliases().contains(type);
+ return instanceType.equals(type) ||
instance.getTypeAliases().contains(type);
}
}
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractStatementAdapter.java
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractStatementAdapter.java
index 78a5ed03d6d..aaed3ccf2ad 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractStatementAdapter.java
+++
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractStatementAdapter.java
@@ -25,8 +25,8 @@ import
org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConne
import org.apache.shardingsphere.driver.jdbc.core.statement.StatementManager;
import
org.apache.shardingsphere.driver.jdbc.unsupported.AbstractUnsupportedOperationStatement;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -75,7 +75,7 @@ public abstract class AbstractStatementAdapter extends
AbstractUnsupportedOperat
protected final void handleExceptionInTransaction(final
ShardingSphereConnection connection, final MetaDataContexts metaDataContexts) {
if
(connection.getDatabaseConnectionManager().getConnectionTransaction().isInTransaction())
{
DatabaseType databaseType =
metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType();
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
if (dialectDatabaseMetaData.getDefaultSchema().isPresent()) {
connection.getDatabaseConnectionManager().getConnectionTransaction().setRollbackOnly(true);
}
diff --git
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/config/ImporterConfiguration.java
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/config/ImporterConfiguration.java
index 88ca94fd447..b3b305afb62 100644
---
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/config/ImporterConfiguration.java
+++
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/config/ImporterConfiguration.java
@@ -25,7 +25,7 @@ import
org.apache.shardingsphere.data.pipeline.api.datasource.config.PipelineDat
import org.apache.shardingsphere.data.pipeline.api.metadata.LogicTableName;
import
org.apache.shardingsphere.data.pipeline.spi.ratelimit.JobRateLimitAlgorithm;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import java.util.Collection;
import java.util.Collections;
@@ -82,7 +82,7 @@ public final class ImporterConfiguration {
* @return schema name. nullable
*/
public String getSchemaName(final LogicTableName logicTableName) {
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class,
dataSourceConfig.getDatabaseType());
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(dataSourceConfig.getDatabaseType()).getDialectDatabaseMetaData();
return dialectDatabaseMetaData.isSchemaAvailable() ?
tableNameSchemaNameMapping.getSchemaName(logicTableName) : null;
}
}
diff --git
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/metadata/loader/StandardPipelineTableMetaDataLoader.java
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/metadata/loader/StandardPipelineTableMetaDataLoader.java
index 243a0d620fe..a15781ecf2c 100644
---
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/metadata/loader/StandardPipelineTableMetaDataLoader.java
+++
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/metadata/loader/StandardPipelineTableMetaDataLoader.java
@@ -27,7 +27,7 @@ import
org.apache.shardingsphere.data.pipeline.api.metadata.model.PipelineTableM
import
org.apache.shardingsphere.data.pipeline.common.datasource.PipelineDataSourceWrapper;
import
org.apache.shardingsphere.data.pipeline.core.exception.PipelineInternalException;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import java.sql.Connection;
import java.sql.ResultSet;
@@ -76,7 +76,7 @@ public final class StandardPipelineTableMetaDataLoader
implements PipelineTableM
private void loadTableMetaData(final String schemaName, final String
tableNamePattern) throws SQLException {
try (Connection connection = dataSource.getConnection()) {
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class,
dataSource.getDatabaseType());
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(dataSource.getDatabaseType()).getDialectDatabaseMetaData();
Map<TableName, PipelineTableMetaData> tableMetaDataMap =
loadTableMetaData0(connection, dialectDatabaseMetaData.isSchemaAvailable() ?
schemaName : null, tableNamePattern);
this.tableMetaDataMap.putAll(tableMetaDataMap);
}
diff --git
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/sqlbuilder/PipelineSQLSegmentBuilder.java
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/sqlbuilder/PipelineSQLSegmentBuilder.java
index 444cb6df58f..1dc46434d8c 100644
---
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/sqlbuilder/PipelineSQLSegmentBuilder.java
+++
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/common/sqlbuilder/PipelineSQLSegmentBuilder.java
@@ -19,8 +19,8 @@ package
org.apache.shardingsphere.data.pipeline.common.sqlbuilder;
import com.google.common.base.Strings;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
/**
* Pipeline SQL segment builder.
@@ -30,7 +30,7 @@ public final class PipelineSQLSegmentBuilder {
private final DialectDatabaseMetaData dialectDatabaseMetaData;
public PipelineSQLSegmentBuilder(final DatabaseType databaseType) {
- dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
}
/**
diff --git
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/datasource/AbstractDataSourcePreparer.java
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/datasource/AbstractDataSourcePreparer.java
index 226cfe44745..360e63d3221 100644
---
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/datasource/AbstractDataSourcePreparer.java
+++
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/datasource/AbstractDataSourcePreparer.java
@@ -26,8 +26,8 @@ import
org.apache.shardingsphere.data.pipeline.common.datasource.PipelineDataSou
import
org.apache.shardingsphere.data.pipeline.common.metadata.generator.PipelineDDLGenerator;
import
org.apache.shardingsphere.data.pipeline.common.sqlbuilder.PipelineCommonSQLBuilder;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.infra.parser.SQLParserEngine;
import javax.sql.DataSource;
@@ -52,7 +52,7 @@ public abstract class AbstractDataSourcePreparer implements
DataSourcePreparer {
@Override
public void prepareTargetSchemas(final PrepareTargetSchemasParameter
param) throws SQLException {
DatabaseType targetDatabaseType = param.getTargetDatabaseType();
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class,
targetDatabaseType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(targetDatabaseType).getDialectDatabaseMetaData();
if (!dialectDatabaseMetaData.isSchemaAvailable()) {
return;
}
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 7240705b8bc..2a3a39d82d5 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
@@ -48,11 +48,11 @@ import
org.apache.shardingsphere.data.pipeline.core.exception.job.PipelineJobNot
import
org.apache.shardingsphere.data.pipeline.core.exception.param.PipelineInvalidParameterException;
import org.apache.shardingsphere.data.pipeline.core.job.PipelineJobCenter;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import
org.apache.shardingsphere.infra.database.opengauss.type.OpenGaussDatabaseType;
import org.apache.shardingsphere.infra.datanode.DataNode;
-import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
+import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import java.util.Collection;
import java.util.HashSet;
@@ -96,7 +96,7 @@ public final class CDCBackendHandler {
Map<String, Set<String>> schemaTableNameMap;
Collection<String> tableNames;
Set<String> schemaTableNames = new HashSet<>();
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class,
database.getProtocolType());
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(database.getProtocolType()).getDialectDatabaseMetaData();
if (dialectDatabaseMetaData.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.
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 ee0d2a9c3ea..ef554a9e86a 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
@@ -21,12 +21,13 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.data.pipeline.cdc.protocol.request.StreamDataRequestBody.SchemaTable;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import
org.apache.shardingsphere.infra.database.core.metadata.database.system.DialectSystemDatabase;
+import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.infra.exception.SchemaNotFoundException;
+import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
import java.util.Collection;
import java.util.Collections;
@@ -92,7 +93,7 @@ public final class CDCSchemaTableUtils {
private static Map<String, Set<String>>
parseTableExpressionWithAllTable(final ShardingSphereDatabase database, final
SchemaTable each) {
Map<String, Set<String>> result = new HashMap<>();
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class,
database.getProtocolType());
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(database.getProtocolType()).getDialectDatabaseMetaData();
String schemaName = each.getSchema().isEmpty() ?
dialectDatabaseMetaData.getDefaultSchema().orElseThrow(() -> new
IllegalStateException("Default schema should exist.")) : each.getSchema();
ShardingSphereSchema schema = database.getSchema(schemaName);
ShardingSpherePreconditions.checkNotNull(schema, () -> new
SchemaNotFoundException(each.getSchema()));
diff --git
a/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/api/impl/MigrationJobAPI.java
b/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/api/impl/MigrationJobAPI.java
index 77a94f34dcd..123b99f00d1 100644
---
a/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/api/impl/MigrationJobAPI.java
+++
b/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/api/impl/MigrationJobAPI.java
@@ -77,16 +77,17 @@ import
org.apache.shardingsphere.data.pipeline.yaml.job.YamlMigrationJobConfigur
import
org.apache.shardingsphere.data.pipeline.yaml.job.YamlMigrationJobConfigurationSwapper;
import org.apache.shardingsphere.elasticjob.infra.pojo.JobConfigurationPOJO;
import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
+import
org.apache.shardingsphere.infra.database.core.connector.ConnectionProperties;
+import
org.apache.shardingsphere.infra.database.core.connector.ConnectionPropertiesParser;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
-import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeFactory;
-import
org.apache.shardingsphere.infra.database.core.connector.ConnectionProperties;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import
org.apache.shardingsphere.infra.database.core.connector.ConnectionPropertiesParser;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeFactory;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.infra.datanode.DataNode;
import org.apache.shardingsphere.infra.datasource.props.DataSourceProperties;
-import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
+import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.json.JsonUtils;
import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.infra.yaml.config.pojo.YamlRootConfiguration;
@@ -157,7 +158,7 @@ public final class MigrationJobAPI extends
AbstractInventoryIncrementalJobAPIImp
Map<String, Object> sourceDataSourceProps =
dataSourceConfigSwapper.swapToMap(metaDataDataSource.get(dataSourceName));
StandardPipelineDataSourceConfiguration sourceDataSourceConfig =
new StandardPipelineDataSourceConfiguration(sourceDataSourceProps);
configSources.put(dataSourceName,
buildYamlPipelineDataSourceConfiguration(sourceDataSourceConfig.getType(),
sourceDataSourceConfig.getParameter()));
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class,
sourceDataSourceConfig.getDatabaseType());
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(sourceDataSourceConfig.getDatabaseType()).getDialectDatabaseMetaData();
if (null == each.getSource().getSchemaName() &&
dialectDatabaseMetaData.isSchemaAvailable()) {
each.getSource().setSchemaName(PipelineSchemaUtils.getDefaultSchema(sourceDataSourceConfig));
}
@@ -296,7 +297,7 @@ public final class MigrationJobAPI extends
AbstractInventoryIncrementalJobAPIImp
Collection<CreateTableEntry> createTableEntries = new LinkedList<>();
for (JobDataNodeEntry each :
jobConfig.getTablesFirstDataNodes().getEntries()) {
String sourceSchemaName =
tableNameSchemaNameMapping.getSchemaName(each.getLogicTableName());
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class,
jobConfig.getTargetDatabaseType());
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(jobConfig.getTargetDatabaseType()).getDialectDatabaseMetaData();
String targetSchemaName =
dialectDatabaseMetaData.isSchemaAvailable() ? sourceSchemaName : null;
DataNode dataNode = each.getDataNodes().get(0);
PipelineDataSourceConfiguration sourceDataSourceConfig =
jobConfig.getSources().get(dataNode.getDataSourceName());
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 ca9e70c9eb5..1f83f79894d 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
@@ -18,14 +18,13 @@
package org.apache.shardingsphere.single.decorator;
import
org.apache.shardingsphere.infra.config.rule.decorator.RuleConfigurationDecorator;
-import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
-import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.database.DatabaseTypeEngine;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.infra.datanode.DataNode;
import org.apache.shardingsphere.infra.datasource.state.DataSourceStateManager;
-import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
+import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.single.api.config.SingleRuleConfiguration;
import org.apache.shardingsphere.single.api.constant.SingleTableConstants;
import org.apache.shardingsphere.single.datanode.SingleTableDataNodeLoader;
@@ -69,7 +68,7 @@ public final class SingleRuleConfigurationDecorator
implements RuleConfiguration
Map<String, Collection<DataNode>> actualDataNodes =
SingleTableDataNodeLoader.load(databaseName, databaseType,
aggregatedDataSources, excludedTables);
Collection<DataNode> configuredDataNodes =
SingleTableLoadUtils.convertToDataNodes(databaseName, databaseType,
splitTables);
checkRuleConfiguration(databaseName, aggregatedDataSources,
excludedTables, configuredDataNodes);
- boolean isSchemaSupportedDatabaseType =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class,
databaseType).getDefaultSchema().isPresent();
+ boolean isSchemaSupportedDatabaseType = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData().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 69fafa2f600..2cb48112642 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
@@ -21,8 +21,8 @@ import com.google.common.base.Splitter;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.infra.datanode.DataNode;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import
org.apache.shardingsphere.infra.rule.identifier.type.DataSourceContainedRule;
@@ -155,7 +155,7 @@ public final class SingleTableLoadUtils {
* @return node string for all tables
*/
public static String getAllTablesNodeStr(final DatabaseType databaseType) {
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
return dialectDatabaseMetaData.getDefaultSchema().isPresent() ?
SingleTableConstants.ALL_SCHEMA_TABLES : SingleTableConstants.ALL_TABLES;
}
@@ -168,7 +168,7 @@ public final class SingleTableLoadUtils {
* @return node string for all tables
*/
public static String getAllTablesNodeStrFromDataSource(final DatabaseType
databaseType, final String dataSourceName, final String schemaName) {
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
return dialectDatabaseMetaData.getDefaultSchema().isPresent()
? formatDataNode(dataSourceName, schemaName,
SingleTableConstants.ASTERISK)
: formatDataNode(dataSourceName,
SingleTableConstants.ASTERISK);
@@ -184,7 +184,7 @@ public final class SingleTableLoadUtils {
* @return data node string
*/
public static String getDataNodeString(final DatabaseType databaseType,
final String dataSourceName, final String schemaName, final String tableName) {
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
return dialectDatabaseMetaData.getDefaultSchema().isPresent() ?
formatDataNode(dataSourceName, schemaName, tableName) :
formatDataNode(dataSourceName, tableName);
}
diff --git
a/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/update/LoadSingleTableStatementUpdater.java
b/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/update/LoadSingleTableStatementUpdater.java
index 2c24de96119..ae015183828 100644
---
a/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/update/LoadSingleTableStatementUpdater.java
+++
b/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/update/LoadSingleTableStatementUpdater.java
@@ -17,18 +17,17 @@
package org.apache.shardingsphere.single.distsql.handler.update;
-import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.table.TableExistsException;
import
org.apache.shardingsphere.distsql.handler.exception.storageunit.MissingRequiredStorageUnitsException;
import
org.apache.shardingsphere.distsql.handler.update.RuleDefinitionCreateUpdater;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import
org.apache.shardingsphere.infra.exception.InvalidDataNodesFormatException;
+import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
+import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.table.TableExistsException;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import
org.apache.shardingsphere.infra.rule.identifier.type.DataSourceContainedRule;
-import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
import org.apache.shardingsphere.single.api.config.SingleRuleConfiguration;
import org.apache.shardingsphere.single.api.constant.SingleTableConstants;
import org.apache.shardingsphere.single.datanode.SingleTableDataNodeLoader;
@@ -59,7 +58,7 @@ public final class LoadSingleTableStatementUpdater implements
RuleDefinitionCrea
private void checkDuplicatedTables(final ShardingSphereDatabase database,
final LoadSingleTableStatement sqlStatement, final String defaultSchemaName) {
Collection<SingleTableSegment> tableSegments =
sqlStatement.getTables();
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class,
database.getProtocolType());
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(database.getProtocolType()).getDialectDatabaseMetaData();
boolean isSchemaSupportedDatabaseType =
dialectDatabaseMetaData.getDefaultSchema().isPresent();
ShardingSphereSchema schema = database.getSchema(defaultSchemaName);
for (SingleTableSegment each : tableSegments) {
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContexts.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContexts.java
index fde7acf424a..4e8cd9e98a0 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContexts.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContexts.java
@@ -19,7 +19,9 @@ package org.apache.shardingsphere.mode.metadata;
import lombok.Getter;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
+import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabaseData;
import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereSchemaData;
@@ -27,7 +29,6 @@ import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereStatist
import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
import
org.apache.shardingsphere.infra.metadata.statistics.builder.ShardingSphereStatisticsBuilder;
import org.apache.shardingsphere.infra.rule.identifier.type.ResourceHeldRule;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.metadata.persist.MetaDataBasedPersistService;
@@ -61,7 +62,7 @@ public final class MetaDataContexts implements AutoCloseable {
return new ShardingSphereStatistics();
}
// TODO can `protocolType instanceof SchemaSupportedDatabaseType ?
"PostgreSQL" : protocolType.getType()` replace to trunk database type?
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, protocolType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(protocolType).getDialectDatabaseMetaData();
Optional<ShardingSphereStatisticsBuilder> statisticsBuilder =
DatabaseTypedSPILoader.findService(ShardingSphereStatisticsBuilder.class,
dialectDatabaseMetaData.getDefaultSchema().isPresent()
? TypedSPILoader.getService(DatabaseType.class, "PostgreSQL")
: protocolType);
diff --git
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/order/item/OrderByItemSegment.java
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/order/item/OrderByItemSegment.java
index b3d08f2d227..b765951fbd2 100644
---
a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/order/item/OrderByItemSegment.java
+++
b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/segment/dml/order/item/OrderByItemSegment.java
@@ -20,9 +20,9 @@ package
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.order.item;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
-import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import
org.apache.shardingsphere.infra.database.core.metadata.database.enums.NullsOrderType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.sql.parser.sql.common.enums.OrderDirection;
import org.apache.shardingsphere.sql.parser.sql.common.segment.SQLSegment;
@@ -62,7 +62,7 @@ public abstract class OrderByItemSegment implements
SQLSegment {
if (null != nullsOrderType) {
return nullsOrderType;
}
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
return OrderDirection.ASC == orderDirection ?
dialectDatabaseMetaData.getDefaultNullsOrderType() :
dialectDatabaseMetaData.getDefaultNullsOrderType().getReversedOrderType();
}
}
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 34fc36b29ef..655af44a761 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
@@ -21,12 +21,12 @@ import com.google.common.base.Strings;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.authority.checker.AuthorityChecker;
import org.apache.shardingsphere.authority.rule.AuthorityRule;
+import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
+import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.DatabaseDropNotExistsException;
import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.UnknownDatabaseException;
-import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.metadata.user.Grantee;
-import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
@@ -70,7 +70,7 @@ public final class DropDatabaseBackendHandler implements
ProxyBackendHandler {
}
private void checkSupportedDropCurrentDatabase(final ConnectionSession
connectionSession) {
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class,
connectionSession.getProtocolType());
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(connectionSession.getProtocolType()).getDialectDatabaseMetaData();
ShardingSpherePreconditions.checkState(!dialectDatabaseMetaData.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/distsql/rql/rule/ShowLogicalTableExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowLogicalTableExecutor.java
index 2d8b29880f8..92929ebb578 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowLogicalTableExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowLogicalTableExecutor.java
@@ -20,7 +20,7 @@ package
org.apache.shardingsphere.proxy.backend.handler.distsql.rql.rule;
import org.apache.shardingsphere.distsql.handler.query.RQLExecutor;
import
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowLogicalTablesStatement;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.util.regular.RegularUtils;
@@ -38,7 +38,7 @@ public final class ShowLogicalTableExecutor implements
RQLExecutor<ShowLogicalTa
@Override
public Collection<LocalDataQueryResultRow> getRows(final
ShardingSphereDatabase database, final ShowLogicalTablesStatement sqlStatement)
{
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class,
database.getProtocolType());
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(database.getProtocolType()).getDialectDatabaseMetaData();
String schemaName =
dialectDatabaseMetaData.getDefaultSchema().orElse(database.getName());
if (null == database.getSchema(schemaName)) {
return Collections.emptyList();
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/storage/unit/ShowStorageUnitExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/storage/unit/ShowStorageUnitExecutor.java
index f97f91b7693..fe0cfb20f02 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/storage/unit/ShowStorageUnitExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/storage/unit/ShowStorageUnitExecutor.java
@@ -22,8 +22,8 @@ import
org.apache.shardingsphere.distsql.handler.query.RQLExecutor;
import
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowStorageUnitsStatement;
import
org.apache.shardingsphere.infra.database.core.connector.ConnectionProperties;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import
org.apache.shardingsphere.infra.datasource.ShardingSphereStorageDataSourceWrapper;
import org.apache.shardingsphere.infra.datasource.props.DataSourceProperties;
import
org.apache.shardingsphere.infra.datasource.props.DataSourcePropertiesCreator;
@@ -115,7 +115,7 @@ public final class ShowStorageUnitExecutor implements
RQLExecutor<ShowStorageUni
private DataSourceProperties getDataSourceProperties(final Map<String,
DataSourceProperties> dataSourcePropsMap, final String storageUnitName,
final DatabaseType
databaseType, final DataSource dataSource) {
DataSourceProperties result = getDataSourceProperties(dataSource);
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
if (dialectDatabaseMetaData.isInstanceConnectionAvailable() &&
dataSourcePropsMap.containsKey(storageUnitName)) {
DataSourceProperties unitDataSourceProperties =
dataSourcePropsMap.get(storageUnitName);
for (Entry<String, Object> entry :
unitDataSourceProperties.getPoolPropertySynonyms().getStandardProperties().entrySet())
{
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandler.java
index d73303b1300..666313ae8cf 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandler.java
@@ -17,11 +17,10 @@
package org.apache.shardingsphere.proxy.backend.handler.transaction;
-import
org.apache.shardingsphere.infra.exception.dialect.exception.transaction.InTransactionException;
-import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.infra.database.mysql.type.MySQLDatabaseType;
import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
+import
org.apache.shardingsphere.infra.exception.dialect.exception.transaction.InTransactionException;
import org.apache.shardingsphere.proxy.backend.connector.TransactionManager;
import
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.BackendTransactionManager;
import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
@@ -125,7 +124,7 @@ public final class TransactionBackendHandler implements
ProxyBackendHandler {
}
private boolean isSchemaSupportedDatabaseType() {
- return
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class,
connectionSession.getProtocolType()).getDefaultSchema().isPresent();
+ return new
DatabaseTypeRegistry(connectionSession.getProtocolType()).getDialectDatabaseMetaData().getDefaultSchema().isPresent();
}
private SQLStatement getSQLStatementByCommit() {
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 f74e7ba17ab..d730ccf823c 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
@@ -27,9 +27,8 @@ import
org.apache.shardingsphere.data.pipeline.common.datasource.PipelineDataSou
import org.apache.shardingsphere.data.pipeline.common.job.JobStatus;
import org.apache.shardingsphere.data.pipeline.common.job.type.JobType;
import
org.apache.shardingsphere.infra.database.core.connector.url.JdbcUrlAppender;
-import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.infra.database.mysql.type.MySQLDatabaseType;
import
org.apache.shardingsphere.infra.database.opengauss.type.OpenGaussDatabaseType;
import org.apache.shardingsphere.infra.database.oracle.type.OracleDatabaseType;
@@ -295,7 +294,7 @@ public final class PipelineContainerComposer implements
AutoCloseable {
* @throws SQLException SQL exception
*/
public void createSchema(final Connection connection, final int
sleepSeconds) throws SQLException {
- if (!DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class,
databaseType).isSchemaAvailable()) {
+ if (!new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData().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 893fbf7ccdb..374c7fa4476 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
@@ -37,8 +37,8 @@ import
org.apache.shardingsphere.data.pipeline.core.consistencycheck.SingleTable
import
org.apache.shardingsphere.data.pipeline.core.consistencycheck.algorithm.DataMatchDataConsistencyCalculateAlgorithm;
import
org.apache.shardingsphere.data.pipeline.core.consistencycheck.result.DataConsistencyCheckResult;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
import
org.apache.shardingsphere.sharding.algorithm.keygen.SnowflakeKeyGenerateAlgorithm;
import
org.apache.shardingsphere.test.e2e.data.pipeline.cases.PipelineContainerComposer;
@@ -123,7 +123,7 @@ class CDCE2EIT {
containerComposer.getUsername(),
containerComposer.getPassword())) {
initSchemaAndTable(containerComposer, connection, 0);
}
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class,
containerComposer.getDatabaseType());
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(containerComposer.getDatabaseType()).getDialectDatabaseMetaData();
startCDCClient(containerComposer, dialectDatabaseMetaData);
Awaitility.await().atMost(10L, TimeUnit.SECONDS).pollInterval(1L,
TimeUnit.SECONDS).until(() -> !containerComposer.queryForListWithLog("SHOW
STREAMING LIST").isEmpty());
String jobId = containerComposer.queryForListWithLog("SHOW
STREAMING LIST").get(0).get("id").toString();
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 96fc36ffd17..57b17831152 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
@@ -20,9 +20,9 @@ package org.apache.shardingsphere.test.e2e.env;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
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;
import
org.apache.shardingsphere.infra.database.opengauss.type.OpenGaussDatabaseType;
import
org.apache.shardingsphere.infra.database.postgresql.type.PostgreSQLDatabaseType;
import org.apache.shardingsphere.infra.datanode.DataNode;
@@ -219,7 +219,7 @@ public final class DataSetEnvironmentManager {
try (Connection connection = dataSource.getConnection()) {
for (String each : tableNames) {
DatabaseType databaseType =
DatabaseTypeFactory.get(connection.getMetaData().getURL());
- DialectDatabaseMetaData dialectDatabaseMetaData =
DatabaseTypedSPILoader.getService(DialectDatabaseMetaData.class, databaseType);
+ DialectDatabaseMetaData dialectDatabaseMetaData = new
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
try (PreparedStatement preparedStatement =
connection.prepareStatement(String.format("DELETE FROM %s",
dialectDatabaseMetaData.getQuoteCharacter().wrap(each)))) {
preparedStatement.execute();
}