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 5f68d723bfe Move ProxyContext.getAllDatabaseNames() to ContextManager
(#36839)
5f68d723bfe is described below
commit 5f68d723bfe8582a9a63d4ccf06b700612088108
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Oct 10 17:35:58 2025 +0800
Move ProxyContext.getAllDatabaseNames() to ContextManager (#36839)
---
.../shardingsphere/mode/manager/ContextManager.java | 10 ++++++++++
.../mode/manager/ContextManagerTest.java | 5 +++++
.../proxy/backend/context/ProxyContext.java | 10 ----------
.../executor/AbstractDatabaseMetaDataExecutor.java | 6 +++---
.../type/UnicastDatabaseProxyBackendHandler.java | 2 +-
.../proxy/backend/context/ProxyContextTest.java | 21 ---------------------
.../handler/ProxyBackendHandlerFactoryTest.java | 2 +-
.../DefaultDatabaseMetaDataExecutorTest.java | 2 +-
.../export/ExportStorageNodesExecutorTest.java | 3 +--
.../handler/admin/MySQLAdminExecutorCreator.java | 2 +-
.../admin/executor/ShowDatabasesExecutor.java | 2 +-
.../admin/executor/UnicastResourceShowExecutor.java | 2 +-
.../SelectInformationSchemataExecutor.java | 2 +-
.../admin/MySQLAdminExecutorCreatorTest.java | 4 ++--
.../admin/executor/ShowDatabasesExecutorTest.java | 6 +-----
.../SelectInformationSchemataExecutorTest.java | 5 +----
16 files changed, 30 insertions(+), 54 deletions(-)
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index 1b9e099af92..9a221c35cd8 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -53,6 +53,7 @@ import java.sql.SQLException;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
+import java.util.stream.Collectors;
/**
* Context manager.
@@ -87,6 +88,15 @@ public final class ContextManager implements AutoCloseable {
ContextManagerLifecycleListenerFactory.getListeners(this).forEach(each
-> each.onInitialized(this));
}
+ /**
+ * Get all database names.
+ *
+ * @return all database names
+ */
+ public Collection<String> getAllDatabaseNames() {
+ return
metaDataContexts.getMetaData().getAllDatabases().stream().map(ShardingSphereDatabase::getName).collect(Collectors.toList());
+ }
+
/**
* Get database.
*
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 8bea86dfcb3..5cd0a317c30 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
@@ -115,6 +115,11 @@ class ContextManagerTest {
return result;
}
+ @Test
+ void assertGetAllDatabaseNames() {
+ assertThat(contextManager.getAllDatabaseNames(),
is(Collections.singletonList("foo_db")));
+ }
+
@Test
void assertGetDatabase() {
assertNotNull(contextManager.getDatabase("foo_db"));
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/context/ProxyContext.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/context/ProxyContext.java
index 8bdca537fdb..70b53d5e5d8 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/context/ProxyContext.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/context/ProxyContext.java
@@ -28,7 +28,6 @@ import org.apache.shardingsphere.mode.manager.ContextManager;
import
org.apache.shardingsphere.proxy.backend.connector.jdbc.datasource.JDBCBackendDataSource;
import java.util.Collection;
-import java.util.stream.Collectors;
/**
* Proxy context.
@@ -71,15 +70,6 @@ public final class ProxyContext {
return
contextManager.getMetaDataContexts().getMetaData().containsDatabase(name);
}
- /**
- * Get all database names.
- *
- * @return all database names
- */
- public Collection<String> getAllDatabaseNames() {
- return
contextManager.getMetaDataContexts().getMetaData().getAllDatabases().stream().map(ShardingSphereDatabase::getName).collect(Collectors.toList());
- }
-
/**
* Get database type.
*
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/AbstractDatabaseMetaDataExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/AbstractDatabaseMetaDataExecutor.java
index 95f16274eb8..e4f49aa1bd7 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/AbstractDatabaseMetaDataExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/AbstractDatabaseMetaDataExecutor.java
@@ -146,11 +146,11 @@ public abstract class AbstractDatabaseMetaDataExecutor
implements DatabaseAdminQ
@Override
protected Collection<String> getDatabaseNames(final ConnectionSession
connectionSession) {
ShardingSphereDatabase database =
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabase(connectionSession.getCurrentDatabaseName());
- if (null != database && isAuthorized(database.getName(),
connectionSession.getConnectionContext().getGrantee()) &&
AbstractDatabaseMetaDataExecutor.hasDataSource(database.getName())) {
+ if (null != database && isAuthorized(database.getName(),
connectionSession.getConnectionContext().getGrantee()) &&
hasDataSource(database.getName())) {
return Collections.singleton(database.getName());
}
- Collection<String> databaseNames =
ProxyContext.getInstance().getAllDatabaseNames().stream().filter(each ->
isAuthorized(each, connectionSession.getConnectionContext().getGrantee()))
-
.filter(AbstractDatabaseMetaDataExecutor::hasDataSource).collect(Collectors.toList());
+ Collection<String> databaseNames =
ProxyContext.getInstance().getContextManager().getAllDatabaseNames().stream()
+ .filter(each -> isAuthorized(each,
connectionSession.getConnectionContext().getGrantee())).filter(AbstractDatabaseMetaDataExecutor::hasDataSource).collect(Collectors.toList());
return databaseNames.isEmpty() ? Collections.emptyList() :
Collections.singletonList(databaseNames.iterator().next());
}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/data/type/UnicastDatabaseProxyBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/data/type/UnicastDatabaseProxyBackendHandler.java
index 2eaa61599ed..edbd5870603 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/data/type/UnicastDatabaseProxyBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/data/type/UnicastDatabaseProxyBackendHandler.java
@@ -65,7 +65,7 @@ public final class UnicastDatabaseProxyBackendHandler
implements DatabaseProxyBa
}
private String getFirstDatabaseName() {
- Collection<String> databaseNames =
ProxyContext.getInstance().getAllDatabaseNames();
+ Collection<String> databaseNames =
ProxyContext.getInstance().getContextManager().getAllDatabaseNames();
ShardingSpherePreconditions.checkNotEmpty(databaseNames,
NoDatabaseSelectedException::new);
AuthorityRule authorityRule =
queryContext.getMetaData().getGlobalRuleMetaData().getSingleRule(AuthorityRule.class);
Optional<ShardingSpherePrivileges> privileges =
authorityRule.findPrivileges(connectionSession.getConnectionContext().getGrantee());
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
index 67674ee2867..717bad8e98a 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
@@ -35,12 +35,8 @@ import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import java.util.Collection;
import java.util.Collections;
-import java.util.HashSet;
import java.util.Properties;
-import java.util.stream.Collectors;
-import java.util.stream.IntStream;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -52,8 +48,6 @@ import static org.mockito.Mockito.when;
class ProxyContextTest {
- private static final String SCHEMA_PATTERN = "db_%s";
-
private final DatabaseType databaseType =
TypedSPILoader.getService(DatabaseType.class, "FIXTURE");
private ContextManager currentContextManager;
@@ -90,21 +84,6 @@ class ProxyContextTest {
assertFalse(ProxyContext.getInstance().databaseExists("db_1"));
}
- @Test
- void assertGetAllDatabaseNames() {
- Collection<ShardingSphereDatabase> databases = createDatabases();
- ContextManager contextManager = mock(ContextManager.class,
RETURNS_DEEP_STUBS);
- ShardingSphereMetaData metaData = new
ShardingSphereMetaData(databases, mock(), mock(), new
ConfigurationProperties(new Properties()));
- MetaDataContexts metaDataContexts = new MetaDataContexts(metaData,
ShardingSphereStatisticsFactory.create(metaData, new
ShardingSphereStatistics()));
-
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
- ProxyContext.init(contextManager);
- assertThat(new
HashSet<>(ProxyContext.getInstance().getAllDatabaseNames()),
is(databases.stream().map(ShardingSphereDatabase::getName).collect(Collectors.toSet())));
- }
-
- private Collection<ShardingSphereDatabase> createDatabases() {
- return IntStream.range(0, 10).mapToObj(i -> new
ShardingSphereDatabase(String.format(SCHEMA_PATTERN, i), databaseType, mock(),
mock(), Collections.emptyList())).collect(Collectors.toList());
- }
-
private ShardingSphereDatabase mockDatabase() {
ShardingSphereDatabase result = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
when(result.getName()).thenReturn("db");
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
index ff540e73136..2b9100c775d 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
@@ -185,7 +185,7 @@ class ProxyBackendHandlerFactoryTest {
void assertNewInstanceWithQuery() throws SQLException {
String sql = "SELECT * FROM t_order limit 1";
ProxyContext proxyContext = ProxyContext.getInstance();
- when(proxyContext.getAllDatabaseNames()).thenReturn(new
HashSet<>(Collections.singletonList("db")));
+
when(proxyContext.getContextManager().getAllDatabaseNames()).thenReturn(new
HashSet<>(Collections.singletonList("db")));
when(proxyContext.getContextManager().getDatabase("db").containsDataSource()).thenReturn(true);
SQLStatement sqlStatement = ProxySQLComQueryParser.parse(sql,
databaseType, connectionSession);
ProxyBackendHandler actual =
ProxyBackendHandlerFactory.newInstance(databaseType, sql, sqlStatement,
connectionSession, new HintValueContext());
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DefaultDatabaseMetaDataExecutorTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DefaultDatabaseMetaDataExecutorTest.java
index e52d9d068ee..9f0e572453b 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DefaultDatabaseMetaDataExecutorTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DefaultDatabaseMetaDataExecutorTest.java
@@ -155,7 +155,7 @@ class DefaultDatabaseMetaDataExecutorTest {
MetaDataContexts metaDataContexts = new MetaDataContexts(metaData,
ShardingSphereStatisticsFactory.create(metaData, new
ShardingSphereStatistics()));
when(result.getMetaDataContexts()).thenReturn(metaDataContexts);
when(result.getDatabase("auth_db")).thenReturn(database);
-
when(ProxyContext.getInstance().getAllDatabaseNames()).thenReturn(Collections.singleton("auth_db"));
+
when(result.getAllDatabaseNames()).thenReturn(Collections.singleton("auth_db"));
return result;
}
}
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/export/ExportStorageNodesExecutorTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/export/ExportStorageNodesExecutorTest.java
index 3947832ed10..189b1133b36 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/export/ExportStorageNodesExecutorTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/export/ExportStorageNodesExecutorTest.java
@@ -93,7 +93,6 @@ class ExportStorageNodesExecutorTest {
void assertExecuteWithWrongDatabaseName() {
ContextManager contextManager = mockEmptyContextManager();
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getAllDatabaseNames()).thenReturn(Collections.singleton("empty_metadata"));
ExportStorageNodesStatement sqlStatement = new
ExportStorageNodesStatement("foo", null);
assertThrows(IllegalArgumentException.class, () -> new
ExportStorageNodesExecutor().getRows(sqlStatement, contextManager));
}
@@ -102,7 +101,6 @@ class ExportStorageNodesExecutorTest {
void assertExecuteWithEmptyMetaData() {
ContextManager contextManager = mockEmptyContextManager();
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getAllDatabaseNames()).thenReturn(Collections.singleton("empty_metadata"));
ExportStorageNodesStatement sqlStatement = new
ExportStorageNodesStatement(null, null);
Collection<LocalDataQueryResultRow> actual = new
ExportStorageNodesExecutor().getRows(sqlStatement, contextManager);
assertThat(actual.size(), is(1));
@@ -116,6 +114,7 @@ class ExportStorageNodesExecutorTest {
Collections.emptyList(), new
ResourceMetaData(Collections.emptyMap()), new
RuleMetaData(Collections.emptyList()), new ConfigurationProperties(new
Properties()));
MetaDataContexts metaDataContexts = new MetaDataContexts(metaData, new
ShardingSphereStatistics());
when(result.getMetaDataContexts()).thenReturn(metaDataContexts);
+
when(result.getAllDatabaseNames()).thenReturn(Collections.singleton("empty_metadata"));
return result;
}
diff --git
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
index c43655d45fa..792d47fee3a 100644
---
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
+++
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
@@ -172,7 +172,7 @@ public final class MySQLAdminExecutorCreator implements
DatabaseAdminExecutorCre
}
private boolean hasNoResource() {
- Collection<String> databaseNames =
ProxyContext.getInstance().getAllDatabaseNames();
+ Collection<String> databaseNames =
ProxyContext.getInstance().getContextManager().getAllDatabaseNames();
if (databaseNames.isEmpty()) {
return true;
}
diff --git
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowDatabasesExecutor.java
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowDatabasesExecutor.java
index 203f19870a3..4a72fb644a7 100644
---
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowDatabasesExecutor.java
+++
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowDatabasesExecutor.java
@@ -58,7 +58,7 @@ public final class ShowDatabasesExecutor implements
DatabaseAdminQueryExecutor {
private Collection<LocalDataQueryResultRow> getDatabaseNames(final
ConnectionSession connectionSession) {
AuthorityRule authorityRule =
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getSingleRule(AuthorityRule.class);
AuthorityChecker authorityChecker = new
AuthorityChecker(authorityRule,
connectionSession.getConnectionContext().getGrantee());
- return
ProxyContext.getInstance().getAllDatabaseNames().stream().sorted()
+ return
ProxyContext.getInstance().getContextManager().getAllDatabaseNames().stream().sorted()
.filter(each -> checkLikePattern(each) &&
authorityChecker.isAuthorized(each)).map(LocalDataQueryResultRow::new).collect(Collectors.toList());
}
diff --git
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/UnicastResourceShowExecutor.java
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/UnicastResourceShowExecutor.java
index ba3fe45dc76..553ee085215 100644
---
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/UnicastResourceShowExecutor.java
+++
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/UnicastResourceShowExecutor.java
@@ -93,7 +93,7 @@ public final class UnicastResourceShowExecutor implements
DatabaseAdminQueryExec
}
private String getFirstDatabaseName() {
- Collection<String> databaseNames =
ProxyContext.getInstance().getAllDatabaseNames();
+ Collection<String> databaseNames =
ProxyContext.getInstance().getContextManager().getAllDatabaseNames();
if (databaseNames.isEmpty()) {
throw new NoDatabaseSelectedException();
}
diff --git
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/information/SelectInformationSchemataExecutor.java
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/information/SelectInformationSchemataExecutor.java
index bce94fc585e..d992a6c79b5 100644
---
a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/information/SelectInformationSchemataExecutor.java
+++
b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/information/SelectInformationSchemataExecutor.java
@@ -87,7 +87,7 @@ public final class SelectInformationSchemataExecutor extends
DefaultDatabaseMeta
@Override
protected Collection<String> getDatabaseNames(final ConnectionSession
connectionSession) {
- Collection<String> databaseNames =
ProxyContext.getInstance().getAllDatabaseNames().stream()
+ Collection<String> databaseNames =
ProxyContext.getInstance().getContextManager().getAllDatabaseNames().stream()
.filter(each -> isAuthorized(each,
connectionSession.getConnectionContext().getGrantee())).collect(Collectors.toList());
SCHEMA_WITHOUT_DATA_SOURCE.addAll(databaseNames.stream().filter(each
-> !hasDataSource(each)).collect(Collectors.toSet()));
Collection<String> result =
databaseNames.stream().filter(AbstractDatabaseMetaDataExecutor::hasDataSource).collect(Collectors.toList());
diff --git
a/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
b/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
index 8bc896f59f4..95344d0e7d6 100644
---
a/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
+++
b/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
@@ -288,7 +288,7 @@ class MySQLAdminExecutorCreatorTest {
ResourceMetaData resourceMetaData = new
ResourceMetaData(Collections.singletonMap("ds", new MockedDataSource()));
ShardingSphereDatabase database = new ShardingSphereDatabase("db_0",
databaseType, resourceMetaData, mock(RuleMetaData.class),
Collections.emptyList());
initProxyContext(Collections.singleton(database));
-
when(ProxyContext.getInstance().getAllDatabaseNames()).thenReturn(Collections.singleton("db_0"));
+
when(ProxyContext.getInstance().getContextManager().getAllDatabaseNames()).thenReturn(Collections.singleton("db_0"));
when(ProxyContext.getInstance().getContextManager().getDatabase("db_0")).thenReturn(database);
SelectStatement selectStatement = mock(SelectStatement.class);
when(selectStatement.getFrom()).thenReturn(Optional.empty());
@@ -306,7 +306,7 @@ class MySQLAdminExecutorCreatorTest {
ResourceMetaData resourceMetaData = new
ResourceMetaData(Collections.singletonMap("ds_0", new MockedDataSource()));
ShardingSphereDatabase database = new ShardingSphereDatabase("db_0",
databaseType, resourceMetaData, mock(RuleMetaData.class),
Collections.emptyList());
initProxyContext(Collections.singleton(database));
-
when(ProxyContext.getInstance().getAllDatabaseNames()).thenReturn(Collections.singleton("db_0"));
+
when(ProxyContext.getInstance().getContextManager().getAllDatabaseNames()).thenReturn(Collections.singleton("db_0"));
when(ProxyContext.getInstance().getContextManager().getDatabase("db_0")).thenReturn(database);
SelectStatement selectStatement = mock(SelectStatement.class);
when(selectStatement.getFrom()).thenReturn(Optional.empty());
diff --git
a/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowDatabasesExecutorTest.java
b/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowDatabasesExecutorTest.java
index 9cfd3245042..bba333c7517 100644
---
a/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowDatabasesExecutorTest.java
+++
b/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowDatabasesExecutorTest.java
@@ -71,7 +71,6 @@ class ShowDatabasesExecutorTest {
void assertExecute() throws SQLException {
ContextManager contextManager = mockContextManager();
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getAllDatabaseNames()).thenReturn(IntStream.range(0,
10).mapToObj(each -> String.format("database_%s",
each)).collect(Collectors.toList()));
ShowDatabasesExecutor executor = new ShowDatabasesExecutor(new
MySQLShowDatabasesStatement(databaseType, null));
executor.execute(mockConnectionSession());
QueryResultMetaData queryResultMetaData =
executor.getQueryResultMetaData();
@@ -90,7 +89,6 @@ class ShowDatabasesExecutorTest {
MySQLShowDatabasesStatement showDatabasesStatement = new
MySQLShowDatabasesStatement(databaseType, showFilterSegment);
ContextManager contextManager = mockContextManager();
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getAllDatabaseNames()).thenReturn(IntStream.range(0,
10).mapToObj(each -> String.format("database_%s",
each)).collect(Collectors.toList()));
ShowDatabasesExecutor executor = new
ShowDatabasesExecutor(showDatabasesStatement);
executor.execute(mockConnectionSession());
assertThat(getActual(executor), is(getExpected()));
@@ -122,7 +120,6 @@ class ShowDatabasesExecutorTest {
MySQLShowDatabasesStatement showDatabasesStatement = new
MySQLShowDatabasesStatement(databaseType, showFilterSegment);
ContextManager contextManager = mockContextManager();
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getAllDatabaseNames()).thenReturn(IntStream.range(0,
10).mapToObj(each -> String.format("database_%s",
each)).collect(Collectors.toList()));
ShowDatabasesExecutor executor = new
ShowDatabasesExecutor(showDatabasesStatement);
executor.execute(mockConnectionSession());
assertThat(executor.getQueryResultMetaData().getColumnCount(), is(1));
@@ -142,7 +139,6 @@ class ShowDatabasesExecutorTest {
MySQLShowDatabasesStatement showDatabasesStatement = new
MySQLShowDatabasesStatement(databaseType, showFilterSegment);
ContextManager contextManager = mockContextManager();
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getAllDatabaseNames()).thenReturn(IntStream.range(0,
10).mapToObj(each -> String.format("database_%s",
each)).collect(Collectors.toList()));
ShowDatabasesExecutor executor = new
ShowDatabasesExecutor(showDatabasesStatement);
executor.execute(mockConnectionSession());
assertThat(executor.getQueryResultMetaData().getColumnCount(), is(1));
@@ -162,7 +158,6 @@ class ShowDatabasesExecutorTest {
MySQLShowDatabasesStatement showDatabasesStatement = new
MySQLShowDatabasesStatement(databaseType, showFilterSegment);
ContextManager contextManager = mockContextManager();
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getAllDatabaseNames()).thenReturn(IntStream.range(0,
10).mapToObj(each -> String.format("database_%s",
each)).collect(Collectors.toList()));
ShowDatabasesExecutor executor = new
ShowDatabasesExecutor(showDatabasesStatement);
executor.execute(mockConnectionSession());
assertThat(executor.getQueryResultMetaData().getColumnCount(), is(1));
@@ -180,6 +175,7 @@ class ShowDatabasesExecutorTest {
ShardingSphereMetaData metaData = new
ShardingSphereMetaData(createDatabases(), mock(), globalRuleMetaData, mock());
MetaDataContexts metaDataContexts = new MetaDataContexts(metaData,
ShardingSphereStatisticsFactory.create(metaData, new
ShardingSphereStatistics()));
when(result.getMetaDataContexts()).thenReturn(metaDataContexts);
+ when(result.getAllDatabaseNames()).thenReturn(IntStream.range(0,
10).mapToObj(each -> String.format("database_%s",
each)).collect(Collectors.toList()));
return result;
}
diff --git
a/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/information/SelectInformationSchemataExecutorTest.java
b/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/information/SelectInformationSchemataExecutorTest.java
index 5b5f5fc6574..60e5a83ba2b 100644
---
a/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/information/SelectInformationSchemataExecutorTest.java
+++
b/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/information/SelectInformationSchemataExecutorTest.java
@@ -100,7 +100,6 @@ class SelectInformationSchemataExecutorTest {
void assertExecuteWithUnauthorizedDatabase() throws SQLException {
ContextManager contextManager =
mockContextManager(createDatabase("no_auth_db"));
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getAllDatabaseNames()).thenReturn(Collections.singleton("no_auth_db"));
SelectInformationSchemataExecutor executor = new
SelectInformationSchemataExecutor(statement, sql, Collections.emptyList());
executor.execute(connectionSession);
assertThat(executor.getQueryResultMetaData().getColumnCount(), is(0));
@@ -120,7 +119,6 @@ class SelectInformationSchemataExecutorTest {
ShardingSphereDatabase database =
createDatabase(expectedResultSetMap);
ContextManager contextManager = mockContextManager(database);
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getAllDatabaseNames()).thenReturn(Collections.singleton("auth_db"));
SelectInformationSchemataExecutor executor = new
SelectInformationSchemataExecutor(statement, sql, Collections.emptyList());
executor.execute(connectionSession);
assertThat(executor.getQueryResultMetaData().getColumnCount(),
is(2));
@@ -136,7 +134,6 @@ class SelectInformationSchemataExecutorTest {
void assertExecuteWithAuthorizedDatabaseAndEmptyResource() throws
SQLException {
ContextManager contextManager =
mockContextManager(createDatabase("auth_db"));
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getAllDatabaseNames()).thenReturn(Collections.singleton("auth_db"));
SelectInformationSchemataExecutor executor = new
SelectInformationSchemataExecutor(statement, sql, Collections.emptyList());
executor.execute(connectionSession);
assertThat(executor.getQueryResultMetaData().getColumnCount(), is(2));
@@ -150,7 +147,6 @@ class SelectInformationSchemataExecutorTest {
void assertExecuteWithoutDatabase() throws SQLException {
ContextManager contextManager = mockContextManager();
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getAllDatabaseNames()).thenReturn(Collections.emptyList());
SelectInformationSchemataExecutor executor = new
SelectInformationSchemataExecutor(statement, sql, Collections.emptyList());
executor.execute(connectionSession);
assertThat(executor.getQueryResultMetaData().getColumnCount(), is(0));
@@ -168,6 +164,7 @@ class SelectInformationSchemataExecutorTest {
for (ShardingSphereDatabase each : databases) {
when(result.getDatabase(each.getName())).thenReturn(each);
}
+
when(result.getAllDatabaseNames()).thenReturn(Arrays.stream(databases).map(ShardingSphereDatabase::getName).collect(Collectors.toList()));
return result;
}