This is an automated email from the ASF dual-hosted git repository.
panjuan 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 4ad18d4c6e3 Move ProxyContext.getDatabase to ContextManager (#30009)
4ad18d4c6e3 is described below
commit 4ad18d4c6e30616da901e48c22d4040a2f0df6e7
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Feb 6 15:16:39 2024 +0800
Move ProxyContext.getDatabase to ContextManager (#30009)
---
.../mode/manager/ContextManager.java | 17 ++++++++++
.../mode/manager/ContextManagerTest.java | 24 ++++++++++++++
.../proxy/backend/connector/DatabaseConnector.java | 2 +-
.../connector/DatabaseConnectorFactory.java | 2 +-
.../proxy/backend/connector/ProxySQLExecutor.java | 4 +--
.../proxy/backend/context/ProxyContext.java | 16 ---------
.../backend/handler/ProxySQLComQueryParser.java | 2 +-
.../admin/DatabaseAdminQueryBackendHandler.java | 2 +-
.../executor/AbstractDatabaseMetaDataExecutor.java | 2 +-
.../data/impl/UnicastDatabaseBackendHandler.java | 5 +--
.../distsql/DistSQLQueryBackendHandler.java | 2 +-
.../distsql/DistSQLUpdateBackendHandler.java | 2 +-
.../ral/queryable/ExportMetaDataExecutor.java | 2 +-
.../updatable/RefreshDatabaseMetaDataExecutor.java | 3 +-
.../YamlDatabaseConfigurationImportExecutor.java | 2 +-
.../connector/DatabaseConnectorFactoryTest.java | 3 +-
.../backend/connector/DatabaseConnectorTest.java | 6 ++--
.../proxy/backend/context/ProxyContextTest.java | 38 +---------------------
.../handler/ProxyBackendHandlerFactoryTest.java | 2 +-
.../DatabaseAdminQueryBackendHandlerTest.java | 2 +-
.../DefaultDatabaseMetaDataExecutorTest.java | 2 +-
.../impl/UnicastDatabaseBackendHandlerTest.java | 4 +--
.../distsql/DistSQLBackendHandlerFactoryTest.java | 6 ++--
.../ral/QueryableRALBackendHandlerTest.java | 3 +-
.../ral/queryable/ExportMetaDataExecutorTest.java | 2 +-
.../updatable/RefreshTableMetaDataUpdaterTest.java | 4 +--
.../UnregisterStorageUnitExecutorTest.java | 6 ++--
.../handler/admin/MySQLAdminExecutorCreator.java | 4 +--
.../handler/admin/executor/ShowTablesExecutor.java | 6 ++--
.../executor/UnicastResourceShowExecutor.java | 4 +--
.../admin/MySQLAdminExecutorCreatorTest.java | 6 ++--
.../admin/executor/ShowTablesExecutorTest.java | 7 +---
.../SelectInformationSchemataExecutorTest.java | 4 ++-
.../postgresql/command/query/extended/Portal.java | 2 +-
.../describe/PostgreSQLComDescribeExecutor.java | 4 +--
.../command/query/extended/PortalTest.java | 8 ++---
.../bind/PostgreSQLComBindExecutorTest.java | 4 +--
.../PostgreSQLComDescribeExecutorTest.java | 14 ++------
38 files changed, 101 insertions(+), 127 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 4ff07e65a48..a8127e7a653 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
@@ -17,12 +17,16 @@
package org.apache.shardingsphere.mode.manager;
+import com.google.common.base.Strings;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
import
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
+import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
+import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.NoDatabaseSelectedException;
+import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.UnknownDatabaseException;
import org.apache.shardingsphere.infra.executor.kernel.ExecutorEngine;
import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
@@ -99,6 +103,19 @@ public final class ContextManager implements AutoCloseable {
this.metaDataContexts.set(metaDataContexts);
}
+ /**
+ * Get database.
+ *
+ * @param name database name
+ * @return got database
+ */
+ public ShardingSphereDatabase getDatabase(final String name) {
+ ShardingSpherePreconditions.checkState(!Strings.isNullOrEmpty(name),
NoDatabaseSelectedException::new);
+ ShardingSphereMetaData metaData = getMetaDataContexts().getMetaData();
+
ShardingSpherePreconditions.checkState(metaData.containsDatabase(name), () ->
new UnknownDatabaseException(name));
+ return metaData.getDatabase(name);
+ }
+
/**
* Get storage units.
*
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 8b907de9ea5..bbcd697b304 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
@@ -24,6 +24,8 @@ import
org.apache.shardingsphere.infra.database.core.DefaultDatabase;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.datanode.DataNode;
import
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
+import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.NoDatabaseSelectedException;
+import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.UnknownDatabaseException;
import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
@@ -64,6 +66,8 @@ import java.util.stream.Collectors;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
@@ -221,6 +225,26 @@ class ContextManagerTest {
assertThat(actual.getUsername(), is("test"));
}
+ @Test
+ void assertGetDatabaseWithNull() {
+ assertThrows(NoDatabaseSelectedException.class, () ->
contextManager.getDatabase(null));
+ }
+
+ @Test
+ void assertGetDatabaseWithEmptyString() {
+ assertThrows(NoDatabaseSelectedException.class, () ->
contextManager.getDatabase(""));
+ }
+
+ @Test
+ void assertGetDatabaseWhenNotExisted() {
+ assertThrows(UnknownDatabaseException.class, () ->
contextManager.getDatabase("bar_db"));
+ }
+
+ @Test
+ void assertGetDatabase() {
+ assertNotNull(contextManager.getDatabase("foo_db"));
+ }
+
@Test
void assertAlterRuleConfiguration() {
ResourceMetaData resourceMetaData = mock(ResourceMetaData.class,
RETURNS_DEEP_STUBS);
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.java
index fe62de1687d..7bfa9e62012 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.java
@@ -128,7 +128,7 @@ public final class DatabaseConnector implements
DatabaseBackendHandler {
}
private void failedIfBackendNotReady(final ConnectionSession
connectionSession, final SQLStatementContext sqlStatementContext) {
- ShardingSphereDatabase database =
ProxyContext.getInstance().getDatabase(connectionSession.getDatabaseName());
+ ShardingSphereDatabase database =
ProxyContext.getInstance().getContextManager().getDatabase(connectionSession.getDatabaseName());
boolean isSystemSchema =
SystemSchemaUtils.containsSystemSchema(sqlStatementContext.getDatabaseType(),
sqlStatementContext.getTablesContext().getSchemaNames(), database);
ShardingSpherePreconditions.checkState(isSystemSchema ||
database.containsDataSource(), () -> new
StorageUnitNotExistedException(connectionSession.getDatabaseName()));
if (!isSystemSchema && !database.isComplete()) {
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnectorFactory.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnectorFactory.java
index 1d0662a9ee1..b2cd2db66f3 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnectorFactory.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnectorFactory.java
@@ -50,7 +50,7 @@ public final class DatabaseConnectorFactory {
* @return created instance
*/
public DatabaseConnector newInstance(final QueryContext queryContext,
final ProxyDatabaseConnectionManager databaseConnectionManager, final boolean
preferPreparedStatement) {
- ShardingSphereDatabase database =
ProxyContext.getInstance().getDatabase(databaseConnectionManager.getConnectionSession().getDatabaseName());
+ ShardingSphereDatabase database =
ProxyContext.getInstance().getContextManager().getDatabase(databaseConnectionManager.getConnectionSession().getDatabaseName());
String driverType = preferPreparedStatement ||
!queryContext.getParameters().isEmpty() ? JDBCDriverType.PREPARED_STATEMENT :
JDBCDriverType.STATEMENT;
DatabaseConnector result = new DatabaseConnector(driverType, database,
queryContext, databaseConnectionManager);
databaseConnectionManager.add(result);
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutor.java
index ed4fb95cba8..05e039f58a0 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutor.java
@@ -204,7 +204,7 @@ public final class ProxySQLExecutor {
JDBCBackendStatement statementManager = (JDBCBackendStatement)
databaseConnectionManager.getConnectionSession().getStatementManager();
DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection>
prepareEngine = new DriverExecutionPrepareEngine<>(
type, maxConnectionsSizePerQuery, databaseConnectionManager,
statementManager, new StatementOption(isReturnGeneratedKeys), rules,
-
ProxyContext.getInstance().getDatabase(databaseConnectionManager.getConnectionSession().getDatabaseName()).getResourceMetaData().getStorageUnits());
+
ProxyContext.getInstance().getContextManager().getDatabase(databaseConnectionManager.getConnectionSession().getDatabaseName()).getResourceMetaData().getStorageUnits());
ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext;
try {
executionGroupContext =
prepareEngine.prepare(executionContext.getRouteContext(),
executionContext.getExecutionUnits(),
@@ -231,7 +231,7 @@ public final class ProxySQLExecutor {
}
private List<ExecuteResult> getSaneExecuteResults(final ExecutionContext
executionContext, final SQLException originalException) throws SQLException {
- DatabaseType databaseType =
ProxyContext.getInstance().getDatabase(databaseConnectionManager.getConnectionSession().getDatabaseName()).getProtocolType();
+ DatabaseType databaseType =
ProxyContext.getInstance().getContextManager().getDatabase(databaseConnectionManager.getConnectionSession().getDatabaseName()).getProtocolType();
Optional<ExecuteResult> executeResult = new
SaneQueryResultEngine(databaseType).getSaneQueryResult(executionContext.getSqlStatementContext().getSqlStatement(),
originalException);
return executeResult.map(Collections::singletonList).orElseThrow(() ->
originalException);
}
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 e77add0397f..c2d3a545275 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
@@ -17,15 +17,11 @@
package org.apache.shardingsphere.proxy.backend.context;
-import com.google.common.base.Strings;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
-import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.NoDatabaseSelectedException;
-import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.UnknownDatabaseException;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.state.instance.InstanceStateContext;
-import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
import org.apache.shardingsphere.mode.manager.ContextManager;
import
org.apache.shardingsphere.proxy.backend.connector.jdbc.datasource.JDBCBackendDataSource;
@@ -74,18 +70,6 @@ public final class ProxyContext {
return
contextManager.getMetaDataContexts().getMetaData().containsDatabase(name);
}
- /**
- * Get database.
- *
- * @param name database name
- * @return got database
- */
- public ShardingSphereDatabase getDatabase(final String name) {
- ShardingSpherePreconditions.checkState(!Strings.isNullOrEmpty(name),
NoDatabaseSelectedException::new);
-
ShardingSpherePreconditions.checkState(contextManager.getMetaDataContexts().getMetaData().containsDatabase(name),
() -> new UnknownDatabaseException(name));
- return
contextManager.getMetaDataContexts().getMetaData().getDatabase(name);
- }
-
/**
* Get all database names.
*
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/ProxySQLComQueryParser.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/ProxySQLComQueryParser.java
index f62eda42d96..1b933b0b43f 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/ProxySQLComQueryParser.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/ProxySQLComQueryParser.java
@@ -54,6 +54,6 @@ public final class ProxySQLComQueryParser {
String databaseName = connectionSession.getDatabaseName();
return Strings.isNullOrEmpty(databaseName) ||
!ProxyContext.getInstance().databaseExists(databaseName)
? defaultDatabaseType
- :
ProxyContext.getInstance().getDatabase(databaseName).getProtocolType();
+ :
ProxyContext.getInstance().getContextManager().getDatabase(databaseName).getProtocolType();
}
}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandler.java
index 52a5c43b7c3..60fc6652344 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandler.java
@@ -61,7 +61,7 @@ public final class DatabaseAdminQueryBackendHandler
implements ProxyBackendHandl
private List<QueryHeader> createResponseHeader() throws SQLException {
List<QueryHeader> result = new
ArrayList<>(queryResultMetaData.getColumnCount());
- ShardingSphereDatabase database = null ==
connectionSession.getDatabaseName() ? null :
ProxyContext.getInstance().getDatabase(connectionSession.getDatabaseName());
+ ShardingSphereDatabase database = null ==
connectionSession.getDatabaseName() ? null :
ProxyContext.getInstance().getContextManager().getDatabase(connectionSession.getDatabaseName());
DatabaseType databaseType = null == database ?
connectionSession.getProtocolType() : database.getProtocolType();
QueryHeaderBuilderEngine queryHeaderBuilderEngine = new
QueryHeaderBuilderEngine(databaseType);
for (int columnIndex = 1; columnIndex <=
queryResultMetaData.getColumnCount(); columnIndex++) {
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 460a7333dc8..b1884b4f2b4 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
@@ -126,7 +126,7 @@ public abstract class AbstractDatabaseMetaDataExecutor
implements DatabaseAdminQ
}
protected static Boolean hasDataSource(final String databaseName) {
- return
ProxyContext.getInstance().getDatabase(databaseName).containsDataSource();
+ return
ProxyContext.getInstance().getContextManager().getDatabase(databaseName).containsDataSource();
}
protected static boolean isAuthorized(final String databaseName, final
Grantee grantee) {
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandler.java
index 6bcec191e2f..b29f6c5fde3 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandler.java
@@ -55,7 +55,8 @@ public final class UnicastDatabaseBackendHandler implements
DatabaseBackendHandl
public ResponseHeader execute() throws SQLException {
String originalDatabaseName =
connectionSession.getDefaultDatabaseName();
String unicastDatabaseName = null == originalDatabaseName ?
getFirstDatabaseName() : originalDatabaseName;
-
ShardingSpherePreconditions.checkState(ProxyContext.getInstance().getDatabase(unicastDatabaseName).containsDataSource(),
() -> new StorageUnitNotExistedException(unicastDatabaseName));
+
ShardingSpherePreconditions.checkState(ProxyContext.getInstance().getContextManager().getDatabase(unicastDatabaseName).containsDataSource(),
+ () -> new StorageUnitNotExistedException(unicastDatabaseName));
try {
connectionSession.setCurrentDatabase(unicastDatabaseName);
databaseConnector =
databaseConnectorFactory.newInstance(queryContext,
connectionSession.getDatabaseConnectionManager(), false);
@@ -72,7 +73,7 @@ public final class UnicastDatabaseBackendHandler implements
DatabaseBackendHandl
}
AuthorityRule authorityRule =
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getSingleRule(AuthorityRule.class);
Optional<ShardingSpherePrivileges> privileges =
authorityRule.findPrivileges(connectionSession.getGrantee());
- Stream<String> databaseStream = databaseNames.stream().filter(each ->
ProxyContext.getInstance().getDatabase(each).containsDataSource());
+ Stream<String> databaseStream = databaseNames.stream().filter(each ->
ProxyContext.getInstance().getContextManager().getDatabase(each).containsDataSource());
Optional<String> result = privileges.map(optional ->
databaseStream.filter(optional::hasPrivileges).findFirst()).orElseGet(databaseStream::findFirst);
ShardingSpherePreconditions.checkState(result.isPresent(),
StorageUnitNotExistedException::new);
return result.get();
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryBackendHandler.java
index 819cc724f62..974f59de675 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryBackendHandler.java
@@ -82,7 +82,7 @@ public final class DistSQLQueryBackendHandler extends
DistSQLQueryExecuteEngine
@Override
protected ShardingSphereDatabase getDatabase(final String databaseName) {
- return ProxyContext.getInstance().getDatabase(databaseName);
+ return
ProxyContext.getInstance().getContextManager().getDatabase(databaseName);
}
@Override
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateBackendHandler.java
index a53cbf8c43c..6675b0fe1f5 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateBackendHandler.java
@@ -47,6 +47,6 @@ public final class DistSQLUpdateBackendHandler extends
DistSQLUpdateExecuteEngin
@Override
protected ShardingSphereDatabase getDatabase(final String databaseName) {
- return ProxyContext.getInstance().getDatabase(databaseName);
+ return
ProxyContext.getInstance().getContextManager().getDatabase(databaseName);
}
}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutor.java
index be97a1c4f79..3655d4e949a 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutor.java
@@ -85,7 +85,7 @@ public final class ExportMetaDataExecutor implements
DistSQLQueryExecutor<Export
private Map<String, String> getDatabases(final ProxyContext proxyContext) {
Map<String, String> result = new LinkedHashMap<>();
proxyContext.getAllDatabaseNames().forEach(each -> {
- ShardingSphereDatabase database = proxyContext.getDatabase(each);
+ ShardingSphereDatabase database =
proxyContext.getContextManager().getDatabase(each);
if
(database.getResourceMetaData().getAllInstanceDataSourceNames().isEmpty()) {
return;
}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshDatabaseMetaDataExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshDatabaseMetaDataExecutor.java
index 176b9196bb5..7d135701984 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshDatabaseMetaDataExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshDatabaseMetaDataExecutor.java
@@ -37,7 +37,8 @@ public final class RefreshDatabaseMetaDataExecutor implements
DistSQLUpdateExecu
@Override
public void executeUpdate(final RefreshDatabaseMetaDataStatement
sqlStatement, final ContextManager contextManager) throws SQLException {
Optional<String> toBeRefreshedDatabaseName =
sqlStatement.getDatabaseName();
- Map<String, ShardingSphereDatabase> databases =
toBeRefreshedDatabaseName.map(optional -> Collections.singletonMap(optional,
ProxyContext.getInstance().getDatabase(optional)))
+ Map<String, ShardingSphereDatabase> databases =
toBeRefreshedDatabaseName
+ .map(optional -> Collections.singletonMap(optional,
ProxyContext.getInstance().getContextManager().getDatabase(optional)))
.orElseGet(() ->
contextManager.getMetaDataContexts().getMetaData().getDatabases());
for (ShardingSphereDatabase each : databases.values()) {
if (!SystemSchemaUtils.isSystemSchema(each)) {
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java
index 1eb0bfb4c28..aa93f132e98 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java
@@ -130,7 +130,7 @@ public final class YamlDatabaseConfigurationImportExecutor {
private void checkDatabase(final String databaseName) {
ShardingSpherePreconditions.checkNotNull(databaseName, () -> new
UnsupportedSQLOperationException("Property `databaseName` in imported config is
required"));
if (ProxyContext.getInstance().databaseExists(databaseName)) {
-
ShardingSpherePreconditions.checkState(ProxyContext.getInstance().getDatabase(databaseName).getResourceMetaData().getStorageUnits().isEmpty(),
+
ShardingSpherePreconditions.checkState(ProxyContext.getInstance().getContextManager().getDatabase(databaseName).getResourceMetaData().getStorageUnits().isEmpty(),
() -> new
UnsupportedSQLOperationException(String.format("Database `%s` exists and is not
empty,overwrite is not supported", databaseName)));
}
}
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnectorFactoryTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnectorFactoryTest.java
index beb98549e3b..79c04823b7c 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnectorFactoryTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnectorFactoryTest.java
@@ -61,7 +61,6 @@ class DatabaseConnectorFactoryTest {
ShardingSphereDatabase database = mockDatabase();
ContextManager contextManager = mockContextManager(database);
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getDatabase("foo_db")).thenReturn(database);
DatabaseConnector engine =
DatabaseConnectorFactory.getInstance().newInstance(queryContext,
databaseConnectionManager, false);
assertThat(engine, instanceOf(DatabaseConnector.class));
}
@@ -76,7 +75,6 @@ class DatabaseConnectorFactoryTest {
ShardingSphereDatabase database = mockDatabase();
ContextManager contextManager = mockContextManager(database);
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getDatabase("foo_db")).thenReturn(database);
assertThat(DatabaseConnectorFactory.getInstance().newInstance(new
QueryContext(sqlStatementContext, "schemaName", Collections.emptyList()),
databaseConnectionManager, false),
instanceOf(DatabaseConnector.class));
}
@@ -87,6 +85,7 @@ class DatabaseConnectorFactoryTest {
mock(RuleMetaData.class), new
ConfigurationProperties(new Properties())));
ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
when(result.getMetaDataContexts()).thenReturn(metaDataContexts);
+ when(result.getDatabase("foo_db")).thenReturn(database);
return result;
}
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnectorTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnectorTest.java
index 599f33d4313..d8d87cb2ea1 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnectorTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnectorTest.java
@@ -111,8 +111,6 @@ class DatabaseConnectorTest {
when(databaseConnectionManager.getConnectionSession().getDatabaseName()).thenReturn("foo_db");
ContextManager contextManager = mockContextManager();
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
- ShardingSphereDatabase database =
contextManager.getMetaDataContexts().getMetaData().getDatabase("foo_db");
-
when(ProxyContext.getInstance().getDatabase("foo_db")).thenReturn(database);
}
private ContextManager mockContextManager() {
@@ -122,10 +120,12 @@ class DatabaseConnectorTest {
ShardingSphereDataPersistService shardingSphereDataPersistService =
mock(ShardingSphereDataPersistService.class);
when(shardingSphereDataPersistService.load(any())).thenReturn(Optional.empty());
when(metaDataPersistService.getShardingSphereDataPersistService()).thenReturn(shardingSphereDataPersistService);
+ Map<String, ShardingSphereDatabase> databases = mockDatabases();
MetaDataContexts metaDataContexts = new
MetaDataContexts(metaDataPersistService,
- new ShardingSphereMetaData(mockDatabases(),
mock(ResourceMetaData.class), globalRuleMetaData, new
ConfigurationProperties(new Properties())));
+ new ShardingSphereMetaData(databases,
mock(ResourceMetaData.class), globalRuleMetaData, new
ConfigurationProperties(new Properties())));
ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
when(result.getMetaDataContexts()).thenReturn(metaDataContexts);
+ when(result.getDatabase("foo_db")).thenReturn(databases.get("foo_db"));
return result;
}
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 9cb84d0edb7..59684048836 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
@@ -17,17 +17,15 @@
package org.apache.shardingsphere.proxy.backend.context;
-import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.NoDatabaseSelectedException;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.UnknownDatabaseException;
import org.apache.shardingsphere.infra.instance.InstanceContext;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
-import org.apache.shardingsphere.infra.state.cluster.ClusterState;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import org.apache.shardingsphere.infra.state.cluster.ClusterState;
import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
@@ -44,8 +42,6 @@ import java.util.Properties;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
@@ -92,38 +88,6 @@ class ProxyContextTest {
assertFalse(ProxyContext.getInstance().databaseExists("db_1"));
}
- @Test
- void assertGetDatabaseWithNull() {
- assertThrows(NoDatabaseSelectedException.class, () ->
assertNull(ProxyContext.getInstance().getDatabase(null)));
- }
-
- @Test
- void assertGetDatabaseWithEmptyString() {
- assertThrows(NoDatabaseSelectedException.class, () ->
assertNull(ProxyContext.getInstance().getDatabase("")));
- }
-
- @Test
- void assertGetDatabaseWhenNotExisted() {
- Map<String, ShardingSphereDatabase> databases = mockDatabases();
- ContextManager contextManager = mock(ContextManager.class,
RETURNS_DEEP_STUBS);
- MetaDataContexts metaDataContexts = new
MetaDataContexts(mock(MetaDataPersistService.class),
- new ShardingSphereMetaData(databases,
mock(ResourceMetaData.class), mock(RuleMetaData.class), new
ConfigurationProperties(new Properties())));
-
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
- ProxyContext.init(contextManager);
- assertThrows(UnknownDatabaseException.class, () ->
ProxyContext.getInstance().getDatabase("db1"));
- }
-
- @Test
- void assertGetDatabase() {
- Map<String, ShardingSphereDatabase> databases = mockDatabases();
- ContextManager contextManager = mock(ContextManager.class,
RETURNS_DEEP_STUBS);
- MetaDataContexts metaDataContexts = new
MetaDataContexts(mock(MetaDataPersistService.class),
- new ShardingSphereMetaData(databases,
mock(ResourceMetaData.class), mock(RuleMetaData.class), new
ConfigurationProperties(new Properties())));
-
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
- ProxyContext.init(contextManager);
- assertThat(databases.get("db"),
is(ProxyContext.getInstance().getDatabase("db")));
- }
-
@Test
void assertGetAllDatabaseNames() {
Map<String, ShardingSphereDatabase> databases = createDatabases();
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 1907ee74f18..de74883c779 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
@@ -176,7 +176,7 @@ class ProxyBackendHandlerFactoryTest {
String sql = "SELECT * FROM t_order limit 1";
ProxyContext proxyContext = ProxyContext.getInstance();
when(proxyContext.getAllDatabaseNames()).thenReturn(new
HashSet<>(Collections.singletonList("db")));
-
when(proxyContext.getDatabase("db").containsDataSource()).thenReturn(true);
+
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());
assertThat(actual, instanceOf(DatabaseConnector.class));
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandlerTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandlerTest.java
index 00b8a63611d..6a44a42d831 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandlerTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandlerTest.java
@@ -111,7 +111,7 @@ class DatabaseAdminQueryBackendHandlerTest {
private ContextManager mockContextManager() {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
when(database.getProtocolType()).thenReturn(databaseType);
-
when(ProxyContext.getInstance().getDatabase("foo_db")).thenReturn(database);
+
when(ProxyContext.getInstance().getContextManager().getDatabase("foo_db")).thenReturn(database);
ShardingSphereMetaData metaData = new
ShardingSphereMetaData(Collections.singletonMap("foo_db", database),
mock(ResourceMetaData.class),
mock(RuleMetaData.class), new ConfigurationProperties(new
Properties()));
return new ContextManager(new
MetaDataContexts(mock(MetaDataPersistService.class), metaData),
mock(InstanceContext.class));
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 28e7d9090b9..dc4bc475c7c 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
@@ -150,7 +150,7 @@ class DefaultDatabaseMetaDataExecutorTest {
MetaDataContexts metaDataContexts = new
MetaDataContexts(mock(MetaDataPersistService.class), new
ShardingSphereMetaData(Collections.singletonMap("auth_db", database),
mock(ResourceMetaData.class), new
RuleMetaData(Collections.singleton(authorityRule)), new
ConfigurationProperties(new Properties())));
when(result.getMetaDataContexts()).thenReturn(metaDataContexts);
-
when(ProxyContext.getInstance().getDatabase("auth_db")).thenReturn(database);
+ when(result.getDatabase("auth_db")).thenReturn(database);
when(ProxyContext.getInstance().getAllDatabaseNames()).thenReturn(Collections.singleton("auth_db"));
return result;
}
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandlerTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandlerTest.java
index abcd517d463..442200fc246 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandlerTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandlerTest.java
@@ -109,7 +109,7 @@ class UnicastDatabaseBackendHandlerTest {
ContextManager contextManager = mockContextManager();
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
ShardingSphereDatabase database = createDatabases().get("db_0");
-
when(ProxyContext.getInstance().getDatabase("db_0")).thenReturn(database);
+ when(contextManager.getDatabase("db_0")).thenReturn(database);
ResponseHeader actual = unicastDatabaseBackendHandler.execute();
assertThat(actual, instanceOf(UpdateResponseHeader.class));
}
@@ -119,7 +119,7 @@ class UnicastDatabaseBackendHandlerTest {
ContextManager contextManager = mockContextManager();
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
ShardingSphereDatabase database = createDatabases().get("db_0");
-
when(ProxyContext.getInstance().getDatabase("db_0")).thenReturn(database);
+ when(contextManager.getDatabase("db_0")).thenReturn(database);
unicastDatabaseBackendHandler.execute();
while (unicastDatabaseBackendHandler.next()) {
assertThat(unicastDatabaseBackendHandler.getRowData().getData().size(), is(1));
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
index 39e215dd0da..88b0ab3dc7f 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
@@ -86,7 +86,6 @@ class DistSQLBackendHandlerFactoryTest {
ContextManager contextManager = mockContextManager(database);
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
when(ProxyContext.getInstance().databaseExists("foo_db")).thenReturn(true);
-
when(ProxyContext.getInstance().getDatabase("foo_db")).thenReturn(database);
when(connectionSession.getDatabaseName()).thenReturn("foo_db");
}
@@ -100,6 +99,7 @@ class DistSQLBackendHandlerFactoryTest {
private ContextManager mockContextManager(final ShardingSphereDatabase
database) {
ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
MetaDataContexts metaDataContexts = mockMetaDataContexts(database);
+ when(result.getDatabase("foo_db")).thenReturn(database);
when(result.getMetaDataContexts()).thenReturn(metaDataContexts);
when(result.getInstanceContext().getModeContextManager()).thenReturn(mock(ModeContextManager.class));
when(result.getInstanceContext().getModeConfiguration().getType()).thenReturn("Cluster");
@@ -119,7 +119,7 @@ class DistSQLBackendHandlerFactoryTest {
@Test
void assertExecuteShardingTableRuleContext() throws SQLException {
-
when(ProxyContext.getInstance().getDatabase("foo_db").getRuleMetaData()).thenReturn(new
RuleMetaData(Collections.emptyList()));
+
when(ProxyContext.getInstance().getContextManager().getDatabase("foo_db").getRuleMetaData()).thenReturn(new
RuleMetaData(Collections.emptyList()));
assertThat(new
DistSQLUpdateBackendHandler(mock(CreateShardingTableRuleStatement.class),
connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@@ -214,7 +214,7 @@ class DistSQLBackendHandlerFactoryTest {
when(rule.getConfiguration()).thenReturn(ruleConfig);
when(ruleMetaData.findSingleRule(ShadowRule.class)).thenReturn(Optional.of(rule));
when(database.getRuleMetaData()).thenReturn(ruleMetaData);
-
when(ProxyContext.getInstance().getDatabase("foo_db")).thenReturn(database);
+
when(ProxyContext.getInstance().getContextManager().getDatabase("foo_db")).thenReturn(database);
}
private ShadowRuleConfiguration mockShadowRuleConfiguration() {
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandlerTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandlerTest.java
index c40cbce5190..ce584598220 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandlerTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandlerTest.java
@@ -72,7 +72,6 @@ class QueryableRALBackendHandlerTest {
MetaDataContexts metaDataContexts = new
MetaDataContexts(mock(MetaDataPersistService.class), metaData);
ConnectionSession connectionSession = mock(ConnectionSession.class);
when(connectionSession.getDatabaseName()).thenReturn("unknown");
-
when(ProxyContext.getInstance().getDatabase("unknown")).thenThrow(UnknownDatabaseException.class);
ContextManager contextManager = new ContextManager(metaDataContexts,
mock(InstanceContext.class));
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
assertThrows(UnknownDatabaseException.class, () -> new
DistSQLQueryBackendHandler(mock(ExportDatabaseConfigurationStatement.class),
connectionSession).execute());
@@ -89,7 +88,7 @@ class QueryableRALBackendHandlerTest {
when(database.getName()).thenReturn("foo_db");
when(database.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"FIXTURE"));
when(database.getSchema("foo_db")).thenReturn(new
ShardingSphereSchema(createTableMap(), Collections.emptyMap()));
-
when(ProxyContext.getInstance().getDatabase("foo_db")).thenReturn(database);
+
when(ProxyContext.getInstance().getContextManager().getDatabase("foo_db")).thenReturn(database);
assertDoesNotThrow(() -> new
DistSQLQueryBackendHandler(createSqlStatement(), mock(ConnectionSession.class,
RETURNS_DEEP_STUBS)).execute());
}
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutorTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutorTest.java
index a1caeb251eb..a2fc21f0e73 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutorTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutorTest.java
@@ -144,7 +144,6 @@ class ExportMetaDataExecutorTest {
ContextManager contextManager = mockContextManager();
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
when(ProxyContext.getInstance().getAllDatabaseNames()).thenReturn(Collections.singleton("normal_db"));
-
when(ProxyContext.getInstance().getDatabase("normal_db")).thenReturn(database);
Collection<LocalDataQueryResultRow> actual = new
ExportMetaDataExecutor().getRows(new ExportMetaDataStatement(null),
contextManager);
assertThat(actual.size(), is(1));
LocalDataQueryResultRow row = actual.iterator().next();
@@ -175,6 +174,7 @@ class ExportMetaDataExecutorTest {
ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
when(result.getMetaDataContexts()).thenReturn(metaDataContexts);
when(result.getInstanceContext()).thenReturn(instanceContext);
+ when(result.getDatabase("normal_db")).thenReturn(database);
return result;
}
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataUpdaterTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataUpdaterTest.java
index 0eb706b89a1..d0dadb5d949 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataUpdaterTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataUpdaterTest.java
@@ -58,7 +58,7 @@ class RefreshTableMetaDataUpdaterTest {
when(contextManager.getStorageUnits("foo_db")).thenReturn(Collections.emptyMap());
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
when(database.getName()).thenReturn("foo_db");
-
when(ProxyContext.getInstance().getDatabase("foo_db")).thenReturn(database);
+ when(contextManager.getDatabase("foo_db")).thenReturn(database);
DistSQLUpdateBackendHandler backendHandler = new
DistSQLUpdateBackendHandler(new RefreshTableMetaDataStatement(),
mockConnectionSession("foo_db"));
assertThrows(EmptyStorageUnitException.class, backendHandler::execute);
}
@@ -79,7 +79,7 @@ class RefreshTableMetaDataUpdaterTest {
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
when(database.getName()).thenReturn("foo_db");
when(database.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"FIXTURE"));
-
when(ProxyContext.getInstance().getDatabase("foo_db")).thenReturn(database);
+ when(contextManager.getDatabase("foo_db")).thenReturn(database);
DistSQLUpdateBackendHandler backendHandler = new
DistSQLUpdateBackendHandler(new RefreshTableMetaDataStatement(),
mockConnectionSession("foo_db"));
ResponseHeader actual = backendHandler.execute();
assertThat(actual, instanceOf(UpdateResponseHeader.class));
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/UnregisterStorageUnitExecutorTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/UnregisterStorageUnitExecutorTest.java
index 6cafbe9275f..e6416bfcdfe 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/UnregisterStorageUnitExecutorTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/UnregisterStorageUnitExecutorTest.java
@@ -90,7 +90,6 @@ class UnregisterStorageUnitExecutorTest {
when(database.getResourceMetaData()).thenReturn(resourceMetaData);
contextManager = mockContextManager();
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getDatabase("foo_db")).thenReturn(database);
executor = new UnregisterStorageUnitExecutor();
}
@@ -99,6 +98,7 @@ class UnregisterStorageUnitExecutorTest {
ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
when(result.getMetaDataContexts()).thenReturn(metaDataContexts);
when(result.getInstanceContext().getModeContextManager()).thenReturn(modeContextManager);
+ when(result.getDatabase("foo_db")).thenReturn(database);
return result;
}
@@ -116,8 +116,8 @@ class UnregisterStorageUnitExecutorTest {
}
@Test
- void assertExecuteUpdateWithhStorageUnitNameNotExisted() {
-
when(ProxyContext.getInstance().getDatabase("foo_db").getResourceMetaData().getStorageUnits()).thenReturn(Collections.emptyMap());
+ void assertExecuteUpdateWithStorageUnitNameNotExisted() {
+
when(ProxyContext.getInstance().getContextManager().getDatabase("foo_db").getResourceMetaData().getStorageUnits()).thenReturn(Collections.emptyMap());
executor.setDatabase(database);
assertThrows(MissingRequiredStorageUnitsException.class,
() -> executor.executeUpdate(new
UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), false, false),
mock(ContextManager.class)));
diff --git
a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
index b8df4164c05..6c0a9b6e952 100644
---
a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
+++
b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreator.java
@@ -161,7 +161,7 @@ public final class MySQLAdminExecutorCreator implements
DatabaseAdminExecutorCre
private boolean isQueryInformationSchema(final String databaseName) {
// TODO remove DefaultDatabaseMetaDataExecutor when sql federation can
support all system table query
- return INFORMATION_SCHEMA.equalsIgnoreCase(databaseName) &&
!ProxyContext.getInstance().getDatabase(databaseName).isComplete();
+ return INFORMATION_SCHEMA.equalsIgnoreCase(databaseName) &&
!ProxyContext.getInstance().getContextManager().getDatabase(databaseName).isComplete();
}
private boolean isQueryPerformanceSchema(final String databaseName) {
@@ -190,7 +190,7 @@ public final class MySQLAdminExecutorCreator implements
DatabaseAdminExecutorCre
return true;
}
for (String each : databaseNames) {
- if
(ProxyContext.getInstance().getDatabase(each).containsDataSource()) {
+ if
(ProxyContext.getInstance().getContextManager().getDatabase(each).containsDataSource())
{
return false;
}
}
diff --git
a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowTablesExecutor.java
b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowTablesExecutor.java
index 4b26f0b361f..f0dc75c3ccf 100644
---
a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowTablesExecutor.java
+++
b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowTablesExecutor.java
@@ -51,8 +51,6 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
public final class ShowTablesExecutor implements DatabaseAdminQueryExecutor {
- private static final String TABLE_TYPE = "BASE TABLE";
-
private final MySQLShowTablesStatement showTablesStatement;
private final DatabaseType databaseType;
@@ -82,7 +80,7 @@ public final class ShowTablesExecutor implements
DatabaseAdminQueryExecutor {
private QueryResult getQueryResult(final String databaseName) {
SystemDatabase systemDatabase = new SystemDatabase(databaseType);
- if (!systemDatabase.getSystemSchemas().contains(databaseName) &&
!ProxyContext.getInstance().getDatabase(databaseName).isComplete()) {
+ if (!systemDatabase.getSystemSchemas().contains(databaseName) &&
!ProxyContext.getInstance().getContextManager().getDatabase(databaseName).isComplete())
{
return new RawMemoryQueryResult(queryResultMetaData,
Collections.emptyList());
}
List<MemoryQueryResultDataRow> rows =
getAllTableNames(databaseName).stream().map(each -> {
@@ -97,7 +95,7 @@ public final class ShowTablesExecutor implements
DatabaseAdminQueryExecutor {
}
private Collection<ShardingSphereTable> getAllTableNames(final String
databaseName) {
- Collection<ShardingSphereTable> result =
ProxyContext.getInstance().getDatabase(databaseName).getSchema(databaseName).getTables().values();
+ Collection<ShardingSphereTable> result =
ProxyContext.getInstance().getContextManager().getDatabase(databaseName).getSchema(databaseName).getTables().values();
if (!showTablesStatement.getFilter().isPresent()) {
return result;
}
diff --git
a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/UnicastResourceShowExecutor.java
b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/UnicastResourceShowExecutor.java
index d9a2790dc01..003cc34a59b 100644
---
a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/UnicastResourceShowExecutor.java
+++
b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/UnicastResourceShowExecutor.java
@@ -75,7 +75,7 @@ public final class UnicastResourceShowExecutor implements
DatabaseAdminQueryExec
public void execute(final ConnectionSession connectionSession) throws
SQLException {
String originDatabase = connectionSession.getDatabaseName();
String databaseName = null == originDatabase ? getFirstDatabaseName()
: originDatabase;
-
ShardingSpherePreconditions.checkState(ProxyContext.getInstance().getDatabase(databaseName).containsDataSource(),
() -> new StorageUnitNotExistedException(databaseName));
+
ShardingSpherePreconditions.checkState(ProxyContext.getInstance().getContextManager().getDatabase(databaseName).containsDataSource(),
() -> new StorageUnitNotExistedException(databaseName));
try {
connectionSession.setCurrentDatabase(databaseName);
SQLStatementContext sqlStatementContext = new
SQLBindEngine(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData(),
@@ -95,7 +95,7 @@ public final class UnicastResourceShowExecutor implements
DatabaseAdminQueryExec
if (databaseNames.isEmpty()) {
throw new NoDatabaseSelectedException();
}
- Optional<String> result = databaseNames.stream().filter(each ->
ProxyContext.getInstance().getDatabase(each).containsDataSource()).findFirst();
+ Optional<String> result = databaseNames.stream().filter(each ->
ProxyContext.getInstance().getContextManager().getDatabase(each).containsDataSource()).findFirst();
ShardingSpherePreconditions.checkState(result.isPresent(),
StorageUnitNotExistedException::new);
return result.get();
}
diff --git
a/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
b/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
index 158205cec21..b05fc79bca5 100644
---
a/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
+++
b/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
@@ -269,7 +269,7 @@ class MySQLAdminExecutorCreatorTest {
Map<String, ShardingSphereDatabase> result =
Collections.singletonMap("db_0", database);
initProxyContext(result);
when(ProxyContext.getInstance().getAllDatabaseNames()).thenReturn(Collections.singleton("db_0"));
-
when(ProxyContext.getInstance().getDatabase("db_0")).thenReturn(database);
+
when(ProxyContext.getInstance().getContextManager().getDatabase("db_0")).thenReturn(database);
MySQLSelectStatement selectStatement =
mock(MySQLSelectStatement.class);
when(selectStatement.getFrom()).thenReturn(null);
ProjectionsSegment projectionsSegment = mock(ProjectionsSegment.class);
@@ -287,7 +287,7 @@ class MySQLAdminExecutorCreatorTest {
Map<String, ShardingSphereDatabase> result =
Collections.singletonMap("db_0", database);
initProxyContext(result);
when(ProxyContext.getInstance().getAllDatabaseNames()).thenReturn(Collections.singleton("db_0"));
-
when(ProxyContext.getInstance().getDatabase("db_0")).thenReturn(database);
+
when(ProxyContext.getInstance().getContextManager().getDatabase("db_0")).thenReturn(database);
MySQLSelectStatement selectStatement =
mock(MySQLSelectStatement.class);
when(selectStatement.getFrom()).thenReturn(null);
ProjectionsSegment projectionsSegment = mock(ProjectionsSegment.class);
@@ -323,7 +323,7 @@ class MySQLAdminExecutorCreatorTest {
Optional<DatabaseAdminExecutor> actual = new
MySQLAdminExecutorCreator().create(sqlStatementContext, "select SCHEMA_NAME
from SCHEMATA", "information_schema", Collections.emptyList());
assertTrue(actual.isPresent());
assertThat(actual.get(),
instanceOf(SelectInformationSchemataExecutor.class));
-
when(ProxyContext.getInstance().getDatabase("information_schema").isComplete()).thenReturn(true);
+
when(ProxyContext.getInstance().getContextManager().getDatabase("information_schema").isComplete()).thenReturn(true);
actual = new MySQLAdminExecutorCreator().create(sqlStatementContext,
"select SCHEMA_NAME from SCHEMATA", "information_schema",
Collections.emptyList());
assertFalse(actual.isPresent());
}
diff --git
a/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowTablesExecutorTest.java
b/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowTablesExecutorTest.java
index 76c0fb280ca..9d34ccd60c2 100644
---
a/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowTablesExecutorTest.java
+++
b/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowTablesExecutorTest.java
@@ -75,7 +75,6 @@ class ShowTablesExecutorTest {
Map<String, ShardingSphereDatabase> databases = getDatabases();
ContextManager contextManager = mockContextManager(databases);
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getDatabase("db_0")).thenReturn(databases.get("db_0"));
executor.execute(mockConnectionSession());
assertThat(executor.getQueryResultMetaData().getColumnCount(), is(1));
executor.getMergedResult().next();
@@ -97,7 +96,6 @@ class ShowTablesExecutorTest {
Map<String, ShardingSphereDatabase> databases = getDatabases();
ContextManager contextManager = mockContextManager(databases);
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getDatabase("db_0")).thenReturn(databases.get("db_0"));
executor.execute(mockConnectionSession());
assertThat(executor.getQueryResultMetaData().getColumnCount(), is(2));
}
@@ -112,7 +110,6 @@ class ShowTablesExecutorTest {
Map<String, ShardingSphereDatabase> databases = getDatabases();
ContextManager contextManager = mockContextManager(databases);
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getDatabase("db_0")).thenReturn(databases.get("db_0"));
executor.execute(mockConnectionSession());
assertThat(executor.getQueryResultMetaData().getColumnCount(), is(1));
executor.getMergedResult().next();
@@ -134,7 +131,6 @@ class ShowTablesExecutorTest {
Map<String, ShardingSphereDatabase> databases = getDatabases();
ContextManager contextManager = mockContextManager(databases);
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getDatabase("db_0")).thenReturn(databases.get("db_0"));
executor.execute(mockConnectionSession());
assertThat(executor.getQueryResultMetaData().getColumnCount(), is(1));
executor.getMergedResult().next();
@@ -152,7 +148,6 @@ class ShowTablesExecutorTest {
Map<String, ShardingSphereDatabase> databases = getDatabases();
ContextManager contextManager = mockContextManager(databases);
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getDatabase("db_0")).thenReturn(databases.get("db_0"));
executor.execute(mockConnectionSession());
assertThat(executor.getQueryResultMetaData().getColumnCount(), is(1));
executor.getMergedResult().next();
@@ -170,7 +165,6 @@ class ShowTablesExecutorTest {
Map<String, ShardingSphereDatabase> databases = getDatabases();
ContextManager contextManager = mockContextManager(databases);
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getDatabase("db_0")).thenReturn(databases.get("db_0"));
executor.execute(mockConnectionSession());
assertThat(executor.getQueryResultMetaData().getColumnCount(), is(1));
executor.getMergedResult().next();
@@ -202,6 +196,7 @@ class ShowTablesExecutorTest {
new ShardingSphereMetaData(databases,
mock(ResourceMetaData.class), mock(RuleMetaData.class), new
ConfigurationProperties(new Properties())));
ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
when(result.getMetaDataContexts()).thenReturn(metaDataContexts);
+ when(result.getDatabase("db_0")).thenReturn(databases.get("db_0"));
return result;
}
diff --git
a/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/information/SelectInformationSchemataExecutorTest.java
b/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/information/SelectInformationSchemataExecutorTest.java
index ef4696dcd2c..5fe08b1e86e 100644
---
a/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/information/SelectInformationSchemataExecutorTest.java
+++
b/proxy/backend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/information/SelectInformationSchemataExecutorTest.java
@@ -118,7 +118,6 @@ class SelectInformationSchemataExecutorTest {
ContextManager contextManager = mockContextManager(database);
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
when(ProxyContext.getInstance().getAllDatabaseNames()).thenReturn(Collections.singleton("auth_db"));
-
when(ProxyContext.getInstance().getDatabase("auth_db")).thenReturn(database);
SelectInformationSchemataExecutor executor = new
SelectInformationSchemataExecutor(statement, sql, Collections.emptyList());
executor.execute(connectionSession);
assertThat(executor.getQueryResultMetaData().getColumnCount(),
is(2));
@@ -166,6 +165,9 @@ class SelectInformationSchemataExecutorTest {
Arrays.stream(databases).collect(Collectors.toMap(ShardingSphereDatabase::getName,
each -> each)),
mock(ResourceMetaData.class), new
RuleMetaData(Collections.singleton(authorityRule)), new
ConfigurationProperties(new Properties())));
when(result.getMetaDataContexts()).thenReturn(metaDataContexts);
+ for (ShardingSphereDatabase each : databases) {
+ when(result.getDatabase(each.getName())).thenReturn(each);
+ }
return result;
}
diff --git
a/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/Portal.java
b/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/Portal.java
index b125e12cdb9..91c9daeeb80 100644
---
a/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/Portal.java
+++
b/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/Portal.java
@@ -91,7 +91,7 @@ public final class Portal {
if (sqlStatementContext instanceof ParameterAware) {
((ParameterAware) sqlStatementContext).setUpParameters(params);
}
- DatabaseType protocolType =
ProxyContext.getInstance().getDatabase(databaseName).getProtocolType();
+ DatabaseType protocolType =
ProxyContext.getInstance().getContextManager().getDatabase(databaseName).getProtocolType();
QueryContext queryContext = new QueryContext(sqlStatementContext,
preparedStatement.getSql(), params, preparedStatement.getHintValueContext(),
true);
databaseConnectionManager.getConnectionSession().setQueryContext(queryContext);
proxyBackendHandler =
ProxyBackendHandlerFactory.newInstance(protocolType, queryContext,
databaseConnectionManager.getConnectionSession(), true);
diff --git
a/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutor.java
b/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutor.java
index c847dfec699..c2362173c7f 100644
---
a/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutor.java
+++
b/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutor.java
@@ -166,7 +166,7 @@ public final class PostgreSQLComDescribeExecutor implements
CommandExecutor {
}
private ShardingSphereTable getTableFromMetaData(final String
databaseName, final InsertStatement insertStatement, final String
logicTableName) {
- ShardingSphereDatabase database =
ProxyContext.getInstance().getDatabase(databaseName);
+ ShardingSphereDatabase database =
ProxyContext.getInstance().getContextManager().getDatabase(databaseName);
String schemaName = insertStatement.getTable().getOwner().map(optional
-> optional.getIdentifier()
.getValue()).orElseGet(() -> new
DatabaseTypeRegistry(database.getProtocolType()).getDefaultSchemaName(databaseName));
return database.getSchema(schemaName).getTable(logicTableName);
@@ -241,7 +241,7 @@ public final class PostgreSQLComDescribeExecutor implements
CommandExecutor {
SQLStatementContext sqlStatementContext = new
SQLBindEngine(metaDataContexts.getMetaData(), databaseName,
logicPreparedStatement.getHintValueContext())
.bind(logicPreparedStatement.getSqlStatementContext().getSqlStatement(),
Collections.emptyList());
QueryContext queryContext = new QueryContext(sqlStatementContext,
logicPreparedStatement.getSql(), Collections.emptyList(),
logicPreparedStatement.getHintValueContext());
- ShardingSphereDatabase database =
ProxyContext.getInstance().getDatabase(databaseName);
+ ShardingSphereDatabase database =
ProxyContext.getInstance().getContextManager().getDatabase(databaseName);
ExecutionContext executionContext = new
KernelProcessor().generateExecutionContext(
queryContext, database,
metaDataContexts.getMetaData().getGlobalRuleMetaData(),
metaDataContexts.getMetaData().getProps(),
connectionSession.getConnectionContext());
ExecutionUnit executionUnitSample =
executionContext.getExecutionUnits().iterator().next();
diff --git
a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PortalTest.java
b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PortalTest.java
index 97e3734e45f..2a2093eb838 100644
---
a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PortalTest.java
+++
b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PortalTest.java
@@ -105,10 +105,9 @@ class PortalTest {
@BeforeEach
void setup() throws SQLException {
- ContextManager contextManager = mockContextManager();
-
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
ShardingSphereDatabase database = mockDatabase();
-
when(ProxyContext.getInstance().getDatabase("foo_db")).thenReturn(database);
+ ContextManager contextManager = mockContextManager(database);
+
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
ConnectionSession connectionSession = mock(ConnectionSession.class);
when(connectionSession.getDefaultDatabaseName()).thenReturn("foo_db");
when(ProxyBackendHandlerFactory.newInstance(any(PostgreSQLDatabaseType.class),
anyString(), any(SQLStatement.class), eq(connectionSession),
any(HintValueContext.class)))
@@ -117,10 +116,11 @@ class PortalTest {
when(databaseConnectionManager.getConnectionSession()).thenReturn(connectionSession);
}
- private ContextManager mockContextManager() {
+ private ContextManager mockContextManager(final ShardingSphereDatabase
database) {
ContextManager result = mock(ContextManager.class,
Answers.RETURNS_DEEP_STUBS);
when(result.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true);
when(result.getMetaDataContexts().getMetaData().getProps().getValue(ConfigurationPropertyKey.SQL_SHOW)).thenReturn(false);
+ when(result.getDatabase("foo_db")).thenReturn(database);
return result;
}
diff --git
a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/bind/PostgreSQLComBindExecutorTest.java
b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/bind/PostgreSQLComBindExecutorTest.java
index 7b46a4aad56..51df452d4f3 100644
---
a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/bind/PostgreSQLComBindExecutorTest.java
+++
b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/bind/PostgreSQLComBindExecutorTest.java
@@ -92,8 +92,8 @@ class PostgreSQLComBindExecutorTest {
when(bindPacket.readParameters(anyList())).thenReturn(Collections.emptyList());
when(bindPacket.readResultFormats()).thenReturn(Collections.emptyList());
ContextManager contextManager = mock(ContextManager.class,
Answers.RETURNS_DEEP_STUBS);
+ when(contextManager.getDatabase(databaseName)).thenReturn(database);
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getDatabase(databaseName)).thenReturn(database);
Collection<DatabasePacket> actual = executor.execute();
assertThat(actual.size(), is(1));
assertThat(actual.iterator().next(),
is(PostgreSQLBindCompletePacket.getInstance()));
@@ -122,8 +122,8 @@ class PostgreSQLComBindExecutorTest {
when(bindPacket.readParameters(anyList())).thenReturn(parameters);
when(bindPacket.readResultFormats()).thenReturn(Collections.emptyList());
ContextManager contextManager = mock(ContextManager.class,
Answers.RETURNS_DEEP_STUBS);
+ when(contextManager.getDatabase(databaseName)).thenReturn(database);
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().getDatabase(databaseName)).thenReturn(database);
executor.execute();
assertThat(connectionSession.getQueryContext().getParameters(),
is(Arrays.asList(parameters.get(1), parameters.get(0))));
}
diff --git
a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java
b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java
index 0a75c60f32b..ade2ec87a87 100644
---
a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java
+++
b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java
@@ -147,8 +147,6 @@ class PostgreSQLComDescribeExecutorTest {
when(sqlStatementContext.getSqlStatement()).thenReturn(sqlStatement);
ContextManager contextManager = mockContextManager();
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
- ShardingSphereDatabase database =
contextManager.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME);
-
when(ProxyContext.getInstance().getDatabase(DATABASE_NAME)).thenReturn(database);
List<Integer> parameterIndexes = IntStream.range(0,
sqlStatement.getParameterCount()).boxed().collect(Collectors.toList());
connectionSession.getServerPreparedStatementRegistry().addPreparedStatement(statementId,
new PostgreSQLServerPreparedStatement(sql, sqlStatementContext, new
HintValueContext(), parameterTypes,
parameterIndexes));
@@ -179,8 +177,6 @@ class PostgreSQLComDescribeExecutorTest {
when(sqlStatementContext.getSqlStatement()).thenReturn(sqlStatement);
ContextManager contextManager = mockContextManager();
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
- ShardingSphereDatabase database =
contextManager.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME);
-
when(ProxyContext.getInstance().getDatabase(DATABASE_NAME)).thenReturn(database);
List<Integer> parameterIndexes = IntStream.range(0,
sqlStatement.getParameterCount()).boxed().collect(Collectors.toList());
connectionSession.getServerPreparedStatementRegistry().addPreparedStatement(statementId,
new PostgreSQLServerPreparedStatement(sql, sqlStatementContext, new
HintValueContext(), parameterTypes,
parameterIndexes));
@@ -211,8 +207,6 @@ class PostgreSQLComDescribeExecutorTest {
when(sqlStatementContext.getSqlStatement()).thenReturn(sqlStatement);
ContextManager contextManager = mockContextManager();
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
- ShardingSphereDatabase database =
contextManager.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME);
-
when(ProxyContext.getInstance().getDatabase(DATABASE_NAME)).thenReturn(database);
List<Integer> parameterIndexes = IntStream.range(0,
sqlStatement.getParameterCount()).boxed().collect(Collectors.toList());
connectionSession.getServerPreparedStatementRegistry().addPreparedStatement(statementId,
new PostgreSQLServerPreparedStatement(sql, sqlStatementContext, new
HintValueContext(), parameterTypes,
parameterIndexes));
@@ -243,8 +237,6 @@ class PostgreSQLComDescribeExecutorTest {
when(sqlStatementContext.getSqlStatement()).thenReturn(sqlStatement);
ContextManager contextManager = mockContextManager();
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
- ShardingSphereDatabase database =
contextManager.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME);
-
when(ProxyContext.getInstance().getDatabase(DATABASE_NAME)).thenReturn(database);
List<Integer> parameterIndexes = IntStream.range(0,
sqlStatement.getParameterCount()).boxed().collect(Collectors.toList());
connectionSession.getServerPreparedStatementRegistry().addPreparedStatement(statementId,
new PostgreSQLServerPreparedStatement(sql,
sqlStatementContext, new HintValueContext(), parameterTypes, parameterIndexes));
@@ -267,8 +259,6 @@ class PostgreSQLComDescribeExecutorTest {
when(sqlStatementContext.getSqlStatement()).thenReturn(sqlStatement);
ContextManager contextManager = mockContextManager();
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
- ShardingSphereDatabase database =
contextManager.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME);
-
when(ProxyContext.getInstance().getDatabase(DATABASE_NAME)).thenReturn(database);
List<Integer> parameterIndexes = IntStream.range(0,
sqlStatement.getParameterCount()).boxed().collect(Collectors.toList());
connectionSession.getServerPreparedStatementRegistry().addPreparedStatement(statementId,
new PostgreSQLServerPreparedStatement(sql, sqlStatementContext, new
HintValueContext(), parameterTypes,
parameterIndexes));
@@ -349,8 +339,6 @@ class PostgreSQLComDescribeExecutorTest {
List<PostgreSQLColumnType> parameterTypes = new
ArrayList<>(Collections.singleton(PostgreSQLColumnType.UNSPECIFIED));
ContextManager contextManager = mockContextManager();
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
- ShardingSphereDatabase database =
contextManager.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME);
-
when(ProxyContext.getInstance().getDatabase(DATABASE_NAME)).thenReturn(database);
List<Integer> parameterIndexes = IntStream.range(0,
sqlStatement.getParameterCount()).boxed().collect(Collectors.toList());
connectionSession.getServerPreparedStatementRegistry().addPreparedStatement(statementId,
new PostgreSQLServerPreparedStatement(sql,
sqlStatementContext, new HintValueContext(), parameterTypes, parameterIndexes));
@@ -407,6 +395,8 @@ class PostgreSQLComDescribeExecutorTest {
when(result.getMetaDataContexts().getMetaData().containsDatabase(DATABASE_NAME)).thenReturn(true);
when(result.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME).containsSchema("public")).thenReturn(true);
when(result.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME).getSchema("public").containsTable(TABLE_NAME)).thenReturn(true);
+ ShardingSphereDatabase database =
result.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME);
+ when(result.getDatabase(DATABASE_NAME)).thenReturn(database);
return result;
}