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

duanzhengqiang 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 09ae17b4e6c Refactor ShardingSphereDatabase.databases 
ConcurrentHashMap init index (#19444)
09ae17b4e6c is described below

commit 09ae17b4e6cc34590df3e675e8a6737f478eaa64
Author: zhaojinchao <[email protected]>
AuthorDate: Fri Jul 22 13:38:51 2022 +0800

    Refactor ShardingSphereDatabase.databases ConcurrentHashMap init index 
(#19444)
    
    * Adjust create databases ConcurrentHashMap index
    
    * Adjustment database name index
---
 .../infra/metadata/ShardingSphereMetaData.java             |  3 +--
 .../metadata/database/ShardingSphereDatabasesFactory.java  |  3 ++-
 .../shardingsphere/transaction/rule/TransactionRule.java   |  2 +-
 .../apache/shardingsphere/mode/manager/ContextManager.java |  4 ++--
 .../shardingsphere/mode/metadata/MetaDataContextsTest.java |  8 +++++---
 .../DatabaseCommunicationEngineFactoryTest.java            | 11 +++++++----
 .../jdbc/JDBCDatabaseCommunicationEngineTest.java          | 11 +++++++----
 .../jdbc/datasource/JDBCBackendDataSourceTest.java         | 14 ++++++++------
 .../proxy/backend/context/ProxyContextTest.java            |  9 +++++----
 .../text/admin/DatabaseAdminQueryBackendHandlerTest.java   | 13 ++++++++-----
 .../admin/DatabaseOperateBackendHandlerFactoryTest.java    | 11 +++++++----
 .../text/distsql/DistSQLBackendHandlerFactoryTest.java     |  9 ++++++---
 .../protocol/FrontDatabaseProtocolTypeFactoryTest.java     |  9 ++++++---
 .../authentication/MySQLAuthenticationEngineTest.java      | 11 ++++++-----
 .../mysql/command/MySQLCommandExecutorFactoryTest.java     |  6 +++++-
 .../binary/execute/MySQLComStmtExecuteExecutorTest.java    |  8 +++++---
 .../cases/dal/dataset/db/mysql/show_databases.xml          |  2 +-
 .../mysql/show_databases.xml                               |  2 +-
 .../mysql/show_databases.xml                               |  2 +-
 .../cases/dal/dataset/encrypt/mysql/show_databases.xml     |  2 +-
 .../dataset/readwrite_splitting/mysql/show_databases.xml   |  2 +-
 .../dataset/sharding_governance/mysql/show_databases.xml   |  2 +-
 .../cases/dal/dataset/tbl/mysql/show_databases.xml         |  2 +-
 23 files changed, 88 insertions(+), 58 deletions(-)

diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
index ba4fbf27c7d..625a1e3aaf9 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
@@ -29,7 +29,6 @@ import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Properties;
-import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * Meta data contexts.
@@ -48,7 +47,7 @@ public final class ShardingSphereMetaData {
     }
     
     public ShardingSphereMetaData(final Map<String, ShardingSphereDatabase> 
databases, final ShardingSphereRuleMetaData globalRuleMetaData, final 
ConfigurationProperties props) {
-        this.databases = new ConcurrentHashMap<>(databases.size(), 1);
+        this.databases = databases;
         databases.forEach((key, value) -> 
this.databases.put(key.toLowerCase(), value));
         this.globalRuleMetaData = globalRuleMetaData;
         this.props = props;
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabasesFactory.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabasesFactory.java
index 50e15d156c9..e9808fae23d 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabasesFactory.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabasesFactory.java
@@ -27,6 +27,7 @@ import java.sql.SQLException;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * ShardingSphere databases factory.
@@ -63,7 +64,7 @@ public final class ShardingSphereDatabasesFactory {
                                                              final 
ConfigurationProperties props, final InstanceContext instanceContext) throws 
SQLException {
         DatabaseType protocolType = 
DatabaseTypeEngine.getProtocolType(databaseConfigMap, props);
         DatabaseType storageType = 
DatabaseTypeEngine.getStorageType(databaseConfigMap);
-        Map<String, ShardingSphereDatabase> result = new 
HashMap<>(databaseConfigMap.size() + 
protocolType.getSystemDatabaseSchemaMap().size(), 1);
+        Map<String, ShardingSphereDatabase> result = new 
ConcurrentHashMap<>(databaseConfigMap.size() + 
protocolType.getSystemDatabaseSchemaMap().size(), 1);
         result.putAll(createGenericDatabases(databaseConfigMap, protocolType, 
storageType, props, instanceContext));
         result.putAll(createSystemDatabases(databaseConfigMap, protocolType));
         return result;
diff --git 
a/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-core/src/main/java/org/apache/shardingsphere/transaction/rule/TransactionRule.java
 
b/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-core/src/main/java/org/apache/shardingsphere/transaction/rule/TransactionRule.java
index eec58026a72..83738c8dd1d 100644
--- 
a/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-core/src/main/java/org/apache/shardingsphere/transaction/rule/TransactionRule.java
+++ 
b/shardingsphere-kernel/shardingsphere-transaction/shardingsphere-transaction-core/src/main/java/org/apache/shardingsphere/transaction/rule/TransactionRule.java
@@ -88,7 +88,7 @@ public final class TransactionRule implements GlobalRule, 
ResourceHeldRule<Shard
     
     @Override
     public synchronized void closeStaleResource(final String databaseName) {
-        if (!databases.containsKey(databaseName)) {
+        if (!databases.containsKey(databaseName.toLowerCase())) {
             return;
         }
         rebuildEngine();
diff --git 
a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
 
b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index e486bb9bc70..709748b14a6 100644
--- 
a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++ 
b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -390,8 +390,8 @@ public final class ContextManager implements AutoCloseable {
     }
     
     private void persistMetaData(final MetaDataContexts metaDataContexts) {
-        metaDataContexts.getMetaData().getDatabases().values().forEach(each -> 
each.getSchemas().forEach((schemaName, tables) ->
-                
metaDataContexts.getPersistService().getDatabaseMetaDataService().persistMetaData(each.getName(),
 schemaName, tables)));
+        metaDataContexts.getMetaData().getDatabases().values().forEach(
+                each -> each.getSchemas().forEach((schemaName, tables) -> 
metaDataContexts.getPersistService().getDatabaseMetaDataService().persistMetaData(each.getName(),
 schemaName, tables)));
     }
     
     /**
diff --git 
a/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsTest.java
 
b/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsTest.java
index f1676283a4c..e117d8c8584 100644
--- 
a/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsTest.java
+++ 
b/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsTest.java
@@ -30,7 +30,8 @@ import org.mockito.Answers;
 import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnitRunner;
 
-import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.Map;
 import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -45,8 +46,9 @@ public final class MetaDataContextsTest {
     
     @Test
     public void assertGetDefaultMetaData() {
-        ShardingSphereMetaData metaData = new ShardingSphereMetaData(
-                Collections.singletonMap(DefaultDatabase.LOGIC_NAME, 
database), mock(ShardingSphereRuleMetaData.class), new 
ConfigurationProperties(new Properties()));
+        Map<String, ShardingSphereDatabase> databases = new LinkedHashMap<>(1, 
1);
+        databases.put(DefaultDatabase.LOGIC_NAME, database);
+        ShardingSphereMetaData metaData = new 
ShardingSphereMetaData(databases, mock(ShardingSphereRuleMetaData.class), new 
ConfigurationProperties(new Properties()));
         assertThat(new MetaDataContexts(mock(MetaDataPersistService.class), 
metaData, 
mock(OptimizerContext.class)).getMetaData().getDatabase(DefaultDatabase.LOGIC_NAME),
 is(database));
     }
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngineFactoryTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngineFactoryTest.java
index 6738f19d334..398b1b43163 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngineFactoryTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngineFactoryTest.java
@@ -34,6 +34,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 import java.util.Collections;
+import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Properties;
 
@@ -55,10 +56,12 @@ public final class DatabaseCommunicationEngineFactoryTest 
extends ProxyContextRe
     }
     
     private Map<String, ShardingSphereDatabase> getDatabases() {
-        ShardingSphereDatabase result = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
-        when(result.getResource().getDatabaseType()).thenReturn(new 
H2DatabaseType());
-        
when(result.getRuleMetaData().getRules()).thenReturn(Collections.emptyList());
-        return Collections.singletonMap("db", result);
+        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
+        when(database.getResource().getDatabaseType()).thenReturn(new 
H2DatabaseType());
+        
when(database.getRuleMetaData().getRules()).thenReturn(Collections.emptyList());
+        Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>(1, 1);
+        result.put("db", database);
+        return result;
     }
     
     @Test
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngineTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngineTest.java
index 116d0bd2acb..c4dc7bfe1fa 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngineTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngineTest.java
@@ -65,6 +65,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
+import java.util.LinkedHashMap;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.CoreMatchers.is;
@@ -102,10 +103,12 @@ public final class JDBCDatabaseCommunicationEngineTest 
extends ProxyContextResto
     }
     
     private Map<String, ShardingSphereDatabase> mockDatabases() {
-        ShardingSphereDatabase result = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
-        when(result.getResource().getDatabaseType()).thenReturn(new 
H2DatabaseType());
-        
when(result.getRuleMetaData().getRules()).thenReturn(Collections.emptyList());
-        return Collections.singletonMap("db", result);
+        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
+        when(database.getResource().getDatabaseType()).thenReturn(new 
H2DatabaseType());
+        
when(database.getRuleMetaData().getRules()).thenReturn(Collections.emptyList());
+        Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>(1, 1);
+        result.put("db", database);
+        return result;
     }
     
     @Test
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSourceTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSourceTest.java
index 296d33c42c1..7b18c0f60af 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSourceTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSourceTest.java
@@ -40,9 +40,9 @@ import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.LinkedList;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
@@ -74,11 +74,13 @@ public final class JDBCBackendDataSourceTest extends 
ProxyContextRestorer {
     }
     
     private Map<String, ShardingSphereDatabase> createDatabases() {
-        ShardingSphereDatabase result = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
-        when(result.getName()).thenReturn("schema");
-        when(result.getResource().getDatabaseType()).thenReturn(new 
H2DatabaseType());
-        
when(result.getResource().getDataSources()).thenReturn(mockDataSources(2));
-        return Collections.singletonMap("schema", result);
+        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
+        when(database.getName()).thenReturn("schema");
+        when(database.getResource().getDatabaseType()).thenReturn(new 
H2DatabaseType());
+        
when(database.getResource().getDataSources()).thenReturn(mockDataSources(2));
+        Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>(1, 1);
+        result.put("schema", database);
+        return result;
     }
     
     private ShardingSphereRuleMetaData mockGlobalRuleMetaData() {
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
index 2cb04c77db5..e2b6378d526 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
@@ -31,7 +31,6 @@ import 
org.apache.shardingsphere.proxy.backend.exception.NoDatabaseSelectedExcep
 import org.apache.shardingsphere.proxy.backend.util.ProxyContextRestorer;
 import org.junit.Test;
 
-import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.Map;
@@ -125,8 +124,10 @@ public final class ProxyContextTest extends 
ProxyContextRestorer {
     }
     
     private Map<String, ShardingSphereDatabase> mockDatabases() {
-        ShardingSphereDatabase result = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
-        when(result.getResource().getDatabaseType()).thenReturn(new 
H2DatabaseType());
-        return Collections.singletonMap("db", result);
+        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
+        when(database.getResource().getDatabaseType()).thenReturn(new 
H2DatabaseType());
+        Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>(1, 1);
+        result.put("db", database);
+        return result;
     }
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/DatabaseAdminQueryBackendHandlerTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/DatabaseAdminQueryBackendHandlerTest.java
index 1e93c5b79c7..e582dc49a39 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/DatabaseAdminQueryBackendHandlerTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/DatabaseAdminQueryBackendHandlerTest.java
@@ -41,6 +41,7 @@ import org.junit.Test;
 import java.sql.SQLException;
 import java.util.Collections;
 import java.util.Map;
+import java.util.LinkedHashMap;
 import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -71,11 +72,13 @@ public final class DatabaseAdminQueryBackendHandlerTest 
extends ProxyContextRest
     }
     
     private Map<String, ShardingSphereDatabase> getDatabases() {
-        ShardingSphereDatabase result = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
-        when(result.getName()).thenReturn("db");
-        when(result.getResource().getDatabaseType()).thenReturn(new 
MySQLDatabaseType());
-        
when(result.getRuleMetaData().getRules()).thenReturn(Collections.emptyList());
-        return Collections.singletonMap("db", result);
+        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
+        when(database.getName()).thenReturn("db");
+        when(database.getResource().getDatabaseType()).thenReturn(new 
MySQLDatabaseType());
+        
when(database.getRuleMetaData().getRules()).thenReturn(Collections.emptyList());
+        Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>(1, 1);
+        result.put("db", database);
+        return result;
     }
     
     @Test
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/DatabaseOperateBackendHandlerFactoryTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/DatabaseOperateBackendHandlerFactoryTest.java
index dbb4fa79776..c78db33cc01 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/DatabaseOperateBackendHandlerFactoryTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/DatabaseOperateBackendHandlerFactoryTest.java
@@ -50,6 +50,7 @@ import org.mockito.junit.MockitoJUnitRunner;
 import java.sql.SQLException;
 import java.util.Collections;
 import java.util.Map;
+import java.util.LinkedHashMap;
 import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
@@ -134,10 +135,12 @@ public final class 
DatabaseOperateBackendHandlerFactoryTest extends ProxyContext
     }
     
     private Map<String, ShardingSphereDatabase> getDatabases() {
-        ShardingSphereDatabase result = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
-        when(result.getResource().getDatabaseType()).thenReturn(new 
MySQLDatabaseType());
-        
when(result.getRuleMetaData().getRules()).thenReturn(Collections.emptyList());
-        return Collections.singletonMap("db", result);
+        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
+        when(database.getResource().getDatabaseType()).thenReturn(new 
MySQLDatabaseType());
+        
when(database.getRuleMetaData().getRules()).thenReturn(Collections.emptyList());
+        Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>(1, 1);
+        result.put("db", database);
+        return result;
     }
     
     private void setGovernanceMetaDataContexts(final boolean isGovernance) {
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/DistSQLBackendHandlerFactoryTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/DistSQLBackendHandlerFactoryTest.java
index 6ae3aa165f7..083babfe98f 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/DistSQLBackendHandlerFactoryTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/DistSQLBackendHandlerFactoryTest.java
@@ -71,6 +71,7 @@ import org.mockito.junit.MockitoJUnitRunner;
 import java.sql.SQLException;
 import java.util.Collections;
 import java.util.Map;
+import java.util.LinkedHashMap;
 import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
@@ -97,9 +98,11 @@ public final class DistSQLBackendHandlerFactoryTest extends 
ProxyContextRestorer
     }
     
     private Map<String, ShardingSphereDatabase> getDatabases() {
-        ShardingSphereDatabase result = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
-        when(result.getResource().getDatabaseType()).thenReturn(new 
MySQLDatabaseType());
-        return Collections.singletonMap("db", result);
+        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
+        when(database.getResource().getDatabaseType()).thenReturn(new 
MySQLDatabaseType());
+        Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>(1, 1);
+        result.put("db", database);
+        return result;
     }
     
     @Test
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/test/java/org/apache/shardingsphere/proxy/frontend/protocol/FrontDatabaseProtocolTypeFactoryTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/test/java/org/apache/shardingsphere/proxy/frontend/protocol/FrontDatabaseProtocolTypeFactoryTest.java
index f34c558797e..c60d9bd6b59 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/test/java/org/apache/shardingsphere/proxy/frontend/protocol/FrontDatabaseProtocolTypeFactoryTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/test/java/org/apache/shardingsphere/proxy/frontend/protocol/FrontDatabaseProtocolTypeFactoryTest.java
@@ -36,6 +36,7 @@ import org.junit.Test;
 
 import java.util.Collections;
 import java.util.Map;
+import java.util.LinkedHashMap;
 import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
@@ -94,8 +95,10 @@ public final class FrontDatabaseProtocolTypeFactoryTest 
extends ProxyContextRest
     }
     
     private Map<String, ShardingSphereDatabase> mockDatabases() {
-        ShardingSphereDatabase result = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
-        when(result.getResource().getDatabaseType()).thenReturn(new 
MySQLDatabaseType());
-        return Collections.singletonMap(DefaultDatabase.LOGIC_NAME, result);
+        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
+        when(database.getResource().getDatabaseType()).thenReturn(new 
MySQLDatabaseType());
+        Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>(1, 1);
+        result.put(DefaultDatabase.LOGIC_NAME, database);
+        return result;
     }
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java
index 581e78c8ac5..62b6a933908 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java
@@ -49,9 +49,10 @@ import org.junit.Test;
 import java.lang.reflect.Field;
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
-import java.util.Collections;
 import java.util.Optional;
 import java.util.Properties;
+import java.util.Map;
+import java.util.LinkedHashMap;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
@@ -160,10 +161,10 @@ public final class MySQLAuthenticationEngineTest extends 
ProxyContextRestorer {
     
     private void setMetaDataContexts() {
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
-        MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new 
ShardingSphereMetaData(Collections.singletonMap("sharding_db", 
mock(ShardingSphereDatabase.class)), mock(ShardingSphereRuleMetaData.class),
-                        new ConfigurationProperties(new Properties())),
-                mock(OptimizerContext.class));
+        Map<String, ShardingSphereDatabase> databases = new LinkedHashMap<>(1, 
1);
+        databases.put("sharding_db", mock(ShardingSphereDatabase.class));
+        MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData(databases, mock(ShardingSphereRuleMetaData.class),
+                new ConfigurationProperties(new Properties())), 
mock(OptimizerContext.class));
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
     }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java
index 882a7822c88..5b0a2ac9e91 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java
@@ -66,6 +66,8 @@ import org.mockito.junit.MockitoJUnitRunner;
 
 import java.sql.SQLException;
 import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.Map;
 import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
@@ -91,9 +93,11 @@ public final class MySQLCommandExecutorFactoryTest extends 
ProxyContextRestorer
         
when(connectionSession.getBackendConnection()).thenReturn(backendConnection);
         
when(backendConnection.getConnectionSession()).thenReturn(connectionSession);
         ShardingSphereDatabase database = mockDatabase();
+        Map<String, ShardingSphereDatabase> databases = new LinkedHashMap<>(1, 
1);
+        databases.put("logic_db", database);
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new 
ShardingSphereMetaData(Collections.singletonMap("logic_db", database), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())),
+                new ShardingSphereMetaData(databases, 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())),
                 mock(OptimizerContext.class, RETURNS_DEEP_STUBS));
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
index 061053fd882..ca2c39a5bab 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
@@ -78,6 +78,8 @@ import java.sql.Types;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.Optional;
+import java.util.Map;
+import java.util.LinkedHashMap;
 import java.util.Properties;
 import java.util.function.Supplier;
 
@@ -110,11 +112,11 @@ public final class MySQLComStmtExecuteExecutorTest 
extends ProxyContextRestorer
     
     @Before
     public void setUp() {
-        ShardingSphereDatabase database = mockDatabase();
+        Map<String, ShardingSphereDatabase> databases = new LinkedHashMap<>(1, 
1);
+        databases.put("logic_db", mockDatabase());
         ShardingSphereRuleMetaData metaData = 
mock(ShardingSphereRuleMetaData.class);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new 
ShardingSphereMetaData(Collections.singletonMap("logic_db", database), 
metaData, new ConfigurationProperties(new Properties())),
-                mock(OptimizerContext.class, RETURNS_DEEP_STUBS));
+                new ShardingSphereMetaData(databases, metaData, new 
ConfigurationProperties(new Properties())), mock(OptimizerContext.class, 
RETURNS_DEEP_STUBS));
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/db/mysql/show_databases.xml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/db/mysql/show_databases.xml
index 43751a02ca3..e781a7b14f8 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/db/mysql/show_databases.xml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/db/mysql/show_databases.xml
@@ -20,8 +20,8 @@
         <column name="schema_name" />
     </metadata>
     <row values="db" />
-    <row values="mysql" />
     <row values="information_schema" />
     <row values="performance_schema" />
+    <row values="mysql" />
     <row values="sys" />
 </dataset>
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/dbtbl_with_readwrite_splitting/mysql/show_databases.xml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/dbtbl_with_readwrite_splitting/mysql/show_databases.xml
index 7c09a1af6d9..9e95dd770e9 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/dbtbl_with_readwrite_splitting/mysql/show_databases.xml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/dbtbl_with_readwrite_splitting/mysql/show_databases.xml
@@ -20,8 +20,8 @@
         <column name="schema_name" />
     </metadata>
     <row values="dbtbl_with_readwrite_splitting" />
-    <row values="mysql" />
     <row values="information_schema" />
     <row values="performance_schema" />
+    <row values="mysql" />
     <row values="sys" />
 </dataset>
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/dbtbl_with_readwrite_splitting_and_encrypt/mysql/show_databases.xml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/dbtbl_with_readwrite_splitting_and_encrypt/mysql/show_databases.xml
index 8f71dab57ca..6c82fe5a8ca 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/dbtbl_with_readwrite_splitting_and_encrypt/mysql/show_databases.xml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/dbtbl_with_readwrite_splitting_and_encrypt/mysql/show_databases.xml
@@ -20,8 +20,8 @@
         <column name="schema_name" />
     </metadata>
     <row values="dbtbl_with_readwrite_splitting_and_encrypt" />
-    <row values="mysql" />
     <row values="information_schema" />
     <row values="performance_schema" />
+    <row values="mysql" />
     <row values="sys" />
 </dataset>
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/encrypt/mysql/show_databases.xml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/encrypt/mysql/show_databases.xml
index a1b882c67b9..52ed5f58683 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/encrypt/mysql/show_databases.xml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/encrypt/mysql/show_databases.xml
@@ -20,8 +20,8 @@
         <column name="schema_name" />
     </metadata>
     <row values="encrypt" />
-    <row values="mysql" />
     <row values="information_schema" />
     <row values="performance_schema" />
+    <row values="mysql" />
     <row values="sys" />
 </dataset>
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/readwrite_splitting/mysql/show_databases.xml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/readwrite_splitting/mysql/show_databases.xml
index 948283ae84a..fe5ff48cdb5 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/readwrite_splitting/mysql/show_databases.xml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/readwrite_splitting/mysql/show_databases.xml
@@ -20,8 +20,8 @@
         <column name="schema_name" />
     </metadata>
     <row values="readwrite_splitting" />
-    <row values="mysql" />
     <row values="information_schema" />
     <row values="performance_schema" />
+    <row values="mysql" />
     <row values="sys" />
 </dataset>
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/sharding_governance/mysql/show_databases.xml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/sharding_governance/mysql/show_databases.xml
index 314e6dfcd63..4bd1cb613dc 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/sharding_governance/mysql/show_databases.xml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/sharding_governance/mysql/show_databases.xml
@@ -20,8 +20,8 @@
         <column name="schema_name" />
     </metadata>
     <row values="sharding_governance" />
-    <row values="mysql" />
     <row values="information_schema" />
     <row values="performance_schema" />
+    <row values="mysql" />
     <row values="sys" />
 </dataset>
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/tbl/mysql/show_databases.xml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/tbl/mysql/show_databases.xml
index b7eb1af6f4e..e60d4eb0a15 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/tbl/mysql/show_databases.xml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dal/dataset/tbl/mysql/show_databases.xml
@@ -20,8 +20,8 @@
         <column name="schema_name" />
     </metadata>
     <row values="tbl" />
-    <row values="mysql" />
     <row values="information_schema" />
     <row values="performance_schema" />
+    <row values="mysql" />
     <row values="sys" />
 </dataset>

Reply via email to