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

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


The following commit(s) were added to refs/heads/master by this push:
     new 64d2481  Use new functions instead of the old one in SchemaContext 
(#6763)
64d2481 is described below

commit 64d2481c8eb6319a7804f707032e08345c7175de
Author: Juan Pan(Trista) <[email protected]>
AuthorDate: Mon Aug 10 18:58:25 2020 +0800

    Use new functions instead of the old one in SchemaContext (#6763)
---
 .../core/schema/OrchestrationSchemaContexts.java           |  6 +++---
 .../driver/executor/PreparedStatementExecutor.java         | 10 +++++-----
 .../shardingsphere/driver/executor/StatementExecutor.java  | 14 +++++---------
 .../executor/batch/BatchPreparedStatementExecutor.java     |  4 +---
 .../jdbc/core/datasource/ShardingSphereDataSource.java     |  2 +-
 .../core/statement/ShardingSpherePreparedStatement.java    |  2 +-
 .../jdbc/core/statement/ShardingSphereStatement.java       |  2 +-
 .../driver/executor/AbstractBaseExecutorTest.java          |  2 +-
 .../jdbc/core/connection/ShardingSphereConnectionTest.java |  2 +-
 .../jdbc/core/datasource/ShardingSphereDataSourceTest.java |  3 +--
 .../datasource/OrchestrationShardingSphereDataSource.java  |  2 +-
 .../shardingsphere/spring/AbstractSpringJUnitTest.java     |  2 +-
 .../kernel/context/SchemaContextsBuilder.java              |  2 +-
 .../kernel/context/schema/ShardingSphereSchema.java        |  6 +-----
 .../jdbc/JDBCDatabaseCommunicationEngine.java              |  8 ++++----
 .../communication/jdbc/connection/BackendConnection.java   |  6 ++++--
 .../jdbc/execute/engine/RegistryCenterExecuteEngine.java   |  2 +-
 .../jdbc/execute/engine/jdbc/ProxySQLExecutorCallback.java |  3 ++-
 .../sctl/explain/ShardingCTLExplainBackendHandlerTest.java |  3 +--
 .../proxy/frontend/netty/ServerHandlerInitializer.java     |  2 +-
 20 files changed, 37 insertions(+), 46 deletions(-)

diff --git 
a/shardingsphere-control-panel/shardingsphere-orchestration/shardingsphere-orchestration-core/shardingsphere-orchestration-core-schema/src/main/java/org/apache/shardingsphere/orchestration/core/schema/OrchestrationSchemaContexts.java
 
b/shardingsphere-control-panel/shardingsphere-orchestration/shardingsphere-orchestration-core/shardingsphere-orchestration-core-schema/src/main/java/org/apache/shardingsphere/orchestration/core/schema/OrchestrationSchemaContexts.java
index 0d9cae7..6d173f1 100644
--- 
a/shardingsphere-control-panel/shardingsphere-orchestration/shardingsphere-orchestration-core/shardingsphere-orchestration-core-schema/src/main/java/org/apache/shardingsphere/orchestration/core/schema/OrchestrationSchemaContexts.java
+++ 
b/shardingsphere-control-panel/shardingsphere-orchestration/shardingsphere-orchestration-core/shardingsphere-orchestration-core-schema/src/main/java/org/apache/shardingsphere/orchestration/core/schema/OrchestrationSchemaContexts.java
@@ -354,14 +354,14 @@ public abstract class OrchestrationSchemaContexts 
implements SchemaContexts {
     
     private ShardingSphereSchema getChangedShardingSphereSchema(final 
ShardingSphereSchema oldShardingSphereSchema, final RuleSchemaMetaData 
newRuleSchemaMetaData) {
         ShardingSphereMetaData metaData = new 
ShardingSphereMetaData(oldShardingSphereSchema.getMetaData().getDataSources(), 
newRuleSchemaMetaData);
-        return new 
ShardingSphereSchema(oldShardingSphereSchema.getDatabaseType(), 
oldShardingSphereSchema.getConfigurations(),
+        return new 
ShardingSphereSchema(oldShardingSphereSchema.getConfigurations(),
                 oldShardingSphereSchema.getRules(), 
oldShardingSphereSchema.getDataSources(), metaData);
     }
     
     private SchemaContext getChangedSchemaContext(final SchemaContext 
oldSchemaContext, final Collection<RuleConfiguration> configurations) throws 
SQLException {
         ShardingSphereSchema oldSchema = oldSchemaContext.getSchema();
         SchemaContextsBuilder builder = new 
SchemaContextsBuilder(Collections.singletonMap(oldSchemaContext.getName(), 
oldSchema.getDataSources()),
-                oldSchema.getDatabaseType(), 
Collections.singletonMap(oldSchemaContext.getName(), configurations), 
schemaContexts.getAuthentication(), schemaContexts.getProps().getProps());
+                schemaContexts.getDatabaseType(), 
Collections.singletonMap(oldSchemaContext.getName(), configurations), 
schemaContexts.getAuthentication(), schemaContexts.getProps().getProps());
         return builder.build().getSchemaContexts().values().iterator().next();
     }
     
@@ -373,7 +373,7 @@ public abstract class OrchestrationSchemaContexts 
implements SchemaContexts {
         
oldSchemaContext.getRuntimeContext().getTransactionManagerEngine().close();
         Map<String, Map<String, DataSource>> dataSourcesMap = 
Collections.singletonMap(oldSchemaContext.getName(), 
getNewDataSources(oldSchemaContext.getSchema().getDataSources(), 
                 deletedDataSources, getAddedDataSources(oldSchemaContext, 
newDataSources), modifiedDataSources));
-        return new SchemaContextsBuilder(dataSourcesMap, 
oldSchemaContext.getSchema().getDatabaseType(), 
+        return new SchemaContextsBuilder(dataSourcesMap, 
schemaContexts.getDatabaseType(),
                 Collections.singletonMap(oldSchemaContext.getName(), 
oldSchemaContext.getSchema().getConfigurations()), 
schemaContexts.getAuthentication(), 
                 
schemaContexts.getProps().getProps()).build().getSchemaContexts().get(oldSchemaContext.getName());
     }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutor.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutor.java
index e5b53972..31bd219 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutor.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutor.java
@@ -76,7 +76,7 @@ public final class PreparedStatementExecutor {
     }
     
     private DefaultSQLExecutorCallback<QueryResult> 
createDefaultSQLExecutorCallbackWithQueryResult(final boolean 
isExceptionThrown) {
-        return new 
DefaultSQLExecutorCallback<QueryResult>(schemaContexts.getDefaultSchemaContext().getSchema().getDatabaseType(),
 isExceptionThrown) {
+        return new 
DefaultSQLExecutorCallback<QueryResult>(schemaContexts.getDatabaseType(), 
isExceptionThrown) {
             
             @Override
             protected QueryResult executeSQL(final String sql, final Statement 
statement, final ConnectionMode connectionMode) throws SQLException { 
@@ -110,7 +110,7 @@ public final class PreparedStatementExecutor {
     }
     
     private DefaultSQLExecutorCallback<Integer> 
createDefaultSQLExecutorCallbackWithInteger(final boolean isExceptionThrown) {
-        return new 
DefaultSQLExecutorCallback<Integer>(schemaContexts.getDefaultSchemaContext().getSchema().getDatabaseType(),
 isExceptionThrown) {
+        return new 
DefaultSQLExecutorCallback<Integer>(schemaContexts.getDatabaseType(), 
isExceptionThrown) {
             
             @Override
             protected Integer executeSQL(final String sql, final Statement 
statement, final ConnectionMode connectionMode) throws SQLException {
@@ -151,7 +151,7 @@ public final class PreparedStatementExecutor {
     }
     
     private DefaultSQLExecutorCallback<Boolean> 
createDefaultSQLExecutorCallbackWithBoolean(final boolean isExceptionThrown) {
-        return new 
DefaultSQLExecutorCallback<Boolean>(schemaContexts.getDefaultSchemaContext().getSchema().getDatabaseType(),
 isExceptionThrown) {
+        return new 
DefaultSQLExecutorCallback<Boolean>(schemaContexts.getDatabaseType(), 
isExceptionThrown) {
                     
             @Override
             protected Boolean executeSQL(final String sql, final Statement 
statement, final ConnectionMode connectionMode) throws SQLException {
@@ -168,8 +168,8 @@ public final class PreparedStatementExecutor {
         Optional<MetaDataRefreshStrategy> refreshStrategy = 
MetaDataRefreshStrategyFactory.newInstance(sqlStatementContext);
         if (refreshStrategy.isPresent()) {
             RuleSchemaMetaDataLoader metaDataLoader = new 
RuleSchemaMetaDataLoader(schemaContext.getSchema().getRules());
-            
refreshStrategy.get().refreshMetaData(schemaContext.getSchema().getMetaData(), 
schemaContext.getSchema().getDatabaseType(), 
-                    dataSourceMap, sqlStatementContext, tableName -> 
metaDataLoader.load(schemaContext.getSchema().getDatabaseType(), 
+            
refreshStrategy.get().refreshMetaData(schemaContext.getSchema().getMetaData(), 
schemaContexts.getDatabaseType(),
+                    dataSourceMap, sqlStatementContext, tableName -> 
metaDataLoader.load(schemaContexts.getDatabaseType(),
                             dataSourceMap, tableName, 
schemaContexts.getProps()));
             MetaDataCallback.getInstance().run(DefaultSchema.LOGIC_NAME, 
schemaContext.getSchema().getMetaData().getSchema());
         }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/StatementExecutor.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/StatementExecutor.java
index 1ccb974..075a80f 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/StatementExecutor.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/StatementExecutor.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.driver.executor;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.callback.orchestration.MetaDataCallback;
 import org.apache.shardingsphere.infra.database.DefaultSchema;
-import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.executor.kernel.InputGroup;
 import org.apache.shardingsphere.infra.executor.sql.ConnectionMode;
 import org.apache.shardingsphere.infra.executor.sql.QueryResult;
@@ -71,8 +70,7 @@ public final class StatementExecutor {
      */
     public List<QueryResult> executeQuery(final 
Collection<InputGroup<StatementExecuteUnit>> inputGroups) throws SQLException {
         boolean isExceptionThrown = 
ExecutorExceptionHandler.isExceptionThrown();
-        DatabaseType databaseType = 
schemaContexts.getDefaultSchemaContext().getSchema().getDatabaseType();
-        SQLExecutorCallback<QueryResult> sqlExecutorCallback = new 
DefaultSQLExecutorCallback<QueryResult>(databaseType, isExceptionThrown) {
+        SQLExecutorCallback<QueryResult> sqlExecutorCallback = new 
DefaultSQLExecutorCallback<QueryResult>(schemaContexts.getDatabaseType(), 
isExceptionThrown) {
             
             @Override
             protected QueryResult executeSQL(final String sql, final Statement 
statement, final ConnectionMode connectionMode) throws SQLException {
@@ -141,8 +139,7 @@ public final class StatementExecutor {
     @SuppressWarnings("unchecked")
     private int executeUpdate(final 
Collection<InputGroup<StatementExecuteUnit>> inputGroups, final Updater 
updater, final SQLStatementContext sqlStatementContext) throws SQLException {
         boolean isExceptionThrown = 
ExecutorExceptionHandler.isExceptionThrown();
-        DatabaseType databaseType = 
schemaContexts.getDefaultSchemaContext().getSchema().getDatabaseType();
-        SQLExecutorCallback sqlExecutorCallback = new 
DefaultSQLExecutorCallback<Integer>(databaseType, isExceptionThrown) {
+        SQLExecutorCallback sqlExecutorCallback = new 
DefaultSQLExecutorCallback<Integer>(schemaContexts.getDatabaseType(), 
isExceptionThrown) {
             
             @Override
             protected Integer executeSQL(final String sql, final Statement 
statement, final ConnectionMode connectionMode) throws SQLException {
@@ -224,8 +221,7 @@ public final class StatementExecutor {
     @SuppressWarnings("unchecked")
     private boolean execute(final Collection<InputGroup<StatementExecuteUnit>> 
inputGroups, final Executor executor, final SQLStatementContext 
sqlStatementContext) throws SQLException {
         boolean isExceptionThrown = 
ExecutorExceptionHandler.isExceptionThrown();
-        DatabaseType databaseType = 
schemaContexts.getDefaultSchemaContext().getSchema().getDatabaseType();
-        SQLExecutorCallback sqlExecutorCallback = new 
DefaultSQLExecutorCallback<Boolean>(databaseType, isExceptionThrown) {
+        SQLExecutorCallback sqlExecutorCallback = new 
DefaultSQLExecutorCallback<Boolean>(schemaContexts.getDatabaseType(), 
isExceptionThrown) {
             
             @Override
             protected Boolean executeSQL(final String sql, final Statement 
statement, final ConnectionMode connectionMode) throws SQLException {
@@ -248,8 +244,8 @@ public final class StatementExecutor {
         Optional<MetaDataRefreshStrategy> refreshStrategy = 
MetaDataRefreshStrategyFactory.newInstance(sqlStatementContext);
         if (refreshStrategy.isPresent()) {
             RuleSchemaMetaDataLoader metaDataLoader = new 
RuleSchemaMetaDataLoader(schemaContext.getSchema().getRules());
-            
refreshStrategy.get().refreshMetaData(schemaContext.getSchema().getMetaData(), 
schemaContext.getSchema().getDatabaseType(), dataSourceMap, sqlStatementContext,
-                tableName -> 
metaDataLoader.load(schemaContext.getSchema().getDatabaseType(), dataSourceMap, 
tableName, schemaContexts.getProps()));
+            
refreshStrategy.get().refreshMetaData(schemaContext.getSchema().getMetaData(), 
schemaContexts.getDatabaseType(), dataSourceMap, sqlStatementContext,
+                tableName -> 
metaDataLoader.load(schemaContexts.getDatabaseType(), dataSourceMap, tableName, 
schemaContexts.getProps()));
             MetaDataCallback.getInstance().run(DefaultSchema.LOGIC_NAME, 
schemaContext.getSchema().getMetaData().getSchema());
         }
     }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
index 0be7fe8..379e443 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.driver.executor.batch;
 
 import com.google.common.base.Preconditions;
 import lombok.Getter;
-import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.executor.kernel.InputGroup;
 import org.apache.shardingsphere.infra.executor.sql.ConnectionMode;
 import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
@@ -120,8 +119,7 @@ public final class BatchPreparedStatementExecutor {
      */
     public int[] executeBatch(final SQLStatementContext sqlStatementContext) 
throws SQLException {
         boolean isExceptionThrown = 
ExecutorExceptionHandler.isExceptionThrown();
-        DatabaseType databaseType = 
schemaContexts.getDefaultSchemaContext().getSchema().getDatabaseType();
-        SQLExecutorCallback<int[]> callback = new 
DefaultSQLExecutorCallback<int[]>(databaseType, isExceptionThrown) {
+        SQLExecutorCallback<int[]> callback = new 
DefaultSQLExecutorCallback<int[]>(schemaContexts.getDatabaseType(), 
isExceptionThrown) {
             
             @Override
             protected int[] executeSQL(final String sql, final Statement 
statement, final ConnectionMode connectionMode) throws SQLException {
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
index 3e4ae5c..4c7a8e1 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
@@ -73,7 +73,7 @@ public final class ShardingSphereDataSource extends 
AbstractUnsupportedOperation
     
     private DatabaseType createDatabaseType(final DataSource dataSource) 
throws SQLException {
         if (dataSource instanceof ShardingSphereDataSource) {
-            return ((ShardingSphereDataSource) 
dataSource).schemaContexts.getSchemaContexts().get(DefaultSchema.LOGIC_NAME).getSchema().getDatabaseType();
+            return ((ShardingSphereDataSource) 
dataSource).schemaContexts.getDatabaseType();
         }
         try (Connection connection = dataSource.getConnection()) {
             return 
DatabaseTypes.getDatabaseTypeByURL(connection.getMetaData().getURL());
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
index 7721d19..fc9ca7a 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
@@ -268,7 +268,7 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
     
     private MergedResult mergeQuery(final List<QueryResult> queryResults) 
throws SQLException {
         SchemaContext schemaContext = schemaContexts.getDefaultSchemaContext();
-        MergeEngine mergeEngine = new 
MergeEngine(schemaContext.getSchema().getDatabaseType(), 
+        MergeEngine mergeEngine = new 
MergeEngine(schemaContexts.getDatabaseType(),
                 
schemaContext.getSchema().getMetaData().getSchema().getConfiguredSchemaMetaData(),
 schemaContexts.getProps(), schemaContext.getSchema().getRules());
         return mergeEngine.merge(queryResults, 
executionContext.getSqlStatementContext());
     }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
index fd98ea5..c8bb9b4 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
@@ -364,7 +364,7 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
     
     private MergedResult mergeQuery(final List<QueryResult> queryResults) 
throws SQLException {
         SchemaContext schemaContext = schemaContexts.getDefaultSchemaContext();
-        MergeEngine mergeEngine = new 
MergeEngine(schemaContext.getSchema().getDatabaseType(), 
+        MergeEngine mergeEngine = new 
MergeEngine(schemaContexts.getDatabaseType(),
                 
schemaContext.getSchema().getMetaData().getSchema().getConfiguredSchemaMetaData(),
 schemaContexts.getProps(), schemaContext.getSchema().getRules());
         return mergeEngine.merge(queryResults, 
executionContext.getSqlStatementContext());
     }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/executor/AbstractBaseExecutorTest.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/executor/AbstractBaseExecutorTest.java
index 205e70c..cf970d4 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/executor/AbstractBaseExecutorTest.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/executor/AbstractBaseExecutorTest.java
@@ -77,7 +77,7 @@ public abstract class AbstractBaseExecutorTest {
         when(runtimeContext.getExecutorKernel()).thenReturn(executorKernel);
         when(schemaContexts.getProps()).thenReturn(getProperties());
         when(schemaContext.getSchema()).thenReturn(schema);
-        
when(schema.getDatabaseType()).thenReturn(DatabaseTypes.getActualDatabaseType("H2"));
+        
when(schemaContexts.getDatabaseType()).thenReturn(DatabaseTypes.getActualDatabaseType("H2"));
         ShardingRule shardingRule = getShardingRule();
         
when(schema.getRules()).thenReturn(Collections.singletonList(shardingRule));
         when(runtimeContext.getTransactionManagerEngine()).thenReturn(new 
ShardingTransactionManagerEngine());
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
index 5154777..af28a11 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
@@ -81,7 +81,7 @@ public final class ShardingSphereConnectionTest {
         RuntimeContext runtimeContext = mock(RuntimeContext.class);
         
when(schemaContexts.getDefaultSchemaContext()).thenReturn(schemaContext);
         when(schemaContext.getSchema()).thenReturn(schema);
-        
when(schema.getDatabaseType()).thenReturn(DatabaseTypes.getActualDatabaseType("H2"));
+        
when(schemaContexts.getDatabaseType()).thenReturn(DatabaseTypes.getActualDatabaseType("H2"));
         when(schemaContext.getRuntimeContext()).thenReturn(runtimeContext);
         when(runtimeContext.getTransactionManagerEngine()).thenReturn(new 
ShardingTransactionManagerEngine());
         ShardingRuleConfiguration shardingRuleConfig = new 
ShardingRuleConfiguration();
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
index 51781e6..1a3b954 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.driver.jdbc.core.datasource;
 import com.google.common.base.Joiner;
 import 
org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection;
 import 
org.apache.shardingsphere.driver.jdbc.core.fixture.XAShardingTransactionManagerFixture;
-import org.apache.shardingsphere.infra.database.DefaultSchema;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.database.type.DatabaseTypes;
 import org.apache.shardingsphere.infra.database.type.dialect.H2DatabaseType;
@@ -100,7 +99,7 @@ public final class ShardingSphereDataSourceTest {
     
     private void assertDatabaseProductName(final Map<String, DataSource> 
dataSourceMap, final Connection... connections) throws SQLException {
         try {
-            
assertThat(createShardingSphereDataSource(dataSourceMap).getSchemaContexts().getSchemaContexts().get(DefaultSchema.LOGIC_NAME).getSchema().getDatabaseType(),
 
+            
assertThat(createShardingSphereDataSource(dataSourceMap).getSchemaContexts().getDatabaseType(),
                     instanceOf(H2DatabaseType.class));
         } finally {
             for (Connection each : connections) {
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-orchestration/src/main/java/org/apache/shardingsphere/driver/orchestration/internal/datasource/OrchestrationShardingSphereDataSource.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-orchestration/src/main/java/org/apache/shardingsphere/driver/orchestration/internal/datasource/OrchestrationShardingSphereDataSource.java
index f0e1ce2..fc58365 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-orchestration/src/main/java/org/apache/shardingsphere/driver/orchestration/internal/datasource/OrchestrationShardingSphereDataSource.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-orchestration/src/main/java/org/apache/shardingsphere/driver/orchestration/internal/datasource/OrchestrationShardingSphereDataSource.java
@@ -315,7 +315,7 @@ public final class OrchestrationShardingSphereDataSource 
extends AbstractUnsuppo
     
     private ShardingSphereSchema getChangedSchema(final ShardingSphereSchema 
oldSchema, final RuleSchemaMetaData newRuleSchemaMetaData) {
         ShardingSphereMetaData metaData = new 
ShardingSphereMetaData(oldSchema.getMetaData().getDataSources(), 
newRuleSchemaMetaData);
-        return new ShardingSphereSchema(oldSchema.getDatabaseType(), 
oldSchema.getConfigurations(), oldSchema.getRules(), 
oldSchema.getDataSources(), metaData);
+        return new ShardingSphereSchema(oldSchema.getConfigurations(), 
oldSchema.getRules(), oldSchema.getDataSources(), metaData);
     }
     
     /**
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/java/org/apache/shardingsphere/spring/AbstractSpringJUnitTest.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/java/org/apache/shardingsphere/spring/AbstractSpringJUnitTest.java
index ce0d50c..19e5a22 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/java/org/apache/shardingsphere/spring/AbstractSpringJUnitTest.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/java/org/apache/shardingsphere/spring/AbstractSpringJUnitTest.java
@@ -95,7 +95,7 @@ public abstract class AbstractSpringJUnitTest extends 
AbstractJUnit4SpringContex
     
     private SchemaContextsBuilder createSchemaContextsBuilder() {
         Map<String, Map<String, DataSource>> dataSources = 
Collections.singletonMap(DefaultSchema.LOGIC_NAME, 
shardingSphereDataSource.getDataSourceMap());
-        DatabaseType databaseType = 
shardingSphereDataSource.getSchemaContexts().getDefaultSchemaContext().getSchema().getDatabaseType();
+        DatabaseType databaseType = 
shardingSphereDataSource.getSchemaContexts().getDatabaseType();
         Map<String, Collection<RuleConfiguration>> configurations = 
                 Collections.singletonMap(DefaultSchema.LOGIC_NAME, 
shardingSphereDataSource.getSchemaContexts().getDefaultSchemaContext().getSchema().getConfigurations());
         return new SchemaContextsBuilder(dataSources, databaseType, 
configurations, 
shardingSphereDataSource.getSchemaContexts().getProps().getProps());
diff --git 
a/shardingsphere-kernel/shardingsphere-kernel-context/src/main/java/org/apache/shardingsphere/kernel/context/SchemaContextsBuilder.java
 
b/shardingsphere-kernel/shardingsphere-kernel-context/src/main/java/org/apache/shardingsphere/kernel/context/SchemaContextsBuilder.java
index 4b1e50e..6b74eda 100644
--- 
a/shardingsphere-kernel/shardingsphere-kernel-context/src/main/java/org/apache/shardingsphere/kernel/context/SchemaContextsBuilder.java
+++ 
b/shardingsphere-kernel/shardingsphere-kernel-context/src/main/java/org/apache/shardingsphere/kernel/context/SchemaContextsBuilder.java
@@ -121,7 +121,7 @@ public final class SchemaContextsBuilder {
         Map<String, DataSource> dataSources = this.dataSources.get(schemaName);
         Collection<RuleConfiguration> ruleConfigurations = 
this.ruleConfigurations.get(schemaName);
         Collection<ShardingSphereRule> rules = 
ShardingSphereRulesBuilder.build(ruleConfigurations, dataSources.keySet());
-        return new ShardingSphereSchema(databaseType, ruleConfigurations, 
rules, dataSources, createMetaData(dataSources, rules));
+        return new ShardingSphereSchema(ruleConfigurations, rules, 
dataSources, createMetaData(dataSources, rules));
     }
     
     private ShardingSphereMetaData createMetaData(final Map<String, 
DataSource> dataSourceMap, final Collection<ShardingSphereRule> rules) throws 
SQLException {
diff --git 
a/shardingsphere-kernel/shardingsphere-kernel-context/src/main/java/org/apache/shardingsphere/kernel/context/schema/ShardingSphereSchema.java
 
b/shardingsphere-kernel/shardingsphere-kernel-context/src/main/java/org/apache/shardingsphere/kernel/context/schema/ShardingSphereSchema.java
index a3c3de8..074276d 100644
--- 
a/shardingsphere-kernel/shardingsphere-kernel-context/src/main/java/org/apache/shardingsphere/kernel/context/schema/ShardingSphereSchema.java
+++ 
b/shardingsphere-kernel/shardingsphere-kernel-context/src/main/java/org/apache/shardingsphere/kernel/context/schema/ShardingSphereSchema.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.kernel.context.schema;
 
 import lombok.Getter;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
-import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 
@@ -36,8 +35,6 @@ import java.util.Map;
 @Getter
 public final class ShardingSphereSchema {
     
-    private final DatabaseType databaseType;
-    
     private final Collection<RuleConfiguration> configurations = new 
LinkedList<>();
     
     private final Collection<ShardingSphereRule> rules = new LinkedList<>();
@@ -46,9 +43,8 @@ public final class ShardingSphereSchema {
     
     private final ShardingSphereMetaData metaData;
     
-    public ShardingSphereSchema(final DatabaseType databaseType, final 
Collection<RuleConfiguration> configurations, final 
Collection<ShardingSphereRule> rules, 
+    public ShardingSphereSchema(final Collection<RuleConfiguration> 
configurations, final Collection<ShardingSphereRule> rules,
                                 final Map<String, DataSource> dataSourceMap, 
final ShardingSphereMetaData shardingSphereMetaData) {
-        this.databaseType = databaseType;
         this.configurations.addAll(configurations);
         this.rules.addAll(rules);
         dataSources.putAll(dataSourceMap);
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
index aac5d16..6cb82fc 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
@@ -126,15 +126,15 @@ public final class JDBCDatabaseCommunicationEngine 
implements DatabaseCommunicat
         }
         Optional<MetaDataRefreshStrategy> refreshStrategy = 
MetaDataRefreshStrategyFactory.newInstance(sqlStatementContext);
         if (refreshStrategy.isPresent()) {
-            
refreshStrategy.get().refreshMetaData(schema.getSchema().getMetaData(),
-                    schema.getSchema().getDatabaseType(), 
schema.getSchema().getDataSources(), sqlStatementContext, 
this::loadTableMetaData);
+            
refreshStrategy.get().refreshMetaData(schema.getSchema().getMetaData(), 
ProxySchemaContexts.getInstance().getSchemaContexts().getDatabaseType(),
+                    schema.getSchema().getDataSources(), sqlStatementContext, 
this::loadTableMetaData);
             MetaDataCallback.getInstance().run(schema.getName(), 
schema.getSchema().getMetaData().getSchema());
         }
     }
     
     private Optional<TableMetaData> loadTableMetaData(final String tableName) 
throws SQLException {
         RuleSchemaMetaDataLoader loader = new 
RuleSchemaMetaDataLoader(schema.getSchema().getRules());
-        return loader.load(schema.getSchema().getDatabaseType(),
+        return 
loader.load(ProxySchemaContexts.getInstance().getSchemaContexts().getDatabaseType(),
                 schema.getSchema().getDataSources(), tableName, 
ProxySchemaContexts.getInstance().getSchemaContexts().getProps());
     }
     
@@ -159,7 +159,7 @@ public final class JDBCDatabaseCommunicationEngine 
implements DatabaseCommunicat
     }
     
     private MergedResult mergeQuery(final SQLStatementContext 
sqlStatementContext, final List<QueryResult> queryResults) throws SQLException {
-        MergeEngine mergeEngine = new 
MergeEngine(schema.getSchema().getDatabaseType(), 
+        MergeEngine mergeEngine = new 
MergeEngine(ProxySchemaContexts.getInstance().getSchemaContexts().getDatabaseType(),
                 
schema.getSchema().getMetaData().getSchema().getConfiguredSchemaMetaData(), 
ProxySchemaContexts.getInstance().getSchemaContexts().getProps(), 
schema.getSchema().getRules());
         return mergeEngine.merge(queryResults, sqlStatementContext);
     }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnection.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnection.java
index 296688f..f147e1a 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnection.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnection.java
@@ -24,6 +24,7 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import 
org.apache.shardingsphere.infra.database.type.dialect.PostgreSQLDatabaseType;
 import org.apache.shardingsphere.infra.exception.ShardingSphereException;
@@ -213,9 +214,10 @@ public final class BackendConnection implements 
JDBCExecutionConnection, AutoClo
     }
     
     private void setFetchSize(final Statement statement) throws SQLException {
-        if (schema.getSchema().getDatabaseType() instanceof MySQLDatabaseType) 
{
+        DatabaseType databaseType = 
ProxySchemaContexts.getInstance().getSchemaContexts().getDatabaseType();
+        if (databaseType instanceof MySQLDatabaseType) {
             statement.setFetchSize(MYSQL_MEMORY_FETCH_ONE_ROW_A_TIME);
-        } else if (schema.getSchema().getDatabaseType() instanceof 
PostgreSQLDatabaseType) {
+        } else if (databaseType instanceof PostgreSQLDatabaseType) {
             statement.setFetchSize(POSTGRESQL_MEMORY_FETCH_ONE_ROW_A_TIME);
         }
     }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/execute/engine/RegistryCenterExecuteEngine.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/execute/engine/RegistryCenterExecuteEngine.java
index 6dcfa5b..91af073 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/execute/engine/RegistryCenterExecuteEngine.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/execute/engine/RegistryCenterExecuteEngine.java
@@ -61,7 +61,7 @@ public final class RegistryCenterExecuteEngine implements 
SQLExecuteEngine {
     
     @Override
     public ExecutionContext execute(final String sql) {
-        DatabaseType databaseType = 
ProxySchemaContexts.getInstance().getSchemaContexts().getSchemaContexts().get(schemaName).getSchema().getDatabaseType();
+        DatabaseType databaseType = 
ProxySchemaContexts.getInstance().getSchemaContexts().getDatabaseType();
         SQLStatementContext<?> sqlStatementContext = sqlStatement instanceof 
CreateDataSourcesStatement
                 ? new 
CreateDataSourcesStatementContext((CreateDataSourcesStatement) sqlStatement, 
databaseType)
                 : new 
CreateShardingRuleStatementContext((CreateShardingRuleStatement) sqlStatement);
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/execute/engine/jdbc/ProxySQLExecutorCallback.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/execute/engine/jdbc/ProxySQLExecutorCallback.java
index 4309266..23c662d 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/execute/engine/jdbc/ProxySQLExecutorCallback.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/execute/engine/jdbc/ProxySQLExecutorCallback.java
@@ -29,6 +29,7 @@ import 
org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.queryresult.S
 import 
org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
 import 
org.apache.shardingsphere.proxy.backend.communication.jdbc.wrapper.JDBCExecutorWrapper;
 import 
org.apache.shardingsphere.proxy.backend.response.query.QueryHeaderBuilder;
+import org.apache.shardingsphere.proxy.backend.schema.ProxySchemaContexts;
 import 
org.apache.shardingsphere.sql.parser.binder.segment.select.projection.ProjectionsContext;
 import 
org.apache.shardingsphere.sql.parser.binder.statement.SQLStatementContext;
 import 
org.apache.shardingsphere.sql.parser.binder.statement.dml.SelectStatementContext;
@@ -59,7 +60,7 @@ public final class ProxySQLExecutorCallback extends 
DefaultSQLExecutorCallback<E
 
     public ProxySQLExecutorCallback(final SQLStatementContext 
sqlStatementContext, final BackendConnection backendConnection, final 
JDBCExecutorWrapper jdbcExecutorWrapper,
                                     final boolean isExceptionThrown, final 
boolean isReturnGeneratedKeys, final boolean fetchMetaData) {
-        super(backendConnection.getSchema().getSchema().getDatabaseType(), 
isExceptionThrown);
+        
super(ProxySchemaContexts.getInstance().getSchemaContexts().getDatabaseType(), 
isExceptionThrown);
         this.sqlStatementContext = sqlStatementContext;
         this.backendConnection = backendConnection;
         this.jdbcExecutorWrapper = jdbcExecutorWrapper;
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/explain/ShardingCTLExplainBackendHandlerTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/explain/ShardingCTLExplainBackendHandlerTest.java
index 9b9f38d..869f542 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/explain/ShardingCTLExplainBackendHandlerTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/explain/ShardingCTLExplainBackendHandlerTest.java
@@ -1,6 +1,5 @@
 package org.apache.shardingsphere.proxy.backend.text.sctl.explain;
 
-import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.kernel.context.SchemaContext;
 import org.apache.shardingsphere.kernel.context.runtime.RuntimeContext;
 import org.apache.shardingsphere.kernel.context.schema.ShardingSphereSchema;
@@ -49,7 +48,7 @@ public final class ShardingCTLExplainBackendHandlerTest {
     
     private SchemaContext createSchemaContext() {
         RuntimeContext runtimeContext = new RuntimeContext(null, null, new 
ShardingSphereSQLParserEngine(new StandardSQLParserEngine("MySQL")), null);
-        ShardingSphereSchema schema = new ShardingSphereSchema(new 
MySQLDatabaseType(), Collections.emptyList(),
+        ShardingSphereSchema schema = new 
ShardingSphereSchema(Collections.emptyList(),
                 Collections.emptyList(), Collections.singletonMap("ds0", 
mock(DataSource.class)), null);
         return new SchemaContext("c1", schema, runtimeContext);
     }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/netty/ServerHandlerInitializer.java
 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/netty/ServerHandlerInitializer.java
index 8b27780..a51efee 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/netty/ServerHandlerInitializer.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/netty/ServerHandlerInitializer.java
@@ -38,7 +38,7 @@ public final class ServerHandlerInitializer extends 
ChannelInitializer<SocketCha
     protected void initChannel(final SocketChannel socketChannel) {
         // TODO Consider loading from configuration.
         DatabaseType databaseType = 
ProxySchemaContexts.getInstance().getSchemaContexts().getSchemaContexts().isEmpty()
 ? new MySQLDatabaseType()
-                : 
ProxySchemaContexts.getInstance().getSchemaContexts().getSchemaContexts().values().iterator().next().getSchema().getDatabaseType();
+                : 
ProxySchemaContexts.getInstance().getSchemaContexts().getDatabaseType();
         DatabaseProtocolFrontendEngine databaseProtocolFrontendEngine = 
DatabaseProtocolFrontendEngineFactory.newInstance(databaseType);
         ChannelPipeline pipeline = socketChannel.pipeline();
         pipeline.addLast(new 
PacketCodec(databaseProtocolFrontendEngine.getCodecEngine()));

Reply via email to