You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2022/10/26 00:53:14 UTC
[shardingsphere] branch master updated: Remove databaseType in ShardingSphereResourceMetaData and modify unit test (#21749)
This is an automated email from the ASF dual-hosted git repository.
zhaojinchao 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 e5494392bd6 Remove databaseType in ShardingSphereResourceMetaData and modify unit test (#21749)
e5494392bd6 is described below
commit e5494392bd6afa41e54a46c8ca579403d71dfffd
Author: Zhengqiang Duan <du...@apache.org>
AuthorDate: Wed Oct 26 08:53:08 2022 +0800
Remove databaseType in ShardingSphereResourceMetaData and modify unit test (#21749)
---
.../engine/type/standard/AbstractSQLRouteTest.java | 2 +-
.../resource/ShardingSphereResourceMetaData.java | 21 ++++++++++++++-------
.../database/schema/util/IndexMetaDataUtil.java | 6 +++---
.../type/DropIndexStatementSchemaRefresher.java | 2 +-
.../jdbc/adapter/AbstractStatementAdapter.java | 2 +-
.../statement/ShardingSpherePreparedStatement.java | 10 +++++-----
.../core/statement/ShardingSphereStatement.java | 20 ++++++++++----------
.../driver/executor/AbstractBaseExecutorTest.java | 2 +-
.../jdbc/adapter/PreparedStatementAdapterTest.java | 5 ++++-
.../UnsupportedOperationPreparedStatementTest.java | 2 +-
.../driver/state/DriverStateContextTest.java | 2 +-
.../advanced/AdvancedSQLFederationExecutorTest.java | 2 +-
.../mode/manager/ContextManagerTest.java | 2 +-
.../ClusterContextManagerCoordinatorTest.java | 2 +-
.../backend/communication/ProxySQLExecutor.java | 2 +-
.../communication/ReactiveProxySQLExecutor.java | 2 +-
.../postgresql/executor/SelectTableExecutor.java | 2 +-
.../rdl/resource/AddResourceBackendHandler.java | 3 +--
.../rql/resource/DataSourceQueryResultSet.java | 2 +-
.../resource/UnusedDataSourceQueryResultSet.java | 2 +-
.../DatabaseCommunicationEngineFactoryTest.java | 2 +-
.../jdbc/JDBCDatabaseCommunicationEngineTest.java | 2 +-
.../jdbc/connection/JDBCBackendConnectionTest.java | 2 +-
.../jdbc/datasource/JDBCBackendDataSourceTest.java | 6 +++++-
.../proxy/backend/context/ProxyContextTest.java | 2 +-
.../admin/DatabaseAdminQueryBackendHandlerTest.java | 2 +-
.../DatabaseOperateBackendHandlerFactoryTest.java | 2 +-
.../executor/ShowCreateDatabaseExecutorTest.java | 2 +-
.../mysql/executor/ShowDatabasesExecutorTest.java | 2 +-
.../executor/ShowFunctionStatusExecutorTest.java | 2 +-
.../executor/ShowProcedureStatusExecutorTest.java | 2 +-
.../mysql/executor/ShowTablesExecutorTest.java | 2 +-
.../mysql/executor/UseDatabaseExecutorTest.java | 2 +-
.../impl/UnicastDatabaseBackendHandlerTest.java | 2 +-
.../distsql/DistSQLBackendHandlerFactoryTest.java | 4 ++--
.../protocol/FrontDatabaseProtocolTypeFactory.java | 3 ++-
.../FrontDatabaseProtocolTypeFactoryTest.java | 4 ++--
.../frontend/mysql/MySQLFrontendEngineTest.java | 2 +-
.../command/MySQLCommandExecutorFactoryTest.java | 2 +-
.../execute/MySQLComStmtExecuteExecutorTest.java | 2 +-
.../command/query/extended/JDBCPortal.java | 12 +++---------
.../command/query/extended/JDBCPortalTest.java | 2 +-
.../parse/PostgreSQLComParseExecutorTest.java | 9 ++++++---
43 files changed, 88 insertions(+), 77 deletions(-)
diff --git a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/standard/AbstractSQLRouteTest.java b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/standard/AbstractSQLRouteTest.java
index 6fc3d9089fa..d26fcf325a9 100644
--- a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/standard/AbstractSQLRouteTest.java
+++ b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/standard/AbstractSQLRouteTest.java
@@ -62,7 +62,7 @@ public abstract class AbstractSQLRouteTest extends AbstractRoutingEngineTest {
new CacheOption(2000, 65535L), new CacheOption(128, 1024L), false);
ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(Arrays.asList(shardingRule, singleTableRule));
ShardingSphereResourceMetaData resourceMetaData = mock(ShardingSphereResourceMetaData.class, RETURNS_DEEP_STUBS);
- when(resourceMetaData.getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(resourceMetaData.getStorageTypes()).thenReturn(Collections.singletonMap("ds_0", new MySQLDatabaseType()));
ShardingSphereDatabase database = new ShardingSphereDatabase(DefaultDatabase.LOGIC_NAME, DatabaseTypeFactory.getInstance("MySQL"), resourceMetaData, ruleMetaData, schemas);
Map<String, ShardingSphereDatabase> databases = Collections.singletonMap(DefaultDatabase.LOGIC_NAME, database);
SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(databases, parameters, sqlStatementParserEngine.parse(sql, false), DefaultDatabase.LOGIC_NAME);
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/ShardingSphereResourceMetaData.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/ShardingSphereResourceMetaData.java
index 0c1cdb2b95a..360693433cc 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/ShardingSphereResourceMetaData.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/ShardingSphereResourceMetaData.java
@@ -45,18 +45,14 @@ public final class ShardingSphereResourceMetaData {
private final Map<String, DatabaseType> storageTypes;
- // TODO remove databaseType when all scenarios have been replaced
- private final DatabaseType databaseType;
-
@Getter(AccessLevel.NONE)
private final Map<String, DataSourceMetaData> dataSourceMetaDataMap;
public ShardingSphereResourceMetaData(final String databaseName, final Map<String, DataSource> dataSources) {
this.dataSources = dataSources;
Map<String, DataSource> enabledDataSources = DataSourceStateManager.getInstance().getEnabledDataSourceMap(databaseName, dataSources);
- databaseType = getDatabaseType(enabledDataSources);
storageTypes = createStorageTypes(enabledDataSources);
- dataSourceMetaDataMap = createDataSourceMetaDataMap(dataSources);
+ dataSourceMetaDataMap = createDataSourceMetaDataMap(enabledDataSources, storageTypes);
}
private Map<String, DatabaseType> createStorageTypes(final Map<String, DataSource> dataSources) {
@@ -71,11 +67,12 @@ public final class ShardingSphereResourceMetaData {
return dataSources.isEmpty() ? null : DatabaseTypeEngine.getDatabaseType(dataSources.values());
}
- private Map<String, DataSourceMetaData> createDataSourceMetaDataMap(final Map<String, DataSource> dataSources) {
+ private Map<String, DataSourceMetaData> createDataSourceMetaDataMap(final Map<String, DataSource> dataSources, final Map<String, DatabaseType> storageTypes) {
Map<String, DataSourceMetaData> result = new LinkedHashMap<>(dataSources.size(), 1);
for (Entry<String, DataSource> entry : dataSources.entrySet()) {
Map<String, Object> standardProps = DataSourcePropertiesCreator.create(entry.getValue()).getConnectionPropertySynonyms().getStandardProperties();
- result.put(entry.getKey(), databaseType.getDataSourceMetaData(standardProps.get("url").toString(), standardProps.get("username").toString()));
+ DatabaseType storageType = storageTypes.get(entry.getKey());
+ result.put(entry.getKey(), storageType.getDataSourceMetaData(standardProps.get("url").toString(), standardProps.get("username").toString()));
}
return result;
}
@@ -109,6 +106,16 @@ public final class ShardingSphereResourceMetaData {
return dataSourceMetaDataMap.get(dataSourceName);
}
+ /**
+ * Get storage type.
+ *
+ * @param dataSourceName data source name
+ * @return storage type
+ */
+ public DatabaseType getStorageType(final String dataSourceName) {
+ return storageTypes.get(dataSourceName);
+ }
+
/**
* Get not existed resource name.
*
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/IndexMetaDataUtil.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/IndexMetaDataUtil.java
index dc5e3c94ebc..215bb4f2bc0 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/IndexMetaDataUtil.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/IndexMetaDataUtil.java
@@ -84,12 +84,12 @@ public class IndexMetaDataUtil {
*
* @param database database
* @param indexes indexes
- * @param type database type
+ * @param protocolType protocol type
* @return table names
*/
- public static Collection<QualifiedTable> getTableNames(final ShardingSphereDatabase database, final DatabaseType type, final Collection<IndexSegment> indexes) {
+ public static Collection<QualifiedTable> getTableNames(final ShardingSphereDatabase database, final DatabaseType protocolType, final Collection<IndexSegment> indexes) {
Collection<QualifiedTable> result = new LinkedList<>();
- String schemaName = DatabaseTypeEngine.getDefaultSchemaName(type, database.getName());
+ String schemaName = DatabaseTypeEngine.getDefaultSchemaName(protocolType, database.getName());
for (IndexSegment each : indexes) {
String actualSchemaName = each.getOwner().map(optional -> optional.getIdentifier().getValue()).orElse(schemaName);
findLogicTableNameFromMetaData(database.getSchema(actualSchemaName),
diff --git a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/DropIndexStatementSchemaRefresher.java b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/DropIndexStatementSchemaRefresher.java
index bcf9e2239dc..f8b1f48ed37 100644
--- a/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/DropIndexStatementSchemaRefresher.java
+++ b/infra/context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/DropIndexStatementSchemaRefresher.java
@@ -62,7 +62,7 @@ public final class DropIndexStatementSchemaRefresher implements MetaDataRefreshe
if (simpleTableSegment.isPresent()) {
return Optional.of(simpleTableSegment.get().getTableName().getIdentifier().getValue());
}
- Collection<QualifiedTable> tableNames = IndexMetaDataUtil.getTableNames(database, database.getResourceMetaData().getDatabaseType(), indexSegments);
+ Collection<QualifiedTable> tableNames = IndexMetaDataUtil.getTableNames(database, database.getProtocolType(), indexSegments);
return tableNames.isEmpty() ? Optional.empty() : Optional.of(tableNames.iterator().next().getTableName());
}
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 0e909e368fe..b81ddaece2b 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
@@ -195,7 +195,7 @@ public abstract class AbstractStatementAdapter extends AbstractUnsupportedOperat
protected final void handleExceptionInTransaction(final ShardingSphereConnection connection, final MetaDataContexts metaDataContexts) {
if (connection.getConnectionManager().getConnectionTransaction().isInTransaction()) {
- DatabaseType databaseType = metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType();
+ DatabaseType databaseType = metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType();
if (databaseType instanceof PostgreSQLDatabaseType || databaseType instanceof OpenGaussDatabaseType) {
connection.getConnectionManager().getConnectionTransaction().setRollbackOnly(true);
}
diff --git a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
index 9eb820c4095..f4a52ca6bb3 100644
--- a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
+++ b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
@@ -192,7 +192,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
parameterSets = new ArrayList<>();
SQLParserRule sqlParserRule = metaDataContexts.getMetaData().getGlobalRuleMetaData().getSingleRule(SQLParserRule.class);
ShardingSphereSQLParserEngine sqlParserEngine = sqlParserRule.getSQLParserEngine(
- DatabaseTypeEngine.getTrunkDatabaseTypeName(metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType()));
+ DatabaseTypeEngine.getTrunkDatabaseTypeName(metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType()));
sqlStatement = sqlParserEngine.parse(sql, true);
sqlStatementContext = SQLStatementContextFactory.newInstance(metaDataContexts.getMetaData().getDatabases(), sqlStatement, connection.getDatabaseName());
parameterMetaData = new ShardingSphereParameterMetaData(sqlStatement);
@@ -240,7 +240,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
} catch (final Exception ex) {
// CHECKSTYLE:ON
handleExceptionInTransaction(connection, metaDataContexts);
- throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType().getType());
+ throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType().getType());
} finally {
clearBatch();
}
@@ -343,7 +343,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
} catch (final Exception ex) {
// CHECKSTYLE:ON
handleExceptionInTransaction(connection, metaDataContexts);
- throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType().getType());
+ throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType().getType());
} finally {
clearBatch();
}
@@ -409,7 +409,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
} catch (final Exception ex) {
// CHECKSTYLE:ON
handleExceptionInTransaction(connection, metaDataContexts);
- throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType().getType());
+ throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType().getType());
} finally {
clearBatch();
}
@@ -598,7 +598,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
} catch (final Exception ex) {
// CHECKSTYLE:ON
handleExceptionInTransaction(connection, metaDataContexts);
- throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType().getType());
+ throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType().getType());
} finally {
clearBatch();
}
diff --git a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
index 167dca50ab0..5d4c692c862 100644
--- a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
+++ b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
@@ -177,7 +177,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
} catch (final Exception ex) {
// CHECKSTYLE:ON
handleExceptionInTransaction(connection, metaDataContexts);
- throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType().getType());
+ throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType().getType());
} finally {
currentResultSet = null;
}
@@ -258,7 +258,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
} catch (final Exception ex) {
// CHECKSTYLE:ON
handleExceptionInTransaction(connection, metaDataContexts);
- throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType().getType());
+ throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType().getType());
} finally {
currentResultSet = null;
}
@@ -289,7 +289,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
} catch (final Exception ex) {
// CHECKSTYLE:ON
handleExceptionInTransaction(connection, metaDataContexts);
- throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType().getType());
+ throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType().getType());
} finally {
currentResultSet = null;
}
@@ -318,7 +318,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
} catch (final Exception ex) {
// CHECKSTYLE:ON
handleExceptionInTransaction(connection, metaDataContexts);
- throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType().getType());
+ throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType().getType());
} finally {
currentResultSet = null;
}
@@ -347,7 +347,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
} catch (final Exception ex) {
// CHECKSTYLE:ON
handleExceptionInTransaction(connection, metaDataContexts);
- throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType().getType());
+ throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType().getType());
} finally {
currentResultSet = null;
}
@@ -389,7 +389,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
} catch (final SQLException ex) {
// CHECKSTYLE:ON
handleExceptionInTransaction(connection, metaDataContexts);
- throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType().getType());
+ throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType().getType());
}
}
@@ -404,7 +404,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
} catch (final SQLException ex) {
// CHECKSTYLE:ON
handleExceptionInTransaction(connection, metaDataContexts);
- throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType().getType());
+ throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType().getType());
}
}
@@ -417,7 +417,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
} catch (final SQLException ex) {
// CHECKSTYLE:ON
handleExceptionInTransaction(connection, metaDataContexts);
- throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType().getType());
+ throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType().getType());
}
}
@@ -430,7 +430,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
} catch (final SQLException ex) {
// CHECKSTYLE:ON
handleExceptionInTransaction(connection, metaDataContexts);
- throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType().getType());
+ throw SQLExceptionTransformEngine.toSQLException(ex, metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType().getType());
}
}
@@ -511,7 +511,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
private QueryContext createQueryContext(final String sql) {
SQLParserRule sqlParserRule = metaDataContexts.getMetaData().getGlobalRuleMetaData().getSingleRule(SQLParserRule.class);
SQLStatement sqlStatement = sqlParserRule.getSQLParserEngine(
- DatabaseTypeEngine.getTrunkDatabaseTypeName(metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType())).parse(sql, false);
+ DatabaseTypeEngine.getTrunkDatabaseTypeName(metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType())).parse(sql, false);
SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(metaDataContexts.getMetaData().getDatabases(), sqlStatement, connection.getDatabaseName());
return new QueryContext(sqlStatementContext, sql, Collections.emptyList());
}
diff --git a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/executor/AbstractBaseExecutorTest.java b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/executor/AbstractBaseExecutorTest.java
index ef30090c02a..e329226a019 100644
--- a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/executor/AbstractBaseExecutorTest.java
+++ b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/executor/AbstractBaseExecutorTest.java
@@ -90,7 +90,7 @@ public abstract class AbstractBaseExecutorTest {
TransactionRule transactionRule = mockTransactionRule();
when(globalRuleMetaData.getSingleRule(TransactionRule.class)).thenReturn(transactionRule);
when(globalRuleMetaData.getSingleRule(TrafficRule.class)).thenReturn(new TrafficRule(new DefaultTrafficRuleConfigurationBuilder().build()));
- when(result.getMetaData().getDatabase(DefaultDatabase.LOGIC_NAME).getResourceMetaData().getDatabaseType()).thenReturn(DatabaseTypeFactory.getInstance("H2"));
+ when(result.getMetaData().getDatabase(DefaultDatabase.LOGIC_NAME).getResourceMetaData().getStorageTypes()).thenReturn(Collections.singletonMap("ds_0", DatabaseTypeFactory.getInstance("H2")));
ShardingRule shardingRule = mockShardingRule();
when(result.getMetaData().getDatabase(DefaultDatabase.LOGIC_NAME).getRuleMetaData().getRules()).thenReturn(Collections.singleton(shardingRule));
return result;
diff --git a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/PreparedStatementAdapterTest.java b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/PreparedStatementAdapterTest.java
index 80a3d020081..810270314e3 100644
--- a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/PreparedStatementAdapterTest.java
+++ b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/PreparedStatementAdapterTest.java
@@ -46,6 +46,7 @@ import java.sql.Time;
import java.sql.Timestamp;
import java.sql.Types;
import java.util.Calendar;
+import java.util.Collections;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -71,7 +72,9 @@ public final class PreparedStatementAdapterTest {
ShardingSphereRuleMetaData globalRuleMetaData = mock(ShardingSphereRuleMetaData.class);
when(connection.getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData()).thenReturn(globalRuleMetaData);
when(globalRuleMetaData.getSingleRule(SQLParserRule.class)).thenReturn(new SQLParserRule(new DefaultSQLParserRuleConfigurationBuilder().build()));
- when(connection.getContextManager().getMetaDataContexts().getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(connection.getContextManager().getMetaDataContexts().getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType()).thenReturn(new MySQLDatabaseType());
+ when(connection.getContextManager().getMetaDataContexts().getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getStorageTypes())
+ .thenReturn(Collections.singletonMap("ds_0", new MySQLDatabaseType()));
when(connection.getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getSingleRule(SQLParserRule.class)).thenReturn(sqlParserRule);
when(connection.getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getSingleRule(TrafficRule.class)).thenReturn(trafficRule);
when(connection.getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getSingleRule(SQLFederationRule.class)).thenReturn(sqlFederationRule);
diff --git a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/unsupported/UnsupportedOperationPreparedStatementTest.java b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/unsupported/UnsupportedOperationPreparedStatementTest.java
index 570d572aeb4..fa6614ece33 100644
--- a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/unsupported/UnsupportedOperationPreparedStatementTest.java
+++ b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/unsupported/UnsupportedOperationPreparedStatementTest.java
@@ -56,7 +56,7 @@ public final class UnsupportedOperationPreparedStatementTest {
when(connection.getDatabaseName()).thenReturn(DefaultDatabase.LOGIC_NAME);
ShardingSphereRuleMetaData globalRuleMetaData = mock(ShardingSphereRuleMetaData.class);
when(connection.getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData()).thenReturn(globalRuleMetaData);
- when(connection.getContextManager().getMetaDataContexts().getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(connection.getContextManager().getMetaDataContexts().getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType()).thenReturn(new MySQLDatabaseType());
when(globalRuleMetaData.getSingleRule(SQLParserRule.class)).thenReturn(sqlParserRule);
when(globalRuleMetaData.getSingleRule(TrafficRule.class)).thenReturn(trafficRule);
when(globalRuleMetaData.getSingleRule(SQLFederationRule.class)).thenReturn(sqlFederationRule);
diff --git a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/state/DriverStateContextTest.java b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/state/DriverStateContextTest.java
index 71b4d7b78e2..7fddadbe748 100644
--- a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/state/DriverStateContextTest.java
+++ b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/state/DriverStateContextTest.java
@@ -71,7 +71,7 @@ public final class DriverStateContextTest {
private Map<String, ShardingSphereDatabase> mockDatabases() {
Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>();
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, Answers.RETURNS_DEEP_STUBS);
- when(database.getResourceMetaData().getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(database.getProtocolType()).thenReturn(new MySQLDatabaseType());
result.put(DefaultDatabase.LOGIC_NAME, database);
return result;
}
diff --git a/kernel/sql-federation/executor/advanced/src/test/java/org/apache/shardingsphere/sqlfederation/advanced/AdvancedSQLFederationExecutorTest.java b/kernel/sql-federation/executor/advanced/src/test/java/org/apache/shardingsphere/sqlfederation/advanced/AdvancedSQLFederationExecutorTest.java
index d80013f3e8b..c5646672d8b 100644
--- a/kernel/sql-federation/executor/advanced/src/test/java/org/apache/shardingsphere/sqlfederation/advanced/AdvancedSQLFederationExecutorTest.java
+++ b/kernel/sql-federation/executor/advanced/src/test/java/org/apache/shardingsphere/sqlfederation/advanced/AdvancedSQLFederationExecutorTest.java
@@ -72,7 +72,7 @@ public final class AdvancedSQLFederationExecutorTest {
private ShardingSphereResourceMetaData mockResourceMetaData() {
ShardingSphereResourceMetaData result = mock(ShardingSphereResourceMetaData.class);
- when(result.getDatabaseType()).thenReturn(new H2DatabaseType());
+ when(result.getStorageTypes()).thenReturn(Collections.singletonMap("ds_0", new H2DatabaseType()));
return result;
}
diff --git a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
index 8d635c2aee0..587ec2545fb 100644
--- a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
+++ b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
@@ -91,7 +91,7 @@ public final class ContextManagerTest {
private ShardingSphereDatabase mockDatabase() {
ShardingSphereDatabase result = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
when(result.getProtocolType()).thenReturn(new MySQLDatabaseType());
- when(result.getResourceMetaData().getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(result.getResourceMetaData().getStorageTypes()).thenReturn(Collections.singletonMap("ds_0", new MySQLDatabaseType()));
MutableDataNodeRule mutableDataNodeRule = mock(MutableDataNodeRule.class, RETURNS_DEEP_STUBS);
when(mutableDataNodeRule.findSingleTableDataNode("foo_schema", "foo_tbl")).thenReturn(Optional.of(mock(DataNode.class)));
when(result.getRuleMetaData()).thenReturn(new ShardingSphereRuleMetaData(Collections.singleton(mutableDataNodeRule)));
diff --git a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ClusterContextManagerCoordinatorTest.java b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ClusterContextManagerCoordinatorTest.java
index 1fd5f6fa277..9771c988729 100644
--- a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ClusterContextManagerCoordinatorTest.java
+++ b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ClusterContextManagerCoordinatorTest.java
@@ -148,7 +148,7 @@ public final class ClusterContextManagerCoordinatorTest {
private Map<String, ShardingSphereDatabase> createDatabases() {
when(database.getName()).thenReturn("db");
when(database.getResourceMetaData().getDataSources()).thenReturn(new LinkedHashMap<>());
- when(database.getResourceMetaData().getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(database.getResourceMetaData().getStorageTypes()).thenReturn(Collections.singletonMap("ds_0", new MySQLDatabaseType()));
when(database.getSchemas()).thenReturn(Collections.singletonMap("foo_schema", new ShardingSphereSchema()));
when(database.getProtocolType()).thenReturn(new MySQLDatabaseType());
when(database.getSchema("foo_schema")).thenReturn(mock(ShardingSphereSchema.class));
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ProxySQLExecutor.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ProxySQLExecutor.java
index ee7963516e3..8754a675ab9 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ProxySQLExecutor.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ProxySQLExecutor.java
@@ -201,7 +201,7 @@ public final class ProxySQLExecutor {
}
private List<ExecuteResult> getSaneExecuteResults(final ExecutionContext executionContext, final SQLException originalException) throws SQLException {
- DatabaseType databaseType = ProxyContext.getInstance().getDatabase(backendConnection.getConnectionSession().getDatabaseName()).getResourceMetaData().getDatabaseType();
+ DatabaseType databaseType = ProxyContext.getInstance().getDatabase(backendConnection.getConnectionSession().getDatabaseName()).getProtocolType();
Optional<ExecuteResult> executeResult = SaneQueryResultEngineFactory.getInstance(databaseType)
.getSaneQueryResult(executionContext.getSqlStatementContext().getSqlStatement(), originalException);
if (executeResult.isPresent()) {
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ReactiveProxySQLExecutor.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ReactiveProxySQLExecutor.java
index b7af3a1268d..c4ed1f15924 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ReactiveProxySQLExecutor.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/ReactiveProxySQLExecutor.java
@@ -152,7 +152,7 @@ public final class ReactiveProxySQLExecutor {
}
private List<ExecuteResult> getSaneExecuteResults(final ExecutionContext executionContext, final SQLException originalException) throws SQLException {
- DatabaseType databaseType = ProxyContext.getInstance().getDatabase(backendConnection.getConnectionSession().getDatabaseName()).getResourceMetaData().getDatabaseType();
+ DatabaseType databaseType = ProxyContext.getInstance().getDatabase(backendConnection.getConnectionSession().getDatabaseName()).getProtocolType();
Optional<ExecuteResult> executeResult = SaneQueryResultEngineFactory.getInstance(databaseType)
.getSaneQueryResult(executionContext.getSqlStatementContext().getSqlStatement(), originalException);
if (executeResult.isPresent()) {
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/postgresql/executor/SelectTableExecutor.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/postgresql/executor/SelectTableExecutor.java
index 1a86017165a..fa710900510 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/postgresql/executor/SelectTableExecutor.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/postgresql/executor/SelectTableExecutor.java
@@ -55,7 +55,7 @@ public final class SelectTableExecutor extends DefaultDatabaseMetadataExecutor {
@Override
protected void initDatabaseData(final String databaseName) {
ShardingSphereDatabase database = ProxyContext.getInstance().getDatabase(databaseName);
- String schemaName = DatabaseTypeEngine.getDefaultSchemaName(database.getResourceMetaData().getDatabaseType(), databaseName);
+ String schemaName = DatabaseTypeEngine.getDefaultSchemaName(database.getProtocolType(), databaseName);
tableNames = new ArrayList<>(database.getSchema(schemaName).getAllTableNames());
}
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandler.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandler.java
index d8493d2f76e..44519281f9e 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandler.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandler.java
@@ -61,8 +61,7 @@ public final class AddResourceBackendHandler extends DatabaseRequiredBackendHand
public ResponseHeader execute(final String databaseName, final RegisterStorageUnitStatement sqlStatement) {
checkSQLStatement(databaseName, sqlStatement);
Map<String, DataSourceProperties> dataSourcePropsMap = ResourceSegmentsConverter.convert(databaseType, sqlStatement.getDataSources());
- DatabaseType storeType = ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabase(databaseName).getResourceMetaData().getDatabaseType();
- validator.validate(dataSourcePropsMap, storeType);
+ validator.validate(dataSourcePropsMap, databaseType);
try {
ProxyContext.getInstance().getContextManager().addResources(databaseName, dataSourcePropsMap);
} catch (final SQLException | ShardingSphereServerException ex) {
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/resource/DataSourceQueryResultSet.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/resource/DataSourceQueryResultSet.java
index 65007bc3942..f21847bddfb 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/resource/DataSourceQueryResultSet.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/resource/DataSourceQueryResultSet.java
@@ -139,7 +139,7 @@ public final class DataSourceQueryResultSet implements DatabaseDistSQLResultSet
DataSourceMetaData metaData = resourceMetaData.getDataSourceMetaData(dataSourceName);
Collection<Object> result = new LinkedList<>();
result.add(dataSourceName);
- result.add(resourceMetaData.getDatabaseType().getType());
+ result.add(resourceMetaData.getStorageType(dataSourceName).getType());
result.add(metaData.getHostname());
result.add(metaData.getPort());
result.add(metaData.getCatalog());
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/resource/UnusedDataSourceQueryResultSet.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/resource/UnusedDataSourceQueryResultSet.java
index f7a3774795d..f7077dfdc5a 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/resource/UnusedDataSourceQueryResultSet.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/resource/UnusedDataSourceQueryResultSet.java
@@ -131,7 +131,7 @@ public final class UnusedDataSourceQueryResultSet implements DatabaseDistSQLResu
DataSourceMetaData metaData = resourceMetaData.getDataSourceMetaData(dataSourceName);
Collection<Object> result = new LinkedList<>();
result.add(dataSourceName);
- result.add(resourceMetaData.getDatabaseType().getType());
+ result.add(resourceMetaData.getStorageType(dataSourceName).getType());
result.add(metaData.getHostname());
result.add(metaData.getPort());
result.add(metaData.getCatalog());
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngineFactoryTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngineFactoryTest.java
index cc12dfba8a3..4626e5bbeaf 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngineFactoryTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngineFactoryTest.java
@@ -59,7 +59,7 @@ public final class DatabaseCommunicationEngineFactoryTest extends ProxyContextRe
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
when(database.containsDataSource()).thenReturn(true);
when(database.isComplete()).thenReturn(true);
- when(database.getResourceMetaData().getDatabaseType()).thenReturn(new H2DatabaseType());
+ when(database.getProtocolType()).thenReturn(new H2DatabaseType());
when(database.getRuleMetaData().getRules()).thenReturn(Collections.emptyList());
Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>(1, 1);
result.put("db", database);
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngineTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngineTest.java
index 164e0bccf0a..01931d0bed7 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngineTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngineTest.java
@@ -125,7 +125,7 @@ public final class JDBCDatabaseCommunicationEngineTest extends ProxyContextResto
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
when(database.containsDataSource()).thenReturn(true);
when(database.isComplete()).thenReturn(true);
- when(database.getResourceMetaData().getDatabaseType()).thenReturn(new H2DatabaseType());
+ when(database.getResourceMetaData().getStorageTypes()).thenReturn(Collections.singletonMap("ds_0", new H2DatabaseType()));
when(database.getProtocolType()).thenReturn(new H2DatabaseType());
when(database.getRuleMetaData().getRules()).thenReturn(Collections.emptyList());
Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>(1, 1);
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/JDBCBackendConnectionTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/JDBCBackendConnectionTest.java
index 4bf24ecf000..328fcc18482 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/JDBCBackendConnectionTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/JDBCBackendConnectionTest.java
@@ -120,7 +120,7 @@ public final class JDBCBackendConnectionTest extends ProxyContextRestorer {
for (int i = 0; i < 10; i++) {
String name = String.format(SCHEMA_PATTERN, i);
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
- when(database.getResourceMetaData().getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(database.getProtocolType()).thenReturn(new MySQLDatabaseType());
result.put(name, database);
}
return result;
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSourceTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSourceTest.java
index c0c8f7c116e..7d6a90645a2 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSourceTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSourceTest.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.proxy.backend.communication.jdbc.datasource;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.database.type.dialect.H2DatabaseType;
import org.apache.shardingsphere.infra.exception.OverallConnectionNotEnoughException;
import org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
@@ -76,7 +77,10 @@ public final class JDBCBackendDataSourceTest extends ProxyContextRestorer {
private Map<String, ShardingSphereDatabase> createDatabases() {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
when(database.getName()).thenReturn("schema");
- when(database.getResourceMetaData().getDatabaseType()).thenReturn(new H2DatabaseType());
+ Map<String, DatabaseType> storageTypes = new LinkedHashMap<>(2, 1);
+ storageTypes.put("ds_0", new H2DatabaseType());
+ storageTypes.put("ds_1", new H2DatabaseType());
+ when(database.getResourceMetaData().getStorageTypes()).thenReturn(storageTypes);
when(database.getResourceMetaData().getDataSources()).thenReturn(mockDataSources(2));
Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>(1, 1);
result.put("schema", database);
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
index d47c91619b1..8f97ec03246 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
@@ -124,7 +124,7 @@ public final class ProxyContextTest extends ProxyContextRestorer {
private Map<String, ShardingSphereDatabase> mockDatabases() {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
- when(database.getResourceMetaData().getDatabaseType()).thenReturn(new H2DatabaseType());
+ when(database.getProtocolType()).thenReturn(new H2DatabaseType());
Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>(1, 1);
result.put("db", database);
return result;
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandlerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandlerTest.java
index fe623bf1ae1..d91ddcb2d50 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandlerTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandlerTest.java
@@ -73,7 +73,7 @@ public final class DatabaseAdminQueryBackendHandlerTest extends ProxyContextRest
private Map<String, ShardingSphereDatabase> getDatabases() {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
when(database.getName()).thenReturn("db");
- when(database.getResourceMetaData().getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(database.getProtocolType()).thenReturn(new MySQLDatabaseType());
when(database.getRuleMetaData().getRules()).thenReturn(Collections.emptyList());
Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>(1, 1);
result.put("db", database);
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseOperateBackendHandlerFactoryTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseOperateBackendHandlerFactoryTest.java
index c26f5574fd9..67338b9311e 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseOperateBackendHandlerFactoryTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseOperateBackendHandlerFactoryTest.java
@@ -135,7 +135,7 @@ public final class DatabaseOperateBackendHandlerFactoryTest extends ProxyContext
private Map<String, ShardingSphereDatabase> getDatabases() {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
- when(database.getResourceMetaData().getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(database.getProtocolType()).thenReturn(new MySQLDatabaseType());
when(database.getRuleMetaData().getRules()).thenReturn(Collections.emptyList());
Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>(1, 1);
result.put("db", database);
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowCreateDatabaseExecutorTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowCreateDatabaseExecutorTest.java
index dbce8023feb..fc4b6f9d601 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowCreateDatabaseExecutorTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowCreateDatabaseExecutorTest.java
@@ -62,7 +62,7 @@ public final class ShowCreateDatabaseExecutorTest extends ProxyContextRestorer {
Map<String, ShardingSphereDatabase> result = new HashMap<>(10, 1);
for (int i = 0; i < 10; i++) {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
- when(database.getResourceMetaData().getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(database.getProtocolType()).thenReturn(new MySQLDatabaseType());
result.put(String.format(DATABASE_PATTERN, i), database);
}
return result;
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowDatabasesExecutorTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowDatabasesExecutorTest.java
index 50ace8347fe..411dd64d857 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowDatabasesExecutorTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowDatabasesExecutorTest.java
@@ -69,7 +69,7 @@ public final class ShowDatabasesExecutorTest extends ProxyContextRestorer {
Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>(10, 1);
for (int i = 0; i < 10; i++) {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
- when(database.getResourceMetaData().getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(database.getProtocolType()).thenReturn(new MySQLDatabaseType());
when(database.getRuleMetaData().getRules()).thenReturn(Collections.emptyList());
when(database.getName()).thenReturn(String.format(DATABASE_PATTERN, i));
result.put(String.format(DATABASE_PATTERN, i), database);
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowFunctionStatusExecutorTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowFunctionStatusExecutorTest.java
index 1820927bcf9..00e8b1e477a 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowFunctionStatusExecutorTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowFunctionStatusExecutorTest.java
@@ -66,7 +66,7 @@ public final class ShowFunctionStatusExecutorTest extends ProxyContextRestorer {
for (int i = 0; i < 10; i++) {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
when(database.isComplete()).thenReturn(false);
- when(database.getResourceMetaData().getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(database.getProtocolType()).thenReturn(new MySQLDatabaseType());
result.put(String.format(DATABASE_PATTERN, i), database);
}
return result;
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowProcedureStatusExecutorTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowProcedureStatusExecutorTest.java
index d1a0261828a..28dd7acf2e6 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowProcedureStatusExecutorTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowProcedureStatusExecutorTest.java
@@ -63,7 +63,7 @@ public final class ShowProcedureStatusExecutorTest extends ProxyContextRestorer
for (int i = 0; i < 10; i++) {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
when(database.isComplete()).thenReturn(false);
- when(database.getResourceMetaData().getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(database.getProtocolType()).thenReturn(new MySQLDatabaseType());
result.put(String.format(DATABASE_PATTERN, i), database);
}
return result;
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowTablesExecutorTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowTablesExecutorTest.java
index a1f72253960..450846eccc1 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowTablesExecutorTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowTablesExecutorTest.java
@@ -81,7 +81,7 @@ public final class ShowTablesExecutorTest extends ProxyContextRestorer {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
when(database.getSchema(String.format(DATABASE_PATTERN, 0))).thenReturn(schema);
when(database.isComplete()).thenReturn(true);
- when(database.getResourceMetaData().getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(database.getProtocolType()).thenReturn(new MySQLDatabaseType());
Map<String, ShardingSphereDatabase> result = new HashMap<>(2, 1);
result.put(String.format(DATABASE_PATTERN, 0), database);
ShardingSphereDatabase uncompletedDatabase = mock(ShardingSphereDatabase.class);
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/UseDatabaseExecutorTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/UseDatabaseExecutorTest.java
index f550f42573f..98971fb208d 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/UseDatabaseExecutorTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/UseDatabaseExecutorTest.java
@@ -68,7 +68,7 @@ public final class UseDatabaseExecutorTest extends ProxyContextRestorer {
Map<String, ShardingSphereDatabase> result = new HashMap<>(10, 1);
for (int i = 0; i < 10; i++) {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
- when(database.getResourceMetaData().getDatabaseType()).thenReturn(new H2DatabaseType());
+ when(database.getProtocolType()).thenReturn(new H2DatabaseType());
when(database.getRuleMetaData().getRules()).thenReturn(new LinkedList<>());
result.put(String.format(DATABASE_PATTERN, i), database);
}
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandlerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandlerTest.java
index c156e21588e..75826f154b4 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandlerTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandlerTest.java
@@ -97,7 +97,7 @@ public final class UnicastDatabaseBackendHandlerTest extends ProxyContextRestore
for (int i = 0; i < 10; i++) {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
when(database.containsDataSource()).thenReturn(true);
- when(database.getResourceMetaData().getDatabaseType()).thenReturn(new H2DatabaseType());
+ when(database.getProtocolType()).thenReturn(new H2DatabaseType());
result.put(String.format(DATABASE_PATTERN, i), database);
}
return result;
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
index 8e9b5baabd6..59a7ad98312 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
@@ -91,7 +91,7 @@ public final class DistSQLBackendHandlerFactoryTest extends ProxyContextRestorer
private Map<String, ShardingSphereDatabase> getDatabases() {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
- when(database.getResourceMetaData().getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(database.getProtocolType()).thenReturn(new MySQLDatabaseType());
Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>(1, 1);
result.put("db", database);
return result;
@@ -245,7 +245,7 @@ public final class DistSQLBackendHandlerFactoryTest extends ProxyContextRestorer
private MetaDataContexts mockMetaDataContexts() {
MetaDataContexts result = mock(MetaDataContexts.class, RETURNS_DEEP_STUBS);
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
- when(database.getResourceMetaData().getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(database.getProtocolType()).thenReturn(new MySQLDatabaseType());
when(database.getResourceMetaData().getDataSources()).thenReturn(Collections.emptyMap());
when(database.getResourceMetaData().getNotExistedResources(any())).thenReturn(Collections.emptyList());
when(database.getRuleMetaData()).thenReturn(new ShardingSphereRuleMetaData(Collections.emptyList()));
diff --git a/proxy/frontend/core/src/main/java/org/apache/shardingsphere/proxy/frontend/protocol/FrontDatabaseProtocolTypeFactory.java b/proxy/frontend/core/src/main/java/org/apache/shardingsphere/proxy/frontend/protocol/FrontDatabaseProtocolTypeFactory.java
index 7e78cafaf53..08f555a9ba1 100644
--- a/proxy/frontend/core/src/main/java/org/apache/shardingsphere/proxy/frontend/protocol/FrontDatabaseProtocolTypeFactory.java
+++ b/proxy/frontend/core/src/main/java/org/apache/shardingsphere/proxy/frontend/protocol/FrontDatabaseProtocolTypeFactory.java
@@ -51,7 +51,8 @@ public final class FrontDatabaseProtocolTypeFactory {
return DatabaseTypeEngine.getTrunkDatabaseType(DEFAULT_FRONTEND_DATABASE_PROTOCOL_TYPE);
}
Optional<ShardingSphereDatabase> database = metaDataContexts.getMetaData().getDatabases().values().stream().filter(ShardingSphereDatabase::containsDataSource).findFirst();
- return database.isPresent() ? database.get().getResourceMetaData().getDatabaseType() : DatabaseTypeEngine.getTrunkDatabaseType(DEFAULT_FRONTEND_DATABASE_PROTOCOL_TYPE);
+ return database.isPresent() ? database.get().getResourceMetaData().getStorageTypes().values().iterator().next()
+ : DatabaseTypeEngine.getTrunkDatabaseType(DEFAULT_FRONTEND_DATABASE_PROTOCOL_TYPE);
}
private static Optional<DatabaseType> findConfiguredDatabaseType() {
diff --git a/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/protocol/FrontDatabaseProtocolTypeFactoryTest.java b/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/protocol/FrontDatabaseProtocolTypeFactoryTest.java
index d3e40581006..2a6766ffe32 100644
--- a/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/protocol/FrontDatabaseProtocolTypeFactoryTest.java
+++ b/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/protocol/FrontDatabaseProtocolTypeFactoryTest.java
@@ -84,7 +84,7 @@ public final class FrontDatabaseProtocolTypeFactoryTest extends ProxyContextRest
DatabaseType databaseType = FrontDatabaseProtocolTypeFactory.getDatabaseType();
assertThat(databaseType, instanceOf(DatabaseType.class));
assertThat(databaseType.getType(), is("PostgreSQL"));
- assertThat(metaDataContexts.getMetaData().getDatabase(DefaultDatabase.LOGIC_NAME).getResourceMetaData().getDatabaseType(), instanceOf(MySQLDatabaseType.class));
+ assertThat(metaDataContexts.getMetaData().getDatabase(DefaultDatabase.LOGIC_NAME).getProtocolType(), instanceOf(MySQLDatabaseType.class));
}
private Properties createProperties() {
@@ -95,7 +95,7 @@ public final class FrontDatabaseProtocolTypeFactoryTest extends ProxyContextRest
private Map<String, ShardingSphereDatabase> mockDatabases() {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
- when(database.getResourceMetaData().getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(database.getProtocolType()).thenReturn(new MySQLDatabaseType());
Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>(1, 1);
result.put(DefaultDatabase.LOGIC_NAME, database);
return result;
diff --git a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
index 87f6f12647f..391bea9c8e5 100644
--- a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
+++ b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
@@ -181,7 +181,7 @@ public final class MySQLFrontendEngineTest extends ProxyContextRestorer {
Map<String, ShardingSphereDatabase> result = new HashMap<>(10, 1);
for (int i = 0; i < 10; i++) {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
- when(database.getResourceMetaData().getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(database.getProtocolType()).thenReturn(new MySQLDatabaseType());
result.put(String.format(SCHEMA_PATTERN, i), database);
}
return result;
diff --git a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java
index 6fec7ff9226..cc425a0a71a 100644
--- a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java
+++ b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java
@@ -99,7 +99,7 @@ public final class MySQLCommandExecutorFactoryTest extends ProxyContextRestorer
private ShardingSphereDatabase mockDatabase() {
ShardingSphereDatabase result = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
when(result.getRuleMetaData().getRules()).thenReturn(Collections.emptyList());
- when(result.getResourceMetaData().getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(result.getResourceMetaData().getStorageTypes()).thenReturn(Collections.singletonMap("ds_0", new MySQLDatabaseType()));
when(result.getProtocolType()).thenReturn(new MySQLDatabaseType());
return result;
}
diff --git a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
index 1cf3cf09142..0e1816fc4e9 100644
--- a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
+++ b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
@@ -131,7 +131,7 @@ public final class MySQLComStmtExecuteExecutorTest extends ProxyContextRestorer
private ShardingSphereDatabase mockDatabase() {
ShardingSphereDatabase result = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
when(result.getRuleMetaData().getRules()).thenReturn(Collections.emptyList());
- when(result.getResourceMetaData().getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(result.getResourceMetaData().getStorageTypes()).thenReturn(Collections.singletonMap("ds_0", new MySQLDatabaseType()));
when(result.getProtocolType()).thenReturn(new MySQLDatabaseType());
return result;
}
diff --git a/proxy/frontend/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/JDBCPortal.java b/proxy/frontend/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/JDBCPortal.java
index 5ddd82c5ed9..72c281a6d09 100644
--- a/proxy/frontend/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/JDBCPortal.java
+++ b/proxy/frontend/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/JDBCPortal.java
@@ -37,7 +37,6 @@ import org.apache.shardingsphere.infra.binder.aware.ParameterAware;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.database.type.DatabaseTypeFactory;
-import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.JDBCBackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
@@ -51,8 +50,8 @@ import org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResp
import org.apache.shardingsphere.proxy.frontend.postgresql.command.query.PostgreSQLCommand;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dal.VariableAssignSegment;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
-import org.apache.shardingsphere.sql.parser.sql.common.statement.dal.SetStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.dal.EmptyStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.dal.SetStatement;
import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
import java.sql.SQLException;
@@ -96,15 +95,10 @@ public final class JDBCPortal implements Portal<Void> {
if (sqlStatementContext instanceof ParameterAware) {
((ParameterAware) sqlStatementContext).setUpParameters(parameters);
}
- DatabaseType databaseType = getDatabaseType(databaseName);
+ DatabaseType protocolType = ProxyContext.getInstance().getDatabase(databaseName).getProtocolType();
QueryContext queryContext = new QueryContext(sqlStatementContext, preparedStatement.getSql(), parameters);
backendConnection.getConnectionSession().setQueryContext(queryContext);
- proxyBackendHandler = ProxyBackendHandlerFactory.newInstance(databaseType, queryContext, backendConnection.getConnectionSession(), true);
- }
-
- private static DatabaseType getDatabaseType(final String databaseName) {
- ShardingSphereDatabase database = ProxyContext.getInstance().getDatabase(databaseName);
- return null != database.getResourceMetaData().getDatabaseType() ? database.getResourceMetaData().getDatabaseType() : database.getProtocolType();
+ proxyBackendHandler = ProxyBackendHandlerFactory.newInstance(protocolType, queryContext, backendConnection.getConnectionSession(), true);
}
@SneakyThrows(SQLException.class)
diff --git a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/JDBCPortalTest.java b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/JDBCPortalTest.java
index 0c1d1f6d2ce..03d25bf6e59 100644
--- a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/JDBCPortalTest.java
+++ b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/JDBCPortalTest.java
@@ -106,7 +106,7 @@ public final class JDBCPortalTest extends ProxyContextRestorer {
when(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getProps().getValue(ConfigurationPropertyKey.SQL_SHOW)).thenReturn(false);
when(connectionSession.getDefaultDatabaseName()).thenReturn("db");
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
- when(database.getResourceMetaData().getDatabaseType()).thenReturn(new PostgreSQLDatabaseType());
+ when(database.getProtocolType()).thenReturn(new PostgreSQLDatabaseType());
when(ProxyContext.getInstance().getDatabase("db")).thenReturn(database);
when(backendConnection.getConnectionSession()).thenReturn(connectionSession);
mockedStatic = mockStatic(ProxyBackendHandlerFactory.class);
diff --git a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java
index 052be5f1022..350fdc45bdb 100644
--- a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java
+++ b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java
@@ -85,7 +85,8 @@ public final class PostgreSQLComParseExecutorTest extends ProxyContextRestorer {
when(parsePacket.getSql()).thenReturn(expectedSQL);
when(parsePacket.getStatementId()).thenReturn(statementId);
when(connectionSession.getDatabaseName()).thenReturn("db");
- when(mockedContextManager.getMetaDataContexts().getMetaData().getDatabase("db").getResourceMetaData().getDatabaseType()).thenReturn(new PostgreSQLDatabaseType());
+ when(mockedContextManager.getMetaDataContexts().getMetaData().getDatabase("db").getResourceMetaData().getStorageTypes())
+ .thenReturn(Collections.singletonMap("ds_0", new PostgreSQLDatabaseType()));
when(mockedContextManager.getMetaDataContexts().getMetaData().getDatabase("db").getProtocolType()).thenReturn(new PostgreSQLDatabaseType());
ShardingSphereRuleMetaData globalRuleMetaData = mock(ShardingSphereRuleMetaData.class);
when(mockedContextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData()).thenReturn(globalRuleMetaData);
@@ -107,7 +108,8 @@ public final class PostgreSQLComParseExecutorTest extends ProxyContextRestorer {
when(parsePacket.getSql()).thenReturn(rawSQL);
when(parsePacket.getStatementId()).thenReturn(statementId);
when(parsePacket.readParameterTypes()).thenReturn(Collections.singletonList(PostgreSQLColumnType.POSTGRESQL_TYPE_INT4));
- when(mockedContextManager.getMetaDataContexts().getMetaData().getDatabase("db").getResourceMetaData().getDatabaseType()).thenReturn(new PostgreSQLDatabaseType());
+ when(mockedContextManager.getMetaDataContexts().getMetaData().getDatabase("db").getResourceMetaData().getStorageTypes())
+ .thenReturn(Collections.singletonMap("ds_0", new PostgreSQLDatabaseType()));
when(mockedContextManager.getMetaDataContexts().getMetaData().getDatabase("db").getProtocolType()).thenReturn(new PostgreSQLDatabaseType());
ShardingSphereRuleMetaData globalRuleMetaData = mock(ShardingSphereRuleMetaData.class);
when(mockedContextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData()).thenReturn(globalRuleMetaData);
@@ -138,7 +140,8 @@ public final class PostgreSQLComParseExecutorTest extends ProxyContextRestorer {
when(parsePacket.getSql()).thenReturn(sql);
when(parsePacket.getStatementId()).thenReturn(statementId);
when(connectionSession.getDatabaseName()).thenReturn("db");
- when(mockedContextManager.getMetaDataContexts().getMetaData().getDatabase("db").getResourceMetaData().getDatabaseType()).thenReturn(new PostgreSQLDatabaseType());
+ when(mockedContextManager.getMetaDataContexts().getMetaData().getDatabase("db").getResourceMetaData().getStorageTypes())
+ .thenReturn(Collections.singletonMap("ds_0", new PostgreSQLDatabaseType()));
when(mockedContextManager.getMetaDataContexts().getMetaData().getDatabase("db").getProtocolType()).thenReturn(new PostgreSQLDatabaseType());
ShardingSphereRuleMetaData globalRuleMetaData = mock(ShardingSphereRuleMetaData.class);
when(mockedContextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData()).thenReturn(globalRuleMetaData);