You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by me...@apache.org on 2020/10/02 10:50:07 UTC
[shardingsphere] branch master updated: Simplify SchemaContexts
(#7686)
This is an automated email from the ASF dual-hosted git repository.
menghaoran 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 794a355 Simplify SchemaContexts (#7686)
794a355 is described below
commit 794a35521634f921ecdd823d5a3f6833a8860df1
Author: Liang Zhang <te...@163.com>
AuthorDate: Fri Oct 2 18:49:45 2020 +0800
Simplify SchemaContexts (#7686)
* Add SchemaContexts.getExecutorKernel()
* Use SchemaContexts.getExecutorKernel()
* Remove RuntimeContext.executorKernel
* Remove RuntimeContext.executorKernel
* Add SchemaContexts.getSQLParserEngine
* Use SchemaContexts.getSQLParserEngine
* Remove RuntimeContext.sqlParserEngine
* Remove RuntimeContext
* Refactor MySQLComStmtPrepareExecutor
* Refactor SchemaContexts
* Remove SchemaContext
* Refactor SchemaContextsBuilder
---
.../context/schema/GovernanceSchemaContexts.java | 154 +++++++++++----------
.../schema/GovernanceSchemaContextsTest.java | 52 ++++---
.../infra/context/schema/SchemaContext.java | 35 -----
.../infra/context/schema/SchemaContexts.java | 31 ++++-
.../context/schema/SchemaContextsBuilder.java | 24 ++--
.../schema/impl/StandardSchemaContexts.java | 25 ++--
.../context/schema/runtime/RuntimeContext.java | 35 -----
.../context/schema/SchemaContextsBuilderTest.java | 12 +-
.../schema/impl/StandardSchemaContextsTest.java | 22 ++-
.../shardingsphere/dbtest/engine/BaseIT.java | 2 +-
.../driver/executor/PreparedStatementExecutor.java | 6 +-
.../driver/executor/StatementExecutor.java | 6 +-
.../batch/BatchPreparedStatementExecutor.java | 2 +-
.../jdbc/adapter/AbstractResultSetAdapter.java | 2 +-
.../core/datasource/ShardingSphereDataSource.java | 2 +-
.../metadata/ShardingSphereDatabaseMetaData.java | 6 +-
.../statement/ShardingSpherePreparedStatement.java | 26 ++--
.../core/statement/ShardingSphereStatement.java | 27 ++--
.../driver/executor/AbstractBaseExecutorTest.java | 4 +-
.../connection/ShardingSphereConnectionTest.java | 2 +-
.../ShardingSphereDatabaseMetaDataTest.java | 10 +-
.../GovernanceShardingSphereDataSource.java | 10 +-
.../GovernanceShardingSphereDataSourceTest.java | 8 +-
.../spring/boot/SpringBootStarterTest.java | 2 +-
.../shardingsphere/spring/SpringNamespaceTest.java | 2 +-
.../type/GovernanceSpringBootEncryptTest.java | 4 +-
...nceSpringBootPrimaryReplicaReplicationTest.java | 4 +-
.../GovernanceSpringBootRegistryEncryptTest.java | 4 +-
...gBootRegistryPrimaryReplicaReplicationTest.java | 2 +-
.../GovernanceSpringBootRegistryShardingTest.java | 10 +-
.../type/GovernanceSpringBootShardingTest.java | 10 +-
.../governance/GovernanceEncryptNamespaceTest.java | 2 +-
...ancePrimaryReplicaReplicationNamespaceTest.java | 2 +-
.../GovernanceShardingNamespaceTest.java | 6 +-
...dingPrimaryReplicaReplicationNamespaceTest.java | 4 +-
.../DatabaseCommunicationEngineFactory.java | 8 +-
.../jdbc/datasource/JDBCBackendDataSource.java | 2 +-
.../execute/engine/jdbc/JDBCExecuteEngine.java | 4 +-
.../proxy/backend/context/ProxyContext.java | 16 +--
.../backend/response/query/QueryHeaderBuilder.java | 16 +--
.../text/admin/BroadcastBackendHandler.java | 2 +-
.../text/admin/ShowTablesBackendHandler.java | 8 +-
.../backend/text/admin/UnicastBackendHandler.java | 10 +-
.../backend/text/query/QueryBackendHandler.java | 8 +-
.../explain/ShardingCTLExplainBackendHandler.java | 20 +--
.../executor/HintShowTableStatusExecutor.java | 10 +-
.../DatabaseCommunicationEngineFactoryTest.java | 17 ++-
.../jdbc/connection/BackendConnectionTest.java | 19 ++-
.../jdbc/datasource/JDBCBackendDataSourceTest.java | 18 +--
.../proxy/backend/context/ProxyContextTest.java | 44 +++---
.../response/query/QueryHeaderBuilderTest.java | 41 +++---
.../text/admin/BroadcastBackendHandlerTest.java | 18 +--
.../backend/text/admin/RDLBackendHandlerTest.java | 15 +-
.../admin/ShowDatabasesBackendHandlerTest.java | 16 ++-
.../text/admin/ShowTablesBackendHandlerTest.java | 21 +--
.../text/admin/UnicastBackendHandlerTest.java | 14 +-
.../text/admin/UseDatabaseBackendHandlerTest.java | 14 +-
.../ShardingCTLExplainBackendHandlerTest.java | 15 +-
.../hint/ShardingCTLHintBackendHandlerTest.java | 18 +--
.../sctl/set/ShardingCTLSetBackendHandlerTest.java | 14 +-
.../init/impl/AbstractBootstrapInitializer.java | 10 +-
.../impl/GovernanceBootstrapInitializerTest.java | 4 +-
.../frontend/netty/ServerHandlerInitializer.java | 2 +-
.../mysql/command/MySQLCommandExecutorFactory.java | 2 +-
.../execute/MySQLComStmtExecuteExecutor.java | 2 +-
.../prepare/MySQLComStmtPrepareExecutor.java | 13 +-
.../fieldlist/MySQLComFieldListPacketExecutor.java | 2 +-
.../frontend/mysql/MySQLFrontendEngineTest.java | 18 +--
.../mysql/auth/MySQLAuthenticationEngineTest.java | 9 +-
.../mysql/auth/MySQLAuthenticationHandlerTest.java | 16 +--
.../command/MySQLCommandExecutorFactoryTest.java | 9 +-
.../execute/MySQLComStmtExecuteExecutorTest.java | 9 +-
.../binary/bind/PostgreSQLComBindExecutor.java | 8 +-
.../binary/parse/PostgreSQLComParseExecutor.java | 6 +-
.../parse/PostgreSQLComParseExecutorTest.java | 26 ++--
75 files changed, 518 insertions(+), 561 deletions(-)
diff --git a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/main/java/org/apache/shardingsphere/governance/context/schema/GovernanceSchemaContexts.java b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/main/java/org/apache/shardingsphere/governance/context/schema/GovernanceSchemaContexts.java
index ecb5422..7fe5f3b 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/main/java/org/apache/shardingsphere/governance/context/schema/GovernanceSchemaContexts.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/main/java/org/apache/shardingsphere/governance/context/schema/GovernanceSchemaContexts.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.governance.context.schema;
import com.google.common.collect.Maps;
import com.google.common.eventbus.Subscribe;
+import org.apache.shardingsphere.governance.core.event.GovernanceEventBus;
import org.apache.shardingsphere.governance.core.event.model.auth.AuthenticationChangedEvent;
import org.apache.shardingsphere.governance.core.event.model.datasource.DataSourceChangeCompletedEvent;
import org.apache.shardingsphere.governance.core.event.model.datasource.DataSourceChangedEvent;
@@ -27,7 +28,6 @@ import org.apache.shardingsphere.governance.core.event.model.props.PropertiesCha
import org.apache.shardingsphere.governance.core.event.model.rule.RuleConfigurationsChangedEvent;
import org.apache.shardingsphere.governance.core.event.model.schema.SchemaAddedEvent;
import org.apache.shardingsphere.governance.core.event.model.schema.SchemaDeletedEvent;
-import org.apache.shardingsphere.governance.core.event.GovernanceEventBus;
import org.apache.shardingsphere.governance.core.facade.GovernanceFacade;
import org.apache.shardingsphere.governance.core.registry.event.CircuitStateChangedEvent;
import org.apache.shardingsphere.governance.core.registry.event.DisabledStateChangedEvent;
@@ -37,13 +37,9 @@ import org.apache.shardingsphere.infra.config.RuleConfiguration;
import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
import org.apache.shardingsphere.infra.config.datasource.DataSourceConverter;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.SchemaContexts;
import org.apache.shardingsphere.infra.context.schema.SchemaContextsBuilder;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
-import org.apache.shardingsphere.infra.context.schema.runtime.RuntimeContext;
-import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.database.type.DatabaseTypes;
import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
@@ -52,6 +48,8 @@ import org.apache.shardingsphere.infra.metadata.schema.RuleSchemaMetaData;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.infra.rule.StatusContainedRule;
import org.apache.shardingsphere.infra.rule.event.impl.DataSourceNameDisabledEvent;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import javax.sql.DataSource;
import java.io.IOException;
@@ -84,8 +82,8 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
}
private void disableDataSources() {
- schemaContexts.getSchemaContextMap().forEach((key, value)
- -> value.getSchema().getRules().stream().filter(each -> each instanceof StatusContainedRule).forEach(each -> disableDataSources(key, (StatusContainedRule) each)));
+ schemaContexts.getSchemas().forEach((key, value)
+ -> value.getRules().stream().filter(each -> each instanceof StatusContainedRule).forEach(each -> disableDataSources(key, (StatusContainedRule) each)));
}
private void disableDataSources(final String schemaName, final StatusContainedRule rule) {
@@ -98,8 +96,7 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
}
private void persistMetaData() {
- schemaContexts.getSchemaContextMap().forEach((key, value) -> governanceFacade.getConfigCenter()
- .persistMetaData(key, value.getSchema().getMetaData().getRuleSchemaMetaData()));
+ schemaContexts.getSchemas().forEach((key, value) -> governanceFacade.getConfigCenter().persistMetaData(key, value.getMetaData().getRuleSchemaMetaData()));
}
@Override
@@ -118,13 +115,23 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
}
@Override
- public Map<String, SchemaContext> getSchemaContextMap() {
- return schemaContexts.getSchemaContextMap();
+ public Map<String, ShardingSphereSchema> getSchemas() {
+ return schemaContexts.getSchemas();
}
@Override
- public SchemaContext getDefaultSchemaContext() {
- return schemaContexts.getDefaultSchemaContext();
+ public ShardingSphereSchema getDefaultSchema() {
+ return schemaContexts.getDefaultSchema();
+ }
+
+ @Override
+ public ShardingSphereSQLParserEngine getSqlParserEngine() {
+ return schemaContexts.getSqlParserEngine();
+ }
+
+ @Override
+ public ExecutorKernel getExecutorKernel() {
+ return schemaContexts.getExecutorKernel();
}
@Override
@@ -156,13 +163,13 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
*/
@Subscribe
public synchronized void renew(final SchemaAddedEvent event) throws SQLException {
- Map<String, SchemaContext> schemas = new HashMap<>(schemaContexts.getSchemaContextMap());
+ Map<String, ShardingSphereSchema> schemas = new HashMap<>(schemaContexts.getSchemas());
schemas.put(event.getSchemaName(), createAddedSchemaContext(event));
- schemaContexts = new StandardSchemaContexts(schemas, schemaContexts.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType());
- governanceFacade.getConfigCenter().persistMetaData(event.getSchemaName(),
- schemaContexts.getSchemaContextMap().get(event.getSchemaName()).getSchema().getMetaData().getRuleSchemaMetaData());
+ schemaContexts = new StandardSchemaContexts(schemas,
+ schemaContexts.getSqlParserEngine(), schemaContexts.getExecutorKernel(), schemaContexts.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType());
+ governanceFacade.getConfigCenter().persistMetaData(event.getSchemaName(), schemaContexts.getSchemas().get(event.getSchemaName()).getMetaData().getRuleSchemaMetaData());
GovernanceEventBus.getInstance().post(
- new DataSourceChangeCompletedEvent(event.getSchemaName(), schemaContexts.getDatabaseType(), schemas.get(event.getSchemaName()).getSchema().getDataSources()));
+ new DataSourceChangeCompletedEvent(event.getSchemaName(), schemaContexts.getDatabaseType(), schemas.get(event.getSchemaName()).getDataSources()));
}
/**
@@ -172,9 +179,10 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
*/
@Subscribe
public synchronized void renew(final SchemaDeletedEvent event) {
- Map<String, SchemaContext> schemas = new HashMap<>(schemaContexts.getSchemaContextMap());
+ Map<String, ShardingSphereSchema> schemas = new HashMap<>(schemaContexts.getSchemas());
schemas.remove(event.getSchemaName());
- schemaContexts = new StandardSchemaContexts(schemas, schemaContexts.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType());
+ schemaContexts = new StandardSchemaContexts(schemas, schemaContexts.getSqlParserEngine(), schemaContexts.getExecutorKernel(),
+ schemaContexts.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType());
governanceFacade.getConfigCenter().deleteSchema(event.getSchemaName());
}
@@ -186,7 +194,8 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
@Subscribe
public synchronized void renew(final PropertiesChangedEvent event) {
ConfigurationProperties props = new ConfigurationProperties(event.getProps());
- schemaContexts = new StandardSchemaContexts(getChangedSchemaContexts(props), schemaContexts.getAuthentication(), props, schemaContexts.getDatabaseType());
+ schemaContexts = new StandardSchemaContexts(getChangedSchemas(), schemaContexts.getSqlParserEngine(), schemaContexts.getExecutorKernel(),
+ schemaContexts.getAuthentication(), props, schemaContexts.getDatabaseType());
}
/**
@@ -196,7 +205,8 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
*/
@Subscribe
public synchronized void renew(final AuthenticationChangedEvent event) {
- schemaContexts = new StandardSchemaContexts(schemaContexts.getSchemaContextMap(), event.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType());
+ schemaContexts = new StandardSchemaContexts(schemaContexts.getSchemas(), schemaContexts.getSqlParserEngine(), schemaContexts.getExecutorKernel(),
+ event.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType());
}
/**
@@ -206,16 +216,15 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
*/
@Subscribe
public synchronized void renew(final MetaDataChangedEvent event) {
- Map<String, SchemaContext> newSchemaContexts = new HashMap<>(schemaContexts.getSchemaContextMap().size(), 1);
- for (Entry<String, SchemaContext> entry : schemaContexts.getSchemaContextMap().entrySet()) {
+ Map<String, ShardingSphereSchema> newSchemas = new HashMap<>(schemaContexts.getSchemas().size(), 1);
+ for (Entry<String, ShardingSphereSchema> entry : schemaContexts.getSchemas().entrySet()) {
String schemaName = entry.getKey();
- SchemaContext oldSchemaContext = entry.getValue();
- SchemaContext newSchemaContext = event.getSchemaNames().contains(schemaName)
- ? new SchemaContext(getChangedShardingSphereSchema(oldSchemaContext.getSchema(), event.getRuleSchemaMetaData(), schemaName),
- oldSchemaContext.getRuntimeContext()) : oldSchemaContext;
- newSchemaContexts.put(schemaName, newSchemaContext);
+ ShardingSphereSchema oldSchema = entry.getValue();
+ ShardingSphereSchema newSchema = event.getSchemaNames().contains(schemaName) ? getChangedShardingSphereSchema(oldSchema, event.getRuleSchemaMetaData(), schemaName) : oldSchema;
+ newSchemas.put(schemaName, newSchema);
}
- schemaContexts = new StandardSchemaContexts(newSchemaContexts, schemaContexts.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType());
+ schemaContexts = new StandardSchemaContexts(newSchemas, schemaContexts.getSqlParserEngine(), schemaContexts.getExecutorKernel(),
+ schemaContexts.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType());
}
/**
@@ -226,12 +235,13 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
*/
@Subscribe
public synchronized void renew(final RuleConfigurationsChangedEvent event) throws SQLException {
- Map<String, SchemaContext> newSchemaContexts = new HashMap<>(schemaContexts.getSchemaContextMap());
+ Map<String, ShardingSphereSchema> newSchemaContexts = new HashMap<>(schemaContexts.getSchemas());
String schemaName = event.getSchemaName();
newSchemaContexts.remove(schemaName);
- newSchemaContexts.put(schemaName, getChangedSchemaContext(schemaContexts.getSchemaContextMap().get(schemaName), event.getRuleConfigurations()));
- schemaContexts = new StandardSchemaContexts(newSchemaContexts, schemaContexts.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType());
- governanceFacade.getConfigCenter().persistMetaData(schemaName, newSchemaContexts.get(schemaName).getSchema().getMetaData().getRuleSchemaMetaData());
+ newSchemaContexts.put(schemaName, getChangedSchema(schemaContexts.getSchemas().get(schemaName), event.getRuleConfigurations()));
+ schemaContexts = new StandardSchemaContexts(newSchemaContexts, schemaContexts.getSqlParserEngine(), schemaContexts.getExecutorKernel(),
+ schemaContexts.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType());
+ governanceFacade.getConfigCenter().persistMetaData(schemaName, newSchemaContexts.get(schemaName).getMetaData().getRuleSchemaMetaData());
}
/**
@@ -243,12 +253,13 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
@Subscribe
public synchronized void renew(final DataSourceChangedEvent event) throws SQLException {
String schemaName = event.getSchemaName();
- Map<String, SchemaContext> newSchemaContexts = new HashMap<>(schemaContexts.getSchemaContextMap());
- newSchemaContexts.remove(schemaName);
- newSchemaContexts.put(schemaName, getChangedSchemaContext(schemaContexts.getSchemaContextMap().get(schemaName), event.getDataSourceConfigurations()));
- schemaContexts = new StandardSchemaContexts(newSchemaContexts, schemaContexts.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType());
+ Map<String, ShardingSphereSchema> newSchemas = new HashMap<>(schemaContexts.getSchemas());
+ newSchemas.remove(schemaName);
+ newSchemas.put(schemaName, getChangedSchema(schemaContexts.getSchemas().get(schemaName), event.getDataSourceConfigurations()));
+ schemaContexts = new StandardSchemaContexts(newSchemas, schemaContexts.getSqlParserEngine(), schemaContexts.getExecutorKernel(),
+ schemaContexts.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType());
GovernanceEventBus.getInstance().post(
- new DataSourceChangeCompletedEvent(event.getSchemaName(), schemaContexts.getDatabaseType(), newSchemaContexts.get(event.getSchemaName()).getSchema().getDataSources()));
+ new DataSourceChangeCompletedEvent(event.getSchemaName(), schemaContexts.getDatabaseType(), newSchemas.get(event.getSchemaName()).getDataSources()));
}
/**
@@ -259,7 +270,7 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
@Subscribe
public synchronized void renew(final DisabledStateChangedEvent event) {
GovernanceSchema governanceSchema = event.getGovernanceSchema();
- Collection<ShardingSphereRule> rules = schemaContexts.getSchemaContextMap().get(governanceSchema.getSchemaName()).getSchema().getRules();
+ Collection<ShardingSphereRule> rules = schemaContexts.getSchemas().get(governanceSchema.getSchemaName()).getRules();
for (ShardingSphereRule each : rules) {
if (each instanceof StatusContainedRule) {
((StatusContainedRule) each).updateRuleStatus(new DataSourceNameDisabledEvent(governanceSchema.getDataSourceName(), event.isDisabled()));
@@ -274,53 +285,50 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
*/
@Subscribe
public synchronized void renew(final CircuitStateChangedEvent event) {
- schemaContexts = new StandardSchemaContexts(
- schemaContexts.getSchemaContextMap(), schemaContexts.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType(), event.isCircuitBreak());
+ schemaContexts = new StandardSchemaContexts(schemaContexts.getSchemas(), schemaContexts.getSqlParserEngine(),
+ schemaContexts.getExecutorKernel(), schemaContexts.getAuthentication(), schemaContexts.getProps(), schemaContexts.getDatabaseType(), event.isCircuitBreak());
}
- private SchemaContext createAddedSchemaContext(final SchemaAddedEvent event) throws SQLException {
+ private ShardingSphereSchema createAddedSchemaContext(final SchemaAddedEvent event) throws SQLException {
String schemaName = event.getSchemaName();
Map<String, Map<String, DataSource>> dataSourcesMap = createDataSourcesMap(Collections.singletonMap(schemaName,
governanceFacade.getConfigCenter().loadDataSourceConfigurations(schemaName)));
DatabaseType databaseType = getDatabaseType(dataSourcesMap);
SchemaContextsBuilder schemaContextsBuilder = new SchemaContextsBuilder(databaseType, dataSourcesMap,
Collections.singletonMap(schemaName, governanceFacade.getConfigCenter().loadRuleConfigurations(schemaName)), schemaContexts.getAuthentication(), schemaContexts.getProps().getProps());
- return schemaContextsBuilder.build().getSchemaContextMap().get(schemaName);
+ return schemaContextsBuilder.build().getSchemas().get(schemaName);
}
- private Map<String, SchemaContext> getChangedSchemaContexts(final ConfigurationProperties props) {
- Map<String, SchemaContext> result = new HashMap<>(schemaContexts.getSchemaContextMap().size());
- for (Entry<String, SchemaContext> entry : schemaContexts.getSchemaContextMap().entrySet()) {
- RuntimeContext runtimeContext = entry.getValue().getRuntimeContext();
- result.put(entry.getKey(), new SchemaContext(
- entry.getValue().getSchema(), new RuntimeContext(new ExecutorKernel(props.<Integer>getValue(ConfigurationPropertyKey.EXECUTOR_SIZE)), runtimeContext.getSqlParserEngine())));
+ private Map<String, ShardingSphereSchema> getChangedSchemas() {
+ Map<String, ShardingSphereSchema> result = new HashMap<>(schemaContexts.getSchemas().size());
+ for (Entry<String, ShardingSphereSchema> entry : schemaContexts.getSchemas().entrySet()) {
+ result.put(entry.getKey(), entry.getValue());
}
return result;
}
- private ShardingSphereSchema getChangedShardingSphereSchema(final ShardingSphereSchema oldShardingSphereSchema, final RuleSchemaMetaData newRuleSchemaMetaData, final String schemaName) {
+ private ShardingSphereSchema getChangedShardingSphereSchema(final ShardingSphereSchema oldSchema, final RuleSchemaMetaData newRuleSchemaMetaData, final String schemaName) {
ShardingSphereMetaData metaData = new ShardingSphereMetaData(
- oldShardingSphereSchema.getMetaData().getDataSourcesMetaData(), newRuleSchemaMetaData, oldShardingSphereSchema.getMetaData().getCachedDatabaseMetaData());
- return new ShardingSphereSchema(schemaName, oldShardingSphereSchema.getConfigurations(), oldShardingSphereSchema.getRules(), oldShardingSphereSchema.getDataSources(), metaData);
+ oldSchema.getMetaData().getDataSourcesMetaData(), newRuleSchemaMetaData, oldSchema.getMetaData().getCachedDatabaseMetaData());
+ return new ShardingSphereSchema(schemaName, oldSchema.getConfigurations(), oldSchema.getRules(), oldSchema.getDataSources(), metaData);
}
- private SchemaContext getChangedSchemaContext(final SchemaContext oldSchemaContext, final Collection<RuleConfiguration> ruleConfigs) throws SQLException {
- ShardingSphereSchema oldSchema = oldSchemaContext.getSchema();
- SchemaContextsBuilder builder = new SchemaContextsBuilder(schemaContexts.getDatabaseType(), Collections.singletonMap(oldSchemaContext.getSchema().getName(), oldSchema.getDataSources()),
- Collections.singletonMap(oldSchemaContext.getSchema().getName(), ruleConfigs), schemaContexts.getAuthentication(), schemaContexts.getProps().getProps());
- return builder.build().getSchemaContextMap().values().iterator().next();
+ private ShardingSphereSchema getChangedSchema(final ShardingSphereSchema oldSchema, final Collection<RuleConfiguration> ruleConfigs) throws SQLException {
+ SchemaContextsBuilder builder = new SchemaContextsBuilder(schemaContexts.getDatabaseType(), Collections.singletonMap(oldSchema.getName(), oldSchema.getDataSources()),
+ Collections.singletonMap(oldSchema.getName(), ruleConfigs), schemaContexts.getAuthentication(), schemaContexts.getProps().getProps());
+ return builder.build().getSchemas().values().iterator().next();
}
- private SchemaContext getChangedSchemaContext(final SchemaContext oldSchemaContext, final Map<String, DataSourceConfiguration> newDataSourceConfigs) throws SQLException {
- Collection<String> deletedDataSources = getDeletedDataSources(oldSchemaContext, newDataSourceConfigs);
- Map<String, DataSource> modifiedDataSources = getModifiedDataSources(oldSchemaContext, newDataSourceConfigs);
- oldSchemaContext.getSchema().closeDataSources(deletedDataSources);
- oldSchemaContext.getSchema().closeDataSources(modifiedDataSources.keySet());
- Map<String, Map<String, DataSource>> dataSourcesMap = Collections.singletonMap(oldSchemaContext.getSchema().getName(),
- getNewDataSources(oldSchemaContext.getSchema().getDataSources(), getAddedDataSources(oldSchemaContext, newDataSourceConfigs), modifiedDataSources, deletedDataSources));
+ private ShardingSphereSchema getChangedSchema(final ShardingSphereSchema oldSchema, final Map<String, DataSourceConfiguration> newDataSourceConfigs) throws SQLException {
+ Collection<String> deletedDataSources = getDeletedDataSources(oldSchema, newDataSourceConfigs);
+ Map<String, DataSource> modifiedDataSources = getModifiedDataSources(oldSchema, newDataSourceConfigs);
+ oldSchema.closeDataSources(deletedDataSources);
+ oldSchema.closeDataSources(modifiedDataSources.keySet());
+ Map<String, Map<String, DataSource>> dataSourcesMap = Collections.singletonMap(oldSchema.getName(),
+ getNewDataSources(oldSchema.getDataSources(), getAddedDataSources(oldSchema, newDataSourceConfigs), modifiedDataSources, deletedDataSources));
return new SchemaContextsBuilder(schemaContexts.getDatabaseType(), dataSourcesMap,
- Collections.singletonMap(oldSchemaContext.getSchema().getName(), oldSchemaContext.getSchema().getConfigurations()), schemaContexts.getAuthentication(),
- schemaContexts.getProps().getProps()).build().getSchemaContextMap().get(oldSchemaContext.getSchema().getName());
+ Collections.singletonMap(oldSchema.getName(), oldSchema.getConfigurations()), schemaContexts.getAuthentication(),
+ schemaContexts.getProps().getProps()).build().getSchemas().get(oldSchema.getName());
}
private Map<String, DataSource> getNewDataSources(final Map<String, DataSource> oldDataSources,
@@ -333,19 +341,19 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
return result;
}
- private Collection<String> getDeletedDataSources(final SchemaContext oldSchemaContext, final Map<String, DataSourceConfiguration> newDataSourceConfigs) {
- Collection<String> result = new LinkedList<>(oldSchemaContext.getSchema().getDataSources().keySet());
+ private Collection<String> getDeletedDataSources(final ShardingSphereSchema oldSchema, final Map<String, DataSourceConfiguration> newDataSourceConfigs) {
+ Collection<String> result = new LinkedList<>(oldSchema.getDataSources().keySet());
result.removeAll(newDataSourceConfigs.keySet());
return result;
}
- private Map<String, DataSource> getAddedDataSources(final SchemaContext oldSchemaContext, final Map<String, DataSourceConfiguration> newDataSourceConfigs) {
- return DataSourceConverter.getDataSourceMap(Maps.filterKeys(newDataSourceConfigs, each -> !oldSchemaContext.getSchema().getDataSources().containsKey(each)));
+ private Map<String, DataSource> getAddedDataSources(final ShardingSphereSchema oldSchema, final Map<String, DataSourceConfiguration> newDataSourceConfigs) {
+ return DataSourceConverter.getDataSourceMap(Maps.filterKeys(newDataSourceConfigs, each -> !oldSchema.getDataSources().containsKey(each)));
}
- private Map<String, DataSource> getModifiedDataSources(final SchemaContext oldSchemaContext, final Map<String, DataSourceConfiguration> newDataSourceConfigs) {
+ private Map<String, DataSource> getModifiedDataSources(final ShardingSphereSchema oldSchema, final Map<String, DataSourceConfiguration> newDataSourceConfigs) {
Map<String, DataSourceConfiguration> modifiedDataSourceConfigs = newDataSourceConfigs.entrySet().stream()
- .filter(entry -> isModifiedDataSource(oldSchemaContext.getSchema().getDataSources(), entry.getKey(), entry.getValue()))
+ .filter(entry -> isModifiedDataSource(oldSchema.getDataSources(), entry.getKey(), entry.getValue()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (key, repeatKey) -> key, LinkedHashMap::new));
return DataSourceConverter.getDataSourceMap(modifiedDataSourceConfigs);
}
diff --git a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/test/java/org/apache/shardingsphere/governance/context/schema/GovernanceSchemaContextsTest.java b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/test/java/org/apache/shardingsphere/governance/context/schema/GovernanceSchemaContextsTest.java
index 3f24c57..7a42e10 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/test/java/org/apache/shardingsphere/governance/context/schema/GovernanceSchemaContextsTest.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/test/java/org/apache/shardingsphere/governance/context/schema/GovernanceSchemaContextsTest.java
@@ -35,16 +35,16 @@ import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
import org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
-import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
-import org.apache.shardingsphere.infra.context.schema.runtime.RuntimeContext;
import org.apache.shardingsphere.infra.database.metadata.DataSourceMetaData;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.schema.RuleSchemaMetaData;
import org.apache.shardingsphere.infra.rule.event.RuleChangedEvent;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.jdbc.test.MockedDataSource;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import org.apache.shardingsphere.replication.primaryreplica.rule.PrimaryReplicaReplicationRule;
import org.junit.Before;
import org.junit.Test;
@@ -92,7 +92,7 @@ public final class GovernanceSchemaContextsTest {
private ConfigCenter configCenter;
@Mock
- private SchemaContext schemaContext;
+ private ShardingSphereSchema schema;
@Mock
private PrimaryReplicaReplicationRule primaryReplicaReplicationRule;
@@ -106,20 +106,16 @@ public final class GovernanceSchemaContextsTest {
when(governanceFacade.getRegistryCenter()).thenReturn(registryCenter);
when(governanceFacade.getConfigCenter()).thenReturn(configCenter);
when(registryCenter.loadDisabledDataSources("schema")).thenReturn(Collections.singletonList("schema.ds_1"));
- governanceSchemaContexts = new GovernanceSchemaContexts(new StandardSchemaContexts(createSchemaContextMap(), authentication, props, databaseType), governanceFacade);
+ governanceSchemaContexts = new GovernanceSchemaContexts(
+ new StandardSchemaContexts(createSchemas(), mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), authentication, props, databaseType), governanceFacade);
}
@SneakyThrows
- private Map<String, SchemaContext> createSchemaContextMap() {
- ShardingSphereSchema shardingSphereSchema = mock(ShardingSphereSchema.class);
- ShardingSphereMetaData shardingSphereMetaData = mock(ShardingSphereMetaData.class);
- RuntimeContext runtimeContext = mock(RuntimeContext.class);
- when(schemaContext.getSchema()).thenReturn(shardingSphereSchema);
- when(schemaContext.getSchema().getName()).thenReturn("schema");
- when(schemaContext.getRuntimeContext()).thenReturn(runtimeContext);
- when(shardingSphereSchema.getMetaData()).thenReturn(shardingSphereMetaData);
- when(shardingSphereSchema.getRules()).thenReturn(Collections.singletonList(primaryReplicaReplicationRule));
- return Collections.singletonMap("schema", schemaContext);
+ private Map<String, ShardingSphereSchema> createSchemas() {
+ when(schema.getName()).thenReturn("schema");
+ when(schema.getMetaData()).thenReturn(mock(ShardingSphereMetaData.class));
+ when(schema.getRules()).thenReturn(Collections.singletonList(primaryReplicaReplicationRule));
+ return Collections.singletonMap("schema", schema);
}
@Test
@@ -128,13 +124,13 @@ public final class GovernanceSchemaContextsTest {
}
@Test
- public void assertGetSchemaContexts() {
- assertThat(governanceSchemaContexts.getSchemaContextMap().get("schema"), is(schemaContext));
+ public void assertGetSchemas() {
+ assertThat(governanceSchemaContexts.getSchemas().get("schema"), is(schema));
}
@Test
- public void assertGetDefaultSchemaContext() {
- assertNull(governanceSchemaContexts.getDefaultSchemaContext());
+ public void assertGetDefaultSchema() {
+ assertNull(governanceSchemaContexts.getDefaultSchema());
}
@Test
@@ -158,8 +154,8 @@ public final class GovernanceSchemaContextsTest {
SchemaAddedEvent event = new SchemaAddedEvent("schema_add", new HashMap<>(), new LinkedList<>());
when(configCenter.loadDataSourceConfigurations("schema_add")).thenReturn(getDataSourceConfigurations());
governanceSchemaContexts.renew(event);
- assertNotNull(governanceSchemaContexts.getSchemaContextMap().get("schema_add"));
- assertNotNull(governanceSchemaContexts.getSchemaContextMap().get("schema_add").getSchema().getDataSources());
+ assertNotNull(governanceSchemaContexts.getSchemas().get("schema_add"));
+ assertNotNull(governanceSchemaContexts.getSchemas().get("schema_add").getDataSources());
}
private Map<String, DataSourceConfiguration> getDataSourceConfigurations() {
@@ -175,7 +171,7 @@ public final class GovernanceSchemaContextsTest {
public void assertSchemaDelete() {
SchemaDeletedEvent event = new SchemaDeletedEvent("schema");
governanceSchemaContexts.renew(event);
- assertNull(governanceSchemaContexts.getSchemaContextMap().get("schema"));
+ assertNull(governanceSchemaContexts.getSchemas().get("schema"));
}
@Test
@@ -199,24 +195,24 @@ public final class GovernanceSchemaContextsTest {
public void assertMetaDataChanged() {
MetaDataChangedEvent event = new MetaDataChangedEvent(Collections.singletonList("schema_changed"), mock(RuleSchemaMetaData.class));
governanceSchemaContexts.renew(event);
- assertTrue(governanceSchemaContexts.getSchemaContextMap().containsKey("schema"));
- assertFalse(governanceSchemaContexts.getSchemaContextMap().containsKey("schema_changed"));
+ assertTrue(governanceSchemaContexts.getSchemas().containsKey("schema"));
+ assertFalse(governanceSchemaContexts.getSchemas().containsKey("schema_changed"));
}
@Test
public void assertMetaDataChangedWithExistSchema() {
MetaDataChangedEvent event = new MetaDataChangedEvent(Collections.singletonList("schema"), mock(RuleSchemaMetaData.class));
governanceSchemaContexts.renew(event);
- assertThat(governanceSchemaContexts.getSchemaContextMap().get("schema"), not(schemaContext));
+ assertThat(governanceSchemaContexts.getSchemas().get("schema"), not(schema));
}
@Test
@SneakyThrows
public void assertRuleConfigurationsChanged() {
- assertThat(governanceSchemaContexts.getSchemaContextMap().get("schema"), is(schemaContext));
+ assertThat(governanceSchemaContexts.getSchemas().get("schema"), is(schema));
RuleConfigurationsChangedEvent event = new RuleConfigurationsChangedEvent("schema", new LinkedList<>());
governanceSchemaContexts.renew(event);
- assertThat(governanceSchemaContexts.getSchemaContextMap().get("schema"), not(schemaContext));
+ assertThat(governanceSchemaContexts.getSchemas().get("schema"), not(schema));
}
@Test
@@ -231,7 +227,7 @@ public final class GovernanceSchemaContextsTest {
public void assertDataSourceChanged() {
DataSourceChangedEvent event = new DataSourceChangedEvent("schema", getChangedDataSourceConfigurations());
governanceSchemaContexts.renew(event);
- assertTrue(governanceSchemaContexts.getSchemaContextMap().get("schema").getSchema().getDataSources().containsKey("ds_2"));
+ assertTrue(governanceSchemaContexts.getSchemas().get("schema").getDataSources().containsKey("ds_2"));
}
private Map<String, DataSourceConfiguration> getChangedDataSourceConfigurations() {
diff --git a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/SchemaContext.java b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/SchemaContext.java
deleted file mode 100644
index 9fb92cc..0000000
--- a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/SchemaContext.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.infra.context.schema;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.context.schema.runtime.RuntimeContext;
-import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
-
-/**
- * Schema context.
- */
-@RequiredArgsConstructor
-@Getter
-public final class SchemaContext {
-
- private final ShardingSphereSchema schema;
-
- private final RuntimeContext runtimeContext;
-}
diff --git a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/SchemaContexts.java b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/SchemaContexts.java
index ae9877d..cc53ddd 100644
--- a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/SchemaContexts.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/SchemaContexts.java
@@ -20,6 +20,9 @@ package org.apache.shardingsphere.infra.context.schema;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import java.io.Closeable;
import java.util.Map;
@@ -37,18 +40,32 @@ public interface SchemaContexts extends Closeable {
DatabaseType getDatabaseType();
/**
- * Get schema contexts.
- *
- * @return schema contexts
+ * Get schemas.
+ *
+ * @return schemas
*/
- Map<String, SchemaContext> getSchemaContextMap();
+ Map<String, ShardingSphereSchema> getSchemas();
/**
- * Get default schema context.
+ * Get default schema.
*
- * @return default schema context
+ * @return default schema
+ */
+ ShardingSphereSchema getDefaultSchema();
+
+ /**
+ * Get SQL parser engine.
+ *
+ * @return SQL parser engine
+ */
+ ShardingSphereSQLParserEngine getSqlParserEngine();
+
+ /**
+ * Get executor kernel.
+ *
+ * @return executor kernel
*/
- SchemaContext getDefaultSchemaContext();
+ ExecutorKernel getExecutorKernel();
/**
* Get authentication.
diff --git a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/SchemaContextsBuilder.java b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/SchemaContextsBuilder.java
index b2b098e..a4250cc 100644
--- a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/SchemaContextsBuilder.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/SchemaContextsBuilder.java
@@ -23,19 +23,19 @@ import org.apache.shardingsphere.infra.config.DatabaseAccessConfiguration;
import org.apache.shardingsphere.infra.config.RuleConfiguration;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
import org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
+import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.database.type.DatabaseTypes;
import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import org.apache.shardingsphere.infra.metadata.datasource.CachedDatabaseMetaData;
import org.apache.shardingsphere.infra.metadata.datasource.DataSourcesMetaData;
import org.apache.shardingsphere.infra.metadata.schema.RuleSchemaMetaData;
import org.apache.shardingsphere.infra.metadata.schema.RuleSchemaMetaDataLoader;
-import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.infra.rule.ShardingSphereRulesBuilder;
-import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
-import org.apache.shardingsphere.infra.metadata.datasource.CachedDatabaseMetaData;
-import org.apache.shardingsphere.infra.context.schema.runtime.RuntimeContext;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngineFactory;
import javax.sql.DataSource;
@@ -65,6 +65,8 @@ public final class SchemaContextsBuilder {
private final ConfigurationProperties props;
+ private final ShardingSphereSQLParserEngine sqlParserEngine;
+
private final ExecutorKernel executorKernel;
public SchemaContextsBuilder(final DatabaseType databaseType, final Map<String, Map<String, DataSource>> dataSources,
@@ -79,6 +81,7 @@ public final class SchemaContextsBuilder {
this.ruleConfigs = ruleConfigs;
this.authentication = authentication;
this.props = new ConfigurationProperties(null == props ? new Properties() : props);
+ sqlParserEngine = ShardingSphereSQLParserEngineFactory.getSQLParserEngine(DatabaseTypes.getTrunkDatabaseTypeName(databaseType));
executorKernel = new ExecutorKernel(this.props.<Integer>getValue(ConfigurationPropertyKey.EXECUTOR_SIZE));
}
@@ -89,19 +92,14 @@ public final class SchemaContextsBuilder {
* @return schema contexts
*/
public SchemaContexts build() throws SQLException {
- Map<String, SchemaContext> schemaContexts = new LinkedHashMap<>(ruleConfigs.size(), 1);
+ Map<String, ShardingSphereSchema> schemas = new LinkedHashMap<>(ruleConfigs.size(), 1);
for (String each : ruleConfigs.keySet()) {
- schemaContexts.put(each, createSchemaContext(each));
+ schemas.put(each, createSchema(each));
}
- return new StandardSchemaContexts(schemaContexts, authentication, props, databaseType);
- }
-
- private SchemaContext createSchemaContext(final String schemaName) throws SQLException {
- RuntimeContext runtimeContext = new RuntimeContext(executorKernel, ShardingSphereSQLParserEngineFactory.getSQLParserEngine(DatabaseTypes.getTrunkDatabaseTypeName(databaseType)));
- return new SchemaContext(createShardingSphereSchema(schemaName), runtimeContext);
+ return new StandardSchemaContexts(schemas, sqlParserEngine, executorKernel, authentication, props, databaseType);
}
- private ShardingSphereSchema createShardingSphereSchema(final String schemaName) throws SQLException {
+ private ShardingSphereSchema createSchema(final String schemaName) throws SQLException {
Map<String, DataSource> dataSources = this.dataSources.get(schemaName);
Collection<RuleConfiguration> ruleConfigs = this.ruleConfigs.get(schemaName);
Collection<ShardingSphereRule> rules = ShardingSphereRulesBuilder.build(ruleConfigs, dataSources.keySet());
diff --git a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/impl/StandardSchemaContexts.java b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/impl/StandardSchemaContexts.java
index 5d435d6..5f050da 100644
--- a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/impl/StandardSchemaContexts.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/impl/StandardSchemaContexts.java
@@ -21,11 +21,13 @@ import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
+import org.apache.shardingsphere.infra.context.schema.SchemaContexts;
import org.apache.shardingsphere.infra.database.DefaultSchema;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
-import org.apache.shardingsphere.infra.context.schema.SchemaContexts;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import java.util.HashMap;
import java.util.Map;
@@ -38,7 +40,11 @@ import java.util.Properties;
@Getter
public final class StandardSchemaContexts implements SchemaContexts {
- private final Map<String, SchemaContext> schemaContextMap;
+ private final Map<String, ShardingSphereSchema> schemas;
+
+ private final ShardingSphereSQLParserEngine sqlParserEngine;
+
+ private final ExecutorKernel executorKernel;
private final Authentication authentication;
@@ -50,20 +56,21 @@ public final class StandardSchemaContexts implements SchemaContexts {
public StandardSchemaContexts() {
// TODO MySQLDatabaseType is invalid because it can not update again
- this(new HashMap<>(), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType(), false);
+ this(new HashMap<>(), null, null, new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType(), false);
}
- public StandardSchemaContexts(final Map<String, SchemaContext> schemaContextMap, final Authentication authentication, final ConfigurationProperties props, final DatabaseType databaseType) {
- this(schemaContextMap, authentication, props, databaseType, false);
+ public StandardSchemaContexts(final Map<String, ShardingSphereSchema> schemas, final ShardingSphereSQLParserEngine sqlParserEngine, final ExecutorKernel executorKernel,
+ final Authentication authentication, final ConfigurationProperties props, final DatabaseType databaseType) {
+ this(schemas, sqlParserEngine, executorKernel, authentication, props, databaseType, false);
}
@Override
- public SchemaContext getDefaultSchemaContext() {
- return schemaContextMap.get(DefaultSchema.LOGIC_NAME);
+ public ShardingSphereSchema getDefaultSchema() {
+ return schemas.get(DefaultSchema.LOGIC_NAME);
}
@Override
public void close() {
- schemaContextMap.values().forEach(schemaContext -> schemaContext.getRuntimeContext().getExecutorKernel().close());
+ executorKernel.close();
}
}
diff --git a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/runtime/RuntimeContext.java b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/runtime/RuntimeContext.java
deleted file mode 100644
index 408119d..0000000
--- a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/schema/runtime/RuntimeContext.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.infra.context.schema.runtime;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
-import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
-
-/**
- * Runtime context.
- */
-@RequiredArgsConstructor
-@Getter
-public final class RuntimeContext {
-
- private final ExecutorKernel executorKernel;
-
- private final ShardingSphereSQLParserEngine sqlParserEngine;
-}
diff --git a/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/schema/SchemaContextsBuilderTest.java b/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/schema/SchemaContextsBuilderTest.java
index f2a43de..3077b99 100644
--- a/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/schema/SchemaContextsBuilderTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/schema/SchemaContextsBuilderTest.java
@@ -44,7 +44,7 @@ public final class SchemaContextsBuilderTest {
DatabaseType databaseType = DatabaseTypes.getActualDatabaseType("FixtureDB");
SchemaContexts actual = new SchemaContextsBuilder(databaseType, Collections.emptyMap(), Collections.emptyMap(), null).build();
assertThat(actual.getDatabaseType(), CoreMatchers.is(databaseType));
- assertTrue(actual.getSchemaContextMap().isEmpty());
+ assertTrue(actual.getSchemas().isEmpty());
assertTrue(actual.getAuthentication().getUsers().isEmpty());
assertTrue(actual.getProps().getProps().isEmpty());
assertFalse(actual.isCircuitBreak());
@@ -59,7 +59,7 @@ public final class SchemaContextsBuilderTest {
Collections.singletonMap("logic_db", Collections.singleton(new FixtureRuleConfiguration())), props).build();
assertThat(actual.getDatabaseType(), CoreMatchers.is(databaseType));
assertRules(actual);
- assertTrue(actual.getSchemaContextMap().get("logic_db").getSchema().getDataSources().isEmpty());
+ assertTrue(actual.getSchemas().get("logic_db").getDataSources().isEmpty());
assertTrue(actual.getAuthentication().getUsers().isEmpty());
assertThat(actual.getProps().getProps().size(), CoreMatchers.is(1));
assertThat(actual.getProps().getValue(ConfigurationPropertyKey.EXECUTOR_SIZE), CoreMatchers.is(1));
@@ -83,12 +83,12 @@ public final class SchemaContextsBuilderTest {
}
private void assertRules(final SchemaContexts actual) {
- assertThat(actual.getSchemaContextMap().get("logic_db").getSchema().getRules().size(), CoreMatchers.is(1));
- assertThat(actual.getSchemaContextMap().get("logic_db").getSchema().getRules().iterator().next(), CoreMatchers.instanceOf(FixtureRule.class));
+ assertThat(actual.getSchemas().get("logic_db").getRules().size(), CoreMatchers.is(1));
+ assertThat(actual.getSchemas().get("logic_db").getRules().iterator().next(), CoreMatchers.instanceOf(FixtureRule.class));
}
private void assertDataSources(final SchemaContexts actual) {
- assertThat(actual.getSchemaContextMap().get("logic_db").getSchema().getDataSources().size(), CoreMatchers.is(1));
- assertThat(actual.getSchemaContextMap().get("logic_db").getSchema().getDataSources().get("ds"), CoreMatchers.instanceOf(MockedDataSource.class));
+ assertThat(actual.getSchemas().get("logic_db").getDataSources().size(), CoreMatchers.is(1));
+ assertThat(actual.getSchemas().get("logic_db").getDataSources().get("ds"), CoreMatchers.instanceOf(MockedDataSource.class));
}
}
diff --git a/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/schema/impl/StandardSchemaContextsTest.java b/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/schema/impl/StandardSchemaContextsTest.java
index 23aa1e3..b5c74b6 100644
--- a/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/schema/impl/StandardSchemaContextsTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/schema/impl/StandardSchemaContextsTest.java
@@ -19,11 +19,10 @@ package org.apache.shardingsphere.infra.context.schema.impl;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
-import org.apache.shardingsphere.infra.context.schema.runtime.RuntimeContext;
-import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import org.junit.Test;
import java.util.Collections;
@@ -31,29 +30,26 @@ import java.util.Properties;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
-import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
public final class StandardSchemaContextsTest {
@Test
- public void assertGetDefaultSchemaContext() {
+ public void assertGetDefaultSchema() {
StandardSchemaContexts standardSchemaContexts = new StandardSchemaContexts();
- SchemaContext expected = mock(SchemaContext.class);
- standardSchemaContexts.getSchemaContextMap().put("logic_db", expected);
- assertThat(standardSchemaContexts.getDefaultSchemaContext(), is(expected));
+ ShardingSphereSchema expected = mock(ShardingSphereSchema.class);
+ standardSchemaContexts.getSchemas().put("logic_db", expected);
+ assertThat(standardSchemaContexts.getDefaultSchema(), is(expected));
}
@Test
public void assertClose() {
- RuntimeContext runtimeContext = mock(RuntimeContext.class, RETURNS_DEEP_STUBS);
+ ShardingSphereSQLParserEngine sqlParserEngine = mock(ShardingSphereSQLParserEngine.class);
ExecutorKernel executorKernel = mock(ExecutorKernel.class);
- when(runtimeContext.getExecutorKernel()).thenReturn(executorKernel);
- SchemaContext schemaContext = new SchemaContext(mock(ShardingSphereSchema.class), runtimeContext);
+ ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
StandardSchemaContexts standardSchemaContexts = new StandardSchemaContexts(
- Collections.singletonMap("logic_db", schemaContext), new Authentication(), new ConfigurationProperties(new Properties()), mock(DatabaseType.class));
+ Collections.singletonMap("logic_db", schema), sqlParserEngine, executorKernel, new Authentication(), new ConfigurationProperties(new Properties()), mock(DatabaseType.class));
standardSchemaContexts.close();
verify(executorKernel).close();
}
diff --git a/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/dbtest/engine/BaseIT.java b/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/dbtest/engine/BaseIT.java
index f1e88ff..5e2373d 100644
--- a/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/dbtest/engine/BaseIT.java
+++ b/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/dbtest/engine/BaseIT.java
@@ -159,7 +159,7 @@ public abstract class BaseIT {
@After
public void tearDown() {
if (dataSource instanceof ShardingSphereDataSource) {
- ((ShardingSphereDataSource) dataSource).getSchemaContexts().getDefaultSchemaContext().getRuntimeContext().getExecutorKernel().close();
+ ((ShardingSphereDataSource) dataSource).getSchemaContexts().getExecutorKernel().close();
}
}
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutor.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutor.java
index 11bfd51..5751491 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutor.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutor.java
@@ -78,9 +78,9 @@ public final class PreparedStatementExecutor extends AbstractStatementExecutor {
boolean isExceptionThrown = ExecutorExceptionHandler.isExceptionThrown();
SQLExecutorCallback<Integer> sqlExecutorCallback = createDefaultSQLExecutorCallbackWithInteger(isExceptionThrown);
List<Integer> results = getSqlExecutor().execute(inputGroups, sqlExecutorCallback);
- refreshTableMetaData(getSchemaContexts().getDefaultSchemaContext().getSchema(), sqlStatementContext);
+ refreshTableMetaData(getSchemaContexts().getDefaultSchema(), sqlStatementContext);
return isNeedAccumulate(
- getSchemaContexts().getDefaultSchemaContext().getSchema().getRules().stream().filter(rule -> rule instanceof DataNodeRoutedRule).collect(Collectors.toList()), sqlStatementContext)
+ getSchemaContexts().getDefaultSchema().getRules().stream().filter(rule -> rule instanceof DataNodeRoutedRule).collect(Collectors.toList()), sqlStatementContext)
? accumulate(results) : results.get(0);
}
@@ -99,7 +99,7 @@ public final class PreparedStatementExecutor extends AbstractStatementExecutor {
boolean isExceptionThrown = ExecutorExceptionHandler.isExceptionThrown();
SQLExecutorCallback<Boolean> sqlExecutorCallback = createDefaultSQLExecutorCallbackWithBoolean(isExceptionThrown);
List<Boolean> result = getSqlExecutor().execute(inputGroups, sqlExecutorCallback);
- refreshTableMetaData(getSchemaContexts().getDefaultSchemaContext().getSchema(), sqlStatementContext);
+ refreshTableMetaData(getSchemaContexts().getDefaultSchema(), sqlStatementContext);
if (null == result || result.isEmpty() || null == result.get(0)) {
return false;
}
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/StatementExecutor.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/StatementExecutor.java
index 7f411be..1e890e7 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/StatementExecutor.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/StatementExecutor.java
@@ -122,9 +122,9 @@ public final class StatementExecutor extends AbstractStatementExecutor {
}
};
List<Integer> results = getSqlExecutor().execute(inputGroups, sqlExecutorCallback);
- refreshTableMetaData(getSchemaContexts().getDefaultSchemaContext().getSchema(), sqlStatementContext);
+ refreshTableMetaData(getSchemaContexts().getDefaultSchema(), sqlStatementContext);
if (isNeedAccumulate(
- getSchemaContexts().getDefaultSchemaContext().getSchema().getRules().stream().filter(rule -> rule instanceof DataNodeRoutedRule).collect(Collectors.toList()), sqlStatementContext)) {
+ getSchemaContexts().getDefaultSchema().getRules().stream().filter(rule -> rule instanceof DataNodeRoutedRule).collect(Collectors.toList()), sqlStatementContext)) {
return accumulate(results);
}
return null == results.get(0) ? 0 : results.get(0);
@@ -185,7 +185,7 @@ public final class StatementExecutor extends AbstractStatementExecutor {
}
};
List<Boolean> result = getSqlExecutor().execute(inputGroups, sqlExecutorCallback);
- refreshTableMetaData(getSchemaContexts().getDefaultSchemaContext().getSchema(), sqlStatementContext);
+ refreshTableMetaData(getSchemaContexts().getDefaultSchema(), sqlStatementContext);
if (null == result || result.isEmpty() || null == result.get(0)) {
return false;
}
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
index 06990ad..75d601f 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
@@ -128,7 +128,7 @@ public final class BatchPreparedStatementExecutor {
};
List<int[]> results = sqlExecutor.execute(inputGroups, callback);
return isNeedAccumulate(
- schemaContexts.getDefaultSchemaContext().getSchema().getRules().stream().filter(rule -> rule instanceof DataNodeRoutedRule).collect(Collectors.toList()), sqlStatementContext)
+ schemaContexts.getDefaultSchema().getRules().stream().filter(rule -> rule instanceof DataNodeRoutedRule).collect(Collectors.toList()), sqlStatementContext)
? accumulate(results) : results.get(0);
}
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractResultSetAdapter.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractResultSetAdapter.java
index 8c49d3d..330d807 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractResultSetAdapter.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractResultSetAdapter.java
@@ -69,7 +69,7 @@ public abstract class AbstractResultSetAdapter extends AbstractUnsupportedOperat
private Collection<ShardingSphereRule> getRules() {
ShardingSphereConnection connection = statement instanceof ShardingSpherePreparedStatement
? ((ShardingSpherePreparedStatement) statement).getConnection() : ((ShardingSphereStatement) statement).getConnection();
- return connection.getSchemaContexts().getDefaultSchemaContext().getSchema().getRules();
+ return connection.getSchemaContexts().getDefaultSchema().getRules();
}
@Override
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
index 85e60b5..c4d80b8 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
@@ -100,7 +100,7 @@ public final class ShardingSphereDataSource extends AbstractUnsupportedOperation
* @return data sources
*/
public Map<String, DataSource> getDataSourceMap() {
- return schemaContexts.getDefaultSchemaContext().getSchema().getDataSources();
+ return schemaContexts.getDefaultSchema().getDataSources();
}
@Override
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaData.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaData.java
index 4538275..b490cc0 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaData.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaData.java
@@ -57,11 +57,11 @@ public final class ShardingSphereDatabaseMetaData extends AdaptedDatabaseMetaDat
private DatabaseMetaData currentDatabaseMetaData;
public ShardingSphereDatabaseMetaData(final AbstractConnectionAdapter connection) {
- super(connection.getSchemaContexts().getDefaultSchemaContext().getSchema().getMetaData().getCachedDatabaseMetaData());
+ super(connection.getSchemaContexts().getDefaultSchema().getMetaData().getCachedDatabaseMetaData());
this.connection = connection;
- rules = connection.getSchemaContexts().getDefaultSchemaContext().getSchema().getRules();
+ rules = connection.getSchemaContexts().getDefaultSchema().getRules();
datasourceNames = connection.getDataSourceMap().keySet();
- shardingSphereMetaData = connection.getSchemaContexts().getDefaultSchemaContext().getSchema().getMetaData();
+ shardingSphereMetaData = connection.getSchemaContexts().getDefaultSchema().getMetaData();
}
@Override
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
index 4e90e88..5c28341 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
@@ -30,9 +30,7 @@ import org.apache.shardingsphere.driver.jdbc.core.resultset.ShardingSphereResult
import org.apache.shardingsphere.driver.jdbc.core.statement.metadata.ShardingSphereParameterMetaData;
import org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
import org.apache.shardingsphere.infra.context.kernel.KernelProcessor;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.SchemaContexts;
-import org.apache.shardingsphere.infra.sql.LogicSQL;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import org.apache.shardingsphere.infra.executor.kernel.InputGroup;
import org.apache.shardingsphere.infra.executor.sql.ExecutorConstant;
@@ -51,6 +49,8 @@ import org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.queryresult.S
import org.apache.shardingsphere.infra.merge.MergeEngine;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
import org.apache.shardingsphere.infra.rule.DataNodeRoutedRule;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.sql.LogicSQL;
import org.apache.shardingsphere.sql.parser.binder.SQLStatementContextFactory;
import org.apache.shardingsphere.sql.parser.binder.metadata.schema.SchemaMetaData;
import org.apache.shardingsphere.sql.parser.binder.segment.insert.keygen.GeneratedKeyContext;
@@ -134,12 +134,12 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
this.sql = sql;
statements = new ArrayList<>();
parameterSets = new ArrayList<>();
- sqlStatement = schemaContexts.getDefaultSchemaContext().getRuntimeContext().getSqlParserEngine().parse(sql, true);
+ sqlStatement = schemaContexts.getSqlParserEngine().parse(sql, true);
parameterMetaData = new ShardingSphereParameterMetaData(sqlStatement);
statementOption = returnGeneratedKeys ? new StatementOption(true) : new StatementOption(resultSetType, resultSetConcurrency, resultSetHoldability);
- SQLExecutor sqlExecutor = new SQLExecutor(schemaContexts.getDefaultSchemaContext().getRuntimeContext().getExecutorKernel(), connection.isHoldTransaction());
+ SQLExecutor sqlExecutor = new SQLExecutor(schemaContexts.getExecutorKernel(), connection.isHoldTransaction());
preparedStatementExecutor = new PreparedStatementExecutor(connection.getDataSourceMap(), schemaContexts, sqlExecutor);
- rawExecutor = new RawJDBCExecutor(schemaContexts.getDefaultSchemaContext().getRuntimeContext().getExecutorKernel(), connection.isHoldTransaction());
+ rawExecutor = new RawJDBCExecutor(schemaContexts.getExecutorKernel(), connection.isHoldTransaction());
batchPreparedStatementExecutor = new BatchPreparedStatementExecutor(schemaContexts, sqlExecutor);
}
@@ -207,12 +207,12 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
private Collection<InputGroup<StatementExecuteUnit>> getInputGroups() throws SQLException {
int maxConnectionsSizePerQuery = schemaContexts.getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
return new PreparedStatementExecuteGroupEngine(maxConnectionsSizePerQuery, connection, statementOption,
- schemaContexts.getDefaultSchemaContext().getSchema().getRules()).generate(executionContext.getRouteContext(), executionContext.getExecutionUnits());
+ schemaContexts.getDefaultSchema().getRules()).generate(executionContext.getRouteContext(), executionContext.getExecutionUnits());
}
private Collection<InputGroup<RawSQLExecuteUnit>> getRawInputGroups() throws SQLException {
int maxConnectionsSizePerQuery = schemaContexts.getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
- return new RawExecuteGroupEngine(maxConnectionsSizePerQuery, schemaContexts.getDefaultSchemaContext().getSchema().getRules())
+ return new RawExecuteGroupEngine(maxConnectionsSizePerQuery, schemaContexts.getDefaultSchema().getRules())
.generate(executionContext.getRouteContext(), executionContext.getExecutionUnits());
}
@@ -265,15 +265,15 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
private LogicSQL createLogicSQL() {
List<Object> parameters = new ArrayList<>(getParameters());
- SchemaMetaData schemaMetaData = schemaContexts.getDefaultSchemaContext().getSchema().getMetaData().getRuleSchemaMetaData().getSchemaMetaData();
+ SchemaMetaData schemaMetaData = schemaContexts.getDefaultSchema().getMetaData().getRuleSchemaMetaData().getSchemaMetaData();
SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(schemaMetaData, parameters, sqlStatement);
- return new LogicSQL(schemaContexts.getDefaultSchemaContext().getSchema(), sqlStatementContext, sql, parameters);
+ return new LogicSQL(schemaContexts.getDefaultSchema(), sqlStatementContext, sql, parameters);
}
private MergedResult mergeQuery(final List<QueryResult> queryResults) throws SQLException {
- SchemaContext schemaContext = schemaContexts.getDefaultSchemaContext();
+ ShardingSphereSchema schema = schemaContexts.getDefaultSchema();
MergeEngine mergeEngine = new MergeEngine(schemaContexts.getDatabaseType(),
- schemaContext.getSchema().getMetaData().getRuleSchemaMetaData().getConfiguredSchemaMetaData(), schemaContexts.getProps(), schemaContext.getSchema().getRules());
+ schema.getMetaData().getRuleSchemaMetaData().getConfiguredSchemaMetaData(), schemaContexts.getProps(), schema.getRules());
return mergeEngine.merge(queryResults, executionContext.getSqlStatementContext());
}
@@ -352,7 +352,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
private void initBatchPreparedStatementExecutor() throws SQLException {
PreparedStatementExecuteGroupEngine executeGroupEngine = new PreparedStatementExecuteGroupEngine(
schemaContexts.getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY),
- connection, statementOption, schemaContexts.getDefaultSchemaContext().getSchema().getRules());
+ connection, statementOption, schemaContexts.getDefaultSchema().getRules());
batchPreparedStatementExecutor.init(executeGroupEngine.generate(executionContext.getRouteContext(),
new ArrayList<>(batchPreparedStatementExecutor.getBatchExecutionUnits()).stream().map(BatchExecutionUnit::getExecutionUnit).collect(Collectors.toList())));
setBatchParametersForStatements();
@@ -394,7 +394,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
@Override
public boolean isAccumulate() {
- return schemaContexts.getDefaultSchemaContext().getSchema().getRules().stream().anyMatch(
+ return schemaContexts.getDefaultSchema().getRules().stream().anyMatch(
each -> each instanceof DataNodeRoutedRule && ((DataNodeRoutedRule) each).isNeedAccumulate(executionContext.getSqlStatementContext().getTablesContext().getTableNames()));
}
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
index e2e06c9..f3ed297 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
@@ -28,9 +28,7 @@ import org.apache.shardingsphere.driver.jdbc.core.resultset.ShardingSphereResult
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
import org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
import org.apache.shardingsphere.infra.context.kernel.KernelProcessor;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.SchemaContexts;
-import org.apache.shardingsphere.infra.sql.LogicSQL;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import org.apache.shardingsphere.infra.executor.kernel.InputGroup;
import org.apache.shardingsphere.infra.executor.sql.ExecutorConstant;
@@ -49,6 +47,8 @@ import org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.queryresult.S
import org.apache.shardingsphere.infra.merge.MergeEngine;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
import org.apache.shardingsphere.infra.rule.DataNodeRoutedRule;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.sql.LogicSQL;
import org.apache.shardingsphere.sql.parser.binder.SQLStatementContextFactory;
import org.apache.shardingsphere.sql.parser.binder.metadata.schema.SchemaMetaData;
import org.apache.shardingsphere.sql.parser.binder.segment.insert.keygen.GeneratedKeyContext;
@@ -107,9 +107,8 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
schemaContexts = connection.getSchemaContexts();
statements = new LinkedList<>();
statementOption = new StatementOption(resultSetType, resultSetConcurrency, resultSetHoldability);
- statementExecutor = new StatementExecutor(connection.getDataSourceMap(), schemaContexts,
- new SQLExecutor(schemaContexts.getDefaultSchemaContext().getRuntimeContext().getExecutorKernel(), connection.isHoldTransaction()));
- rawExecutor = new RawJDBCExecutor(schemaContexts.getDefaultSchemaContext().getRuntimeContext().getExecutorKernel(), connection.isHoldTransaction());
+ statementExecutor = new StatementExecutor(connection.getDataSourceMap(), schemaContexts, new SQLExecutor(schemaContexts.getExecutorKernel(), connection.isHoldTransaction()));
+ rawExecutor = new RawJDBCExecutor(schemaContexts.getExecutorKernel(), connection.isHoldTransaction());
}
@Override
@@ -301,22 +300,22 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
}
private LogicSQL createLogicSQL(final String sql) {
- SchemaContext schemaContext = schemaContexts.getDefaultSchemaContext();
- SchemaMetaData schemaMetaData = schemaContext.getSchema().getMetaData().getRuleSchemaMetaData().getSchemaMetaData();
- SQLStatement sqlStatement = schemaContext.getRuntimeContext().getSqlParserEngine().parse(sql, false);
+ ShardingSphereSchema schema = schemaContexts.getDefaultSchema();
+ SchemaMetaData schemaMetaData = schema.getMetaData().getRuleSchemaMetaData().getSchemaMetaData();
+ SQLStatement sqlStatement = schemaContexts.getSqlParserEngine().parse(sql, false);
SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(schemaMetaData, Collections.emptyList(), sqlStatement);
- return new LogicSQL(schemaContext.getSchema(), sqlStatementContext, sql, Collections.emptyList());
+ return new LogicSQL(schema, sqlStatementContext, sql, Collections.emptyList());
}
private Collection<InputGroup<StatementExecuteUnit>> getInputGroups() throws SQLException {
int maxConnectionsSizePerQuery = schemaContexts.getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
return new StatementExecuteGroupEngine(maxConnectionsSizePerQuery, connection, statementOption,
- schemaContexts.getDefaultSchemaContext().getSchema().getRules()).generate(executionContext.getRouteContext(), executionContext.getExecutionUnits());
+ schemaContexts.getDefaultSchema().getRules()).generate(executionContext.getRouteContext(), executionContext.getExecutionUnits());
}
private Collection<InputGroup<RawSQLExecuteUnit>> getRawInputGroups() throws SQLException {
int maxConnectionsSizePerQuery = schemaContexts.getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
- return new RawExecuteGroupEngine(maxConnectionsSizePerQuery, schemaContexts.getDefaultSchemaContext().getSchema().getRules())
+ return new RawExecuteGroupEngine(maxConnectionsSizePerQuery, schemaContexts.getDefaultSchema().getRules())
.generate(executionContext.getRouteContext(), executionContext.getExecutionUnits());
}
@@ -367,9 +366,9 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
}
private MergedResult mergeQuery(final List<QueryResult> queryResults) throws SQLException {
- SchemaContext schemaContext = schemaContexts.getDefaultSchemaContext();
+ ShardingSphereSchema schema = schemaContexts.getDefaultSchema();
MergeEngine mergeEngine = new MergeEngine(schemaContexts.getDatabaseType(),
- schemaContext.getSchema().getMetaData().getRuleSchemaMetaData().getConfiguredSchemaMetaData(), schemaContexts.getProps(), schemaContext.getSchema().getRules());
+ schema.getMetaData().getRuleSchemaMetaData().getConfiguredSchemaMetaData(), schemaContexts.getProps(), schema.getRules());
return mergeEngine.merge(queryResults, executionContext.getSqlStatementContext());
}
@@ -392,7 +391,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
@Override
public boolean isAccumulate() {
- return schemaContexts.getDefaultSchemaContext().getSchema().getRules().stream().anyMatch(
+ return schemaContexts.getDefaultSchema().getRules().stream().anyMatch(
each -> each instanceof DataNodeRoutedRule && ((DataNodeRoutedRule) each).isNeedAccumulate(executionContext.getSqlStatementContext().getTablesContext().getTableNames()));
}
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/executor/AbstractBaseExecutorTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/executor/AbstractBaseExecutorTest.java
index fe67ec5..f0a0b8a 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/executor/AbstractBaseExecutorTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/executor/AbstractBaseExecutorTest.java
@@ -66,11 +66,11 @@ public abstract class AbstractBaseExecutorTest {
private void setConnection() {
SchemaContexts schemaContexts = mock(StandardSchemaContexts.class, RETURNS_DEEP_STUBS);
- when(schemaContexts.getDefaultSchemaContext().getRuntimeContext().getExecutorKernel()).thenReturn(executorKernel);
+ when(schemaContexts.getExecutorKernel()).thenReturn(executorKernel);
when(schemaContexts.getProps()).thenReturn(createConfigurationProperties());
when(schemaContexts.getDatabaseType()).thenReturn(DatabaseTypes.getActualDatabaseType("H2"));
ShardingRule shardingRule = mockShardingRule();
- when(schemaContexts.getDefaultSchemaContext().getSchema().getRules()).thenReturn(Collections.singletonList(shardingRule));
+ when(schemaContexts.getDefaultSchema().getRules()).thenReturn(Collections.singletonList(shardingRule));
TransactionContexts transactionContexts = mock(TransactionContexts.class);
when(transactionContexts.getDefaultTransactionManagerEngine()).thenReturn(new ShardingTransactionManagerEngine());
DataSource dataSource = mock(DataSource.class, RETURNS_DEEP_STUBS);
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
index 9059b45..d8a2c12 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
@@ -80,7 +80,7 @@ public final class ShardingSphereConnectionTest {
schemaContexts = mock(StandardSchemaContexts.class, RETURNS_DEEP_STUBS);
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(schemaContexts.getDatabaseType()).thenReturn(DatabaseTypes.getActualDatabaseType("H2"));
- when(schemaContexts.getDefaultSchemaContext().getSchema()).thenReturn(schema);
+ when(schemaContexts.getDefaultSchema()).thenReturn(schema);
transactionContexts = mock(TransactionContexts.class);
when(transactionContexts.getDefaultTransactionManagerEngine()).thenReturn(new ShardingTransactionManagerEngine());
ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaDataTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaDataTest.java
index 8233f23..7ed00c4 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaDataTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaDataTest.java
@@ -20,9 +20,9 @@ package org.apache.shardingsphere.driver.jdbc.core.datasource.metadata;
import com.google.common.collect.LinkedHashMultimap;
import org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection;
import org.apache.shardingsphere.driver.jdbc.core.resultset.DatabaseMetaDataResultSet;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.SchemaContexts;
import org.apache.shardingsphere.infra.metadata.datasource.CachedDatabaseMetaData;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -92,10 +92,10 @@ public final class ShardingSphereDatabaseMetaDataTest {
when(shardingSphereConnection.getConnection(anyString())).thenReturn(connection);
when(shardingSphereConnection.getDataSourceMap()).thenReturn(dataSourceMap);
when(shardingSphereConnection.getSchemaContexts()).thenReturn(schemaContexts);
- SchemaContext schemaContext = mock(SchemaContext.class, RETURNS_DEEP_STUBS);
- when(schemaContexts.getDefaultSchemaContext()).thenReturn(schemaContext);
- when(schemaContext.getSchema().getMetaData().getCachedDatabaseMetaData()).thenReturn(cachedDatabaseMetaData);
- when(schemaContext.getSchema().getRules()).thenReturn(Collections.singletonList(mockShardingRule()));
+ ShardingSphereSchema schema = mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS);
+ when(schemaContexts.getDefaultSchema()).thenReturn(schema);
+ when(schema.getMetaData().getCachedDatabaseMetaData()).thenReturn(cachedDatabaseMetaData);
+ when(schema.getRules()).thenReturn(Collections.singletonList(mockShardingRule()));
shardingSphereDatabaseMetaData = new ShardingSphereDatabaseMetaData(shardingSphereConnection);
}
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSource.java b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSource.java
index 6614109..6085dcc 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSource.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSource.java
@@ -62,14 +62,14 @@ public final class GovernanceShardingSphereDataSource extends AbstractUnsupporte
public GovernanceShardingSphereDataSource(final GovernanceConfiguration governanceConfig) throws SQLException {
GovernanceFacade governanceFacade = createGovernanceFacade(governanceConfig);
schemaContexts = new GovernanceSchemaContexts(createSchemaContexts(governanceFacade), governanceFacade);
- transactionContexts = createTransactionContexts(schemaContexts.getDatabaseType(), schemaContexts.getDefaultSchemaContext().getSchema().getDataSources());
+ transactionContexts = createTransactionContexts(schemaContexts.getDatabaseType(), schemaContexts.getDefaultSchema().getDataSources());
}
public GovernanceShardingSphereDataSource(final Map<String, DataSource> dataSourceMap, final Collection<RuleConfiguration> ruleConfigs,
final Properties props, final GovernanceConfiguration governanceConfig) throws SQLException {
GovernanceFacade governanceFacade = createGovernanceFacade(governanceConfig);
schemaContexts = new GovernanceSchemaContexts(createSchemaContexts(dataSourceMap, ruleConfigs, props), governanceFacade);
- transactionContexts = createTransactionContexts(schemaContexts.getDatabaseType(), schemaContexts.getDefaultSchemaContext().getSchema().getDataSources());
+ transactionContexts = createTransactionContexts(schemaContexts.getDatabaseType(), schemaContexts.getDefaultSchema().getDataSources());
uploadLocalConfiguration(governanceFacade);
}
@@ -119,8 +119,8 @@ public final class GovernanceShardingSphereDataSource extends AbstractUnsupporte
}
private void uploadLocalConfiguration(final GovernanceFacade governanceFacade) {
- Map<String, DataSourceConfiguration> dataSourceConfigs = DataSourceConverter.getDataSourceConfigurationMap(schemaContexts.getDefaultSchemaContext().getSchema().getDataSources());
- Collection<RuleConfiguration> ruleConfigurations = schemaContexts.getDefaultSchemaContext().getSchema().getConfigurations();
+ Map<String, DataSourceConfiguration> dataSourceConfigs = DataSourceConverter.getDataSourceConfigurationMap(schemaContexts.getDefaultSchema().getDataSources());
+ Collection<RuleConfiguration> ruleConfigurations = schemaContexts.getDefaultSchema().getConfigurations();
Properties props = schemaContexts.getProps().getProps();
governanceFacade.onlineInstance(Collections.singletonMap(DefaultSchema.LOGIC_NAME, dataSourceConfigs), Collections.singletonMap(DefaultSchema.LOGIC_NAME, ruleConfigurations), null, props);
}
@@ -152,6 +152,6 @@ public final class GovernanceShardingSphereDataSource extends AbstractUnsupporte
}
private Map<String, DataSource> getDataSourceMap() {
- return schemaContexts.getDefaultSchemaContext().getSchema().getDataSources();
+ return schemaContexts.getDefaultSchema().getDataSources();
}
}
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/test/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSourceTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/test/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSourceTest.java
index 90ff3d6..4fe1bf8 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/test/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSourceTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/test/java/org/apache/shardingsphere/driver/governance/internal/datasource/GovernanceShardingSphereDataSourceTest.java
@@ -64,8 +64,8 @@ public final class GovernanceShardingSphereDataSourceTest {
@BeforeClass
public static void setUp() throws SQLException, IOException, URISyntaxException {
SchemaContexts schemaContexts = getShardingSphereDataSource().getSchemaContexts();
- GovernanceShardingSphereDataSource governanceDataSource = new GovernanceShardingSphereDataSource(schemaContexts.getDefaultSchemaContext().getSchema().getDataSources(),
- schemaContexts.getDefaultSchemaContext().getSchema().getConfigurations(), schemaContexts.getProps().getProps(), getGovernanceConfiguration());
+ GovernanceShardingSphereDataSource governanceDataSource = new GovernanceShardingSphereDataSource(schemaContexts.getDefaultSchema().getDataSources(),
+ schemaContexts.getDefaultSchema().getConfigurations(), schemaContexts.getProps().getProps(), getGovernanceConfiguration());
governanceSchemaContexts = (GovernanceSchemaContexts) governanceDataSource.getSchemaContexts();
}
@@ -98,7 +98,7 @@ public final class GovernanceShardingSphereDataSourceTest {
@Test
public void assertRenewRules() throws SQLException {
governanceSchemaContexts.renew(new RuleConfigurationsChangedEvent(DefaultSchema.LOGIC_NAME, Arrays.asList(getShardingRuleConfiguration(), getPrimaryReplicaReplicationRuleConfiguration())));
- assertThat(((ShardingRule) governanceSchemaContexts.getDefaultSchemaContext().getSchema().getRules().iterator().next()).getTableRules().size(), is(1));
+ assertThat(((ShardingRule) governanceSchemaContexts.getDefaultSchema().getRules().iterator().next()).getTableRules().size(), is(1));
}
private ShardingRuleConfiguration getShardingRuleConfiguration() {
@@ -117,7 +117,7 @@ public final class GovernanceShardingSphereDataSourceTest {
@Test
public void assertRenewDataSource() throws SQLException {
governanceSchemaContexts.renew(new DataSourceChangedEvent(DefaultSchema.LOGIC_NAME, getDataSourceConfigurations()));
- assertThat(governanceSchemaContexts.getDefaultSchemaContext().getSchema().getDataSources().size(), is(3));
+ assertThat(governanceSchemaContexts.getDefaultSchema().getDataSources().size(), is(3));
}
private Map<String, DataSourceConfiguration> getDataSourceConfigurations() {
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/SpringBootStarterTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/SpringBootStarterTest.java
index 385219a..b5e9566 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/SpringBootStarterTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/SpringBootStarterTest.java
@@ -72,7 +72,7 @@ public class SpringBootStarterTest {
@Test
public void assertRules() {
- Collection<ShardingSphereRule> rules = dataSource.getSchemaContexts().getDefaultSchemaContext().getSchema().getRules();
+ Collection<ShardingSphereRule> rules = dataSource.getSchemaContexts().getDefaultSchema().getRules();
assertThat(rules.size(), is(4));
for (ShardingSphereRule each : rules) {
if (each instanceof ShardingRule) {
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/java/org/apache/shardingsphere/spring/SpringNamespaceTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/java/org/apache/shardingsphere/spring/SpringNamespaceTest.java
index e738745..f38b04c 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/java/org/apache/shardingsphere/spring/SpringNamespaceTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/java/org/apache/shardingsphere/spring/SpringNamespaceTest.java
@@ -46,7 +46,7 @@ public final class SpringNamespaceTest extends AbstractJUnit4SpringContextTests
@Test
public void assertShardingSphereDataSource() {
assertDataSourceMap();
- Collection<ShardingSphereRule> rules = dataSource.getSchemaContexts().getDefaultSchemaContext().getSchema().getRules();
+ Collection<ShardingSphereRule> rules = dataSource.getSchemaContexts().getDefaultSchema().getRules();
assertThat(rules.size(), is(3));
for (ShardingSphereRule each : rules) {
if (each instanceof ShardingRule) {
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootEncryptTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootEncryptTest.java
index 69c301d..c9bc563 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootEncryptTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootEncryptTest.java
@@ -59,11 +59,11 @@ public class GovernanceSpringBootEncryptTest {
Field field = GovernanceShardingSphereDataSource.class.getDeclaredField("schemaContexts");
field.setAccessible(true);
SchemaContexts schemaContexts = (SchemaContexts) field.get(dataSource);
- BasicDataSource embedDataSource = (BasicDataSource) schemaContexts.getDefaultSchemaContext().getSchema().getDataSources().values().iterator().next();
+ BasicDataSource embedDataSource = (BasicDataSource) schemaContexts.getDefaultSchema().getDataSources().values().iterator().next();
assertThat(embedDataSource.getMaxTotal(), is(100));
assertThat(embedDataSource.getUsername(), is("sa"));
AlgorithmProvidedEncryptRuleConfiguration configuration =
- (AlgorithmProvidedEncryptRuleConfiguration) schemaContexts.getDefaultSchemaContext().getSchema().getConfigurations().iterator().next();
+ (AlgorithmProvidedEncryptRuleConfiguration) schemaContexts.getDefaultSchema().getConfigurations().iterator().next();
assertThat(configuration.getEncryptors().size(), is(1));
EncryptAlgorithm encryptAlgorithm = configuration.getEncryptors().get("order_encrypt");
assertThat(encryptAlgorithm.getType(), is("AES"));
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootPrimaryReplicaReplicationTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSprin [...]
index 02b8a9f..4ca2e38 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootPrimaryReplicaReplicationTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootPrimaryReplicaReplicationTest.java
@@ -63,11 +63,11 @@ public class GovernanceSpringBootPrimaryReplicaReplicationTest {
Field field = GovernanceShardingSphereDataSource.class.getDeclaredField("schemaContexts");
field.setAccessible(true);
SchemaContexts schemaContexts = (SchemaContexts) field.get(dataSource);
- for (DataSource each : schemaContexts.getDefaultSchemaContext().getSchema().getDataSources().values()) {
+ for (DataSource each : schemaContexts.getDefaultSchema().getDataSources().values()) {
assertThat(((BasicDataSource) each).getMaxTotal(), is(16));
assertThat(((BasicDataSource) each).getUsername(), is("sa"));
}
- Collection<ShardingSphereRule> rules = schemaContexts.getDefaultSchemaContext().getSchema().getRules();
+ Collection<ShardingSphereRule> rules = schemaContexts.getDefaultSchema().getRules();
assertThat(rules.size(), is(1));
assertPrimaryReplicaReplicationRule((PrimaryReplicaReplicationRule) rules.iterator().next());
}
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootRegistryEncryptTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootRegis [...]
index 72705a2..2578dcd 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootRegistryEncryptTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootRegistryEncryptTest.java
@@ -77,10 +77,10 @@ public class GovernanceSpringBootRegistryEncryptTest {
Field field = GovernanceShardingSphereDataSource.class.getDeclaredField("schemaContexts");
field.setAccessible(true);
SchemaContexts schemaContexts = (SchemaContexts) field.get(dataSource);
- BasicDataSource embedDataSource = (BasicDataSource) schemaContexts.getDefaultSchemaContext().getSchema().getDataSources().values().iterator().next();
+ BasicDataSource embedDataSource = (BasicDataSource) schemaContexts.getDefaultSchema().getDataSources().values().iterator().next();
assertThat(embedDataSource.getMaxTotal(), is(100));
assertThat(embedDataSource.getUsername(), is("sa"));
- EncryptRuleConfiguration configuration = (EncryptRuleConfiguration) schemaContexts.getDefaultSchemaContext().getSchema().getConfigurations().iterator().next();
+ EncryptRuleConfiguration configuration = (EncryptRuleConfiguration) schemaContexts.getDefaultSchema().getConfigurations().iterator().next();
assertThat(configuration.getEncryptors().size(), is(1));
ShardingSphereAlgorithmConfiguration encryptAlgorithmConfiguration = configuration.getEncryptors().get("order_encrypt");
assertThat(encryptAlgorithmConfiguration, instanceOf(ShardingSphereAlgorithmConfiguration.class));
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootRegistryPrimaryReplicaReplicationTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/Governa [...]
index b9910dc..bcf8dd7 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootRegistryPrimaryReplicaReplicationTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootRegistryPrimaryReplicaReplicationTest.java
@@ -72,7 +72,7 @@ public class GovernanceSpringBootRegistryPrimaryReplicaReplicationTest {
Field field = GovernanceShardingSphereDataSource.class.getDeclaredField("schemaContexts");
field.setAccessible(true);
SchemaContexts schemaContexts = (SchemaContexts) field.get(dataSource);
- for (DataSource each : schemaContexts.getDefaultSchemaContext().getSchema().getDataSources().values()) {
+ for (DataSource each : schemaContexts.getDefaultSchema().getDataSources().values()) {
assertThat(((BasicDataSource) each).getMaxTotal(), is(16));
assertThat(((BasicDataSource) each).getUsername(), is("sa"));
}
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootRegistryShardingTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootRegi [...]
index 221ba19..c5b98e3 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootRegistryShardingTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootRegistryShardingTest.java
@@ -77,7 +77,7 @@ public class GovernanceSpringBootRegistryShardingTest {
public void assertWithShardingSphereDataSource() {
assertTrue(dataSource instanceof GovernanceShardingSphereDataSource);
SchemaContexts schemaContexts = getFieldValue("schemaContexts", GovernanceShardingSphereDataSource.class, dataSource);
- for (DataSource each : schemaContexts.getDefaultSchemaContext().getSchema().getDataSources().values()) {
+ for (DataSource each : schemaContexts.getDefaultSchema().getDataSources().values()) {
assertThat(((BasicDataSource) each).getMaxTotal(), is(16));
}
assertTrue(schemaContexts.getProps().<Boolean>getValue(ConfigurationPropertyKey.SQL_SHOW));
@@ -87,7 +87,7 @@ public class GovernanceSpringBootRegistryShardingTest {
@Test
public void assertWithShardingSphereDataSourceNames() {
SchemaContexts schemaContexts = getFieldValue("schemaContexts", GovernanceShardingSphereDataSource.class, dataSource);
- ShardingRule shardingRule = (ShardingRule) schemaContexts.getDefaultSchemaContext().getSchema().getRules().iterator().next();
+ ShardingRule shardingRule = (ShardingRule) schemaContexts.getDefaultSchema().getRules().iterator().next();
assertThat(shardingRule.getDataSourceNames().size(), is(2));
assertTrue(shardingRule.getDataSourceNames().contains("ds_0"));
assertTrue(shardingRule.getDataSourceNames().contains("ds_1"));
@@ -96,7 +96,7 @@ public class GovernanceSpringBootRegistryShardingTest {
@Test
public void assertWithTableRules() {
SchemaContexts schemaContexts = getFieldValue("schemaContexts", GovernanceShardingSphereDataSource.class, dataSource);
- ShardingRule shardingRule = (ShardingRule) schemaContexts.getDefaultSchemaContext().getSchema().getRules().iterator().next();
+ ShardingRule shardingRule = (ShardingRule) schemaContexts.getDefaultSchema().getRules().iterator().next();
assertThat(shardingRule.getTableRules().size(), is(2));
TableRule orderRule = shardingRule.getTableRule("t_order");
assertThat(orderRule.getLogicTable(), is("t_order"));
@@ -125,7 +125,7 @@ public class GovernanceSpringBootRegistryShardingTest {
@Test
public void assertWithBindingTableRules() {
SchemaContexts schemaContexts = getFieldValue("schemaContexts", GovernanceShardingSphereDataSource.class, dataSource);
- ShardingRule shardingRule = (ShardingRule) schemaContexts.getDefaultSchemaContext().getSchema().getRules().iterator().next();
+ ShardingRule shardingRule = (ShardingRule) schemaContexts.getDefaultSchema().getRules().iterator().next();
assertThat(shardingRule.getBindingTableRules().size(), is(2));
TableRule orderRule = shardingRule.getTableRule("t_order");
assertThat(orderRule.getLogicTable(), is("t_order"));
@@ -155,7 +155,7 @@ public class GovernanceSpringBootRegistryShardingTest {
@Test
public void assertWithBroadcastTables() {
SchemaContexts schemaContexts = getFieldValue("schemaContexts", GovernanceShardingSphereDataSource.class, dataSource);
- ShardingRule shardingRule = (ShardingRule) schemaContexts.getDefaultSchemaContext().getSchema().getRules().iterator().next();
+ ShardingRule shardingRule = (ShardingRule) schemaContexts.getDefaultSchema().getRules().iterator().next();
assertThat(shardingRule.getBroadcastTables().size(), is(1));
assertThat(shardingRule.getBroadcastTables().iterator().next(), is("t_config"));
}
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootShardingTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootShardingTest.java
index c5e84d1..6f7c9c9 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootShardingTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/governance/type/GovernanceSpringBootShardingTest.java
@@ -62,7 +62,7 @@ public class GovernanceSpringBootShardingTest {
public void assertWithShardingSphereDataSource() {
assertTrue(dataSource instanceof GovernanceShardingSphereDataSource);
SchemaContexts schemaContexts = getFieldValue("schemaContexts", GovernanceShardingSphereDataSource.class, dataSource);
- for (DataSource each : schemaContexts.getDefaultSchemaContext().getSchema().getDataSources().values()) {
+ for (DataSource each : schemaContexts.getDefaultSchema().getDataSources().values()) {
assertThat(((BasicDataSource) each).getMaxTotal(), is(16));
}
assertTrue(schemaContexts.getProps().<Boolean>getValue(ConfigurationPropertyKey.SQL_SHOW));
@@ -73,7 +73,7 @@ public class GovernanceSpringBootShardingTest {
@Test
public void assertWithShardingSphereDataSourceNames() {
SchemaContexts schemaContexts = getFieldValue("schemaContexts", GovernanceShardingSphereDataSource.class, dataSource);
- ShardingRule shardingRule = (ShardingRule) schemaContexts.getDefaultSchemaContext().getSchema().getRules().iterator().next();
+ ShardingRule shardingRule = (ShardingRule) schemaContexts.getDefaultSchema().getRules().iterator().next();
assertThat(shardingRule.getDataSourceNames().size(), is(2));
assertTrue(shardingRule.getDataSourceNames().contains("ds_0"));
assertTrue(shardingRule.getDataSourceNames().contains("ds_1"));
@@ -82,7 +82,7 @@ public class GovernanceSpringBootShardingTest {
@Test
public void assertWithTableRules() {
SchemaContexts schemaContexts = getFieldValue("schemaContexts", GovernanceShardingSphereDataSource.class, dataSource);
- ShardingRule shardingRule = (ShardingRule) schemaContexts.getDefaultSchemaContext().getSchema().getRules().iterator().next();
+ ShardingRule shardingRule = (ShardingRule) schemaContexts.getDefaultSchema().getRules().iterator().next();
assertThat(shardingRule.getTableRules().size(), is(2));
TableRule orderRule = shardingRule.getTableRule("t_order");
assertThat(orderRule.getLogicTable(), is("t_order"));
@@ -112,7 +112,7 @@ public class GovernanceSpringBootShardingTest {
@Test
public void assertWithBindingTableRules() {
SchemaContexts schemaContexts = getFieldValue("schemaContexts", GovernanceShardingSphereDataSource.class, dataSource);
- ShardingRule shardingRule = (ShardingRule) schemaContexts.getDefaultSchemaContext().getSchema().getRules().iterator().next();
+ ShardingRule shardingRule = (ShardingRule) schemaContexts.getDefaultSchema().getRules().iterator().next();
assertThat(shardingRule.getBindingTableRules().size(), is(2));
TableRule orderRule = shardingRule.getTableRule("t_order");
assertThat(orderRule.getLogicTable(), is("t_order"));
@@ -141,7 +141,7 @@ public class GovernanceSpringBootShardingTest {
@Test
public void assertWithBroadcastTables() {
SchemaContexts schemaContexts = getFieldValue("schemaContexts", GovernanceShardingSphereDataSource.class, dataSource);
- ShardingRule shardingRule = (ShardingRule) schemaContexts.getDefaultSchemaContext().getSchema().getRules().iterator().next();
+ ShardingRule shardingRule = (ShardingRule) schemaContexts.getDefaultSchema().getRules().iterator().next();
assertThat(shardingRule.getBroadcastTables().size(), is(1));
assertThat(shardingRule.getBroadcastTables().iterator().next(), is("t_config"));
}
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/test/java/org/apache/shardingsphere/spring/namespace/governance/GovernanceEncryptNamespaceTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/test/java/org/apache/shardingsphere/spring/namespace/governance/GovernanceEncryptNamespaceTest.java
index dd9ccba..6010de4 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/test/java/org/apache/shardingsphere/spring/namespace/governance/GovernanceEncryptNamespaceTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/test/java/org/apache/shardingsphere/spring/namespace/governance/GovernanceEncryptNamespaceTest.java
@@ -58,7 +58,7 @@ public final class GovernanceEncryptNamespaceTest extends AbstractJUnit4SpringCo
private AlgorithmProvidedEncryptRuleConfiguration getEncryptRuleConfiguration() {
GovernanceShardingSphereDataSource governanceDataSource = (GovernanceShardingSphereDataSource) applicationContext.getBean("encryptDataSourceGovernance");
SchemaContexts schemaContexts = (SchemaContexts) FieldValueUtil.getFieldValue(governanceDataSource, "schemaContexts");
- return (AlgorithmProvidedEncryptRuleConfiguration) schemaContexts.getDefaultSchemaContext().getSchema().getConfigurations().iterator().next();
+ return (AlgorithmProvidedEncryptRuleConfiguration) schemaContexts.getDefaultSchema().getConfigurations().iterator().next();
}
private void assertEncryptRule(final AlgorithmProvidedEncryptRuleConfiguration configuration) {
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/test/java/org/apache/shardingsphere/spring/namespace/governance/GovernancePrimaryReplicaReplicationNamespaceTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/test/java/org/apache/shardingsphere/spring/namespace/governance/GovernancePrimaryRepli [...]
index 55b3818..662ca28 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/test/java/org/apache/shardingsphere/spring/namespace/governance/GovernancePrimaryReplicaReplicationNamespaceTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/test/java/org/apache/shardingsphere/spring/namespace/governance/GovernancePrimaryReplicaReplicationNamespaceTest.java
@@ -90,7 +90,7 @@ public class GovernancePrimaryReplicaReplicationNamespaceTest extends AbstractJU
private PrimaryReplicaReplicationRule getPrimaryReplicaReplicationRule(final String dataSourceName) {
GovernanceShardingSphereDataSource dataSource = applicationContext.getBean(dataSourceName, GovernanceShardingSphereDataSource.class);
SchemaContexts schemaContexts = (SchemaContexts) FieldValueUtil.getFieldValue(dataSource, "schemaContexts");
- return (PrimaryReplicaReplicationRule) schemaContexts.getDefaultSchemaContext().getSchema().getRules().iterator().next();
+ return (PrimaryReplicaReplicationRule) schemaContexts.getDefaultSchema().getRules().iterator().next();
}
@Test
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/test/java/org/apache/shardingsphere/spring/namespace/governance/GovernanceShardingNamespaceTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/test/java/org/apache/shardingsphere/spring/namespace/governance/GovernanceShardingNamespaceTest.java
index 3683a96..0d99dd9 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/test/java/org/apache/shardingsphere/spring/namespace/governance/GovernanceShardingNamespaceTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/test/java/org/apache/shardingsphere/spring/namespace/governance/GovernanceShardingNamespaceTest.java
@@ -163,7 +163,7 @@ public class GovernanceShardingNamespaceTest extends AbstractJUnit4SpringContext
public void assertDefaultActualDataNodes() {
GovernanceShardingSphereDataSource multiTableRulesDataSource = applicationContext.getBean("multiTableRulesDataSourceGovernance", GovernanceShardingSphereDataSource.class);
SchemaContexts schemaContexts = (SchemaContexts) FieldValueUtil.getFieldValue(multiTableRulesDataSource, "schemaContexts");
- ShardingRule shardingRule = (ShardingRule) schemaContexts.getDefaultSchemaContext().getSchema().getRules().iterator().next();
+ ShardingRule shardingRule = (ShardingRule) schemaContexts.getDefaultSchema().getRules().iterator().next();
assertThat(shardingRule.getTableRules().size(), is(2));
Iterator<TableRule> tableRules = shardingRule.getTableRules().iterator();
TableRule orderRule = tableRules.next();
@@ -179,12 +179,12 @@ public class GovernanceShardingNamespaceTest extends AbstractJUnit4SpringContext
private Map<String, DataSource> getDataSourceMap(final String dataSourceName) {
GovernanceShardingSphereDataSource shardingSphereDataSource = applicationContext.getBean(dataSourceName, GovernanceShardingSphereDataSource.class);
SchemaContexts schemaContexts = (SchemaContexts) FieldValueUtil.getFieldValue(shardingSphereDataSource, "schemaContexts");
- return schemaContexts.getDefaultSchemaContext().getSchema().getDataSources();
+ return schemaContexts.getDefaultSchema().getDataSources();
}
private ShardingRule getShardingRule(final String dataSourceName) {
GovernanceShardingSphereDataSource shardingSphereDataSource = applicationContext.getBean(dataSourceName, GovernanceShardingSphereDataSource.class);
SchemaContexts schemaContexts = (SchemaContexts) FieldValueUtil.getFieldValue(shardingSphereDataSource, "schemaContexts");
- return (ShardingRule) schemaContexts.getDefaultSchemaContext().getSchema().getRules().iterator().next();
+ return (ShardingRule) schemaContexts.getDefaultSchema().getRules().iterator().next();
}
}
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/test/java/org/apache/shardingsphere/spring/namespace/governance/GovernanceShardingPrimaryReplicaReplicationNamespaceTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/test/java/org/apache/shardingsphere/spring/namespace/governance/GovernanceShar [...]
index fb0908e..97f2a17 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/test/java/org/apache/shardingsphere/spring/namespace/governance/GovernanceShardingPrimaryReplicaReplicationNamespaceTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/test/java/org/apache/shardingsphere/spring/namespace/governance/GovernanceShardingPrimaryReplicaReplicationNamespaceTest.java
@@ -59,12 +59,12 @@ public class GovernanceShardingPrimaryReplicaReplicationNamespaceTest extends Ab
private Map<String, DataSource> getDataSourceMap(final String dataSourceName) {
GovernanceShardingSphereDataSource shardingSphereDataSource = applicationContext.getBean(dataSourceName, GovernanceShardingSphereDataSource.class);
SchemaContexts schemaContexts = (SchemaContexts) FieldValueUtil.getFieldValue(shardingSphereDataSource, "schemaContexts");
- return schemaContexts.getDefaultSchemaContext().getSchema().getDataSources();
+ return schemaContexts.getDefaultSchema().getDataSources();
}
private ShardingRule getShardingRule(final String dataSourceName) {
GovernanceShardingSphereDataSource shardingSphereDataSource = applicationContext.getBean(dataSourceName, GovernanceShardingSphereDataSource.class);
SchemaContexts schemaContexts = (SchemaContexts) FieldValueUtil.getFieldValue(shardingSphereDataSource, "schemaContexts");
- return (ShardingRule) schemaContexts.getDefaultSchemaContext().getSchema().getRules().iterator().next();
+ return (ShardingRule) schemaContexts.getDefaultSchema().getRules().iterator().next();
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngineFactory.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngineFactory.java
index 0d99085..938d774 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngineFactory.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngineFactory.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.proxy.backend.communication;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.sql.LogicSQL;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.JDBCDatabaseCommunicationEngine;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
@@ -81,9 +81,9 @@ public final class DatabaseCommunicationEngineFactory {
}
private LogicSQL createLogicSQL(final SQLStatement sqlStatement, final String sql, final List<Object> parameters, final BackendConnection backendConnection) {
- SchemaContext schemaContext = ProxyContext.getInstance().getSchema(backendConnection.getSchemaName());
- SchemaMetaData schemaMetaData = schemaContext.getSchema().getMetaData().getRuleSchemaMetaData().getSchemaMetaData();
+ ShardingSphereSchema schema = ProxyContext.getInstance().getSchema(backendConnection.getSchemaName());
+ SchemaMetaData schemaMetaData = schema.getMetaData().getRuleSchemaMetaData().getSchemaMetaData();
SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(schemaMetaData, parameters, sqlStatement);
- return new LogicSQL(schemaContext.getSchema(), sqlStatementContext, sql, parameters);
+ return new LogicSQL(schema, sqlStatementContext, sql, parameters);
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSource.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSource.java
index cbcf8a6..ededbce 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSource.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSource.java
@@ -76,7 +76,7 @@ public final class JDBCBackendDataSource implements BackendDataSource {
@SuppressWarnings("SynchronizationOnLocalVariableOrMethodParameter")
public List<Connection> getConnections(final String schemaName, final String dataSourceName,
final int connectionSize, final ConnectionMode connectionMode, final TransactionType transactionType) throws SQLException {
- DataSource dataSource = ProxyContext.getInstance().getSchemaContexts().getSchemaContextMap().get(schemaName).getSchema().getDataSources().get(dataSourceName);
+ DataSource dataSource = ProxyContext.getInstance().getSchemaContexts().getSchemas().get(schemaName).getDataSources().get(dataSourceName);
Preconditions.checkNotNull(dataSource, "Can not get connection from datasource %s.", dataSourceName);
if (1 == connectionSize) {
return Collections.singletonList(createConnection(schemaName, dataSourceName, dataSource, transactionType));
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/execute/engine/jdbc/JDBCExecuteEngine.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/execute/engine/jdbc/JDBCExecuteEngine.java
index 9d70920..019969d 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/execute/engine/jdbc/JDBCExecuteEngine.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/execute/engine/jdbc/JDBCExecuteEngine.java
@@ -135,13 +135,13 @@ public final class JDBCExecuteEngine implements SQLExecuteEngine {
@SuppressWarnings({"unchecked", "rawtypes"})
private Collection<InputGroup<StatementExecuteUnit>> generateInputGroups(final Collection<ExecutionUnit> executionUnits, final int maxConnectionsSizePerQuery, final boolean isReturnGeneratedKeys,
final RouteContext routeContext) throws SQLException {
- Collection<ShardingSphereRule> rules = ProxyContext.getInstance().getSchema(backendConnection.getSchemaName()).getSchema().getRules();
+ Collection<ShardingSphereRule> rules = ProxyContext.getInstance().getSchema(backendConnection.getSchemaName()).getRules();
ExecuteGroupEngine executeGroupEngine = accessor.getExecuteGroupEngine(backendConnection, maxConnectionsSizePerQuery, new StatementOption(isReturnGeneratedKeys), rules);
return (Collection<InputGroup<StatementExecuteUnit>>) executeGroupEngine.generate(routeContext, executionUnits);
}
private Collection<ExecuteResult> executeWithUnmanagedResource(final ExecutionContext executionContext, final int maxConnectionsSizePerQuery) throws SQLException {
- Collection<ShardingSphereRule> rules = ProxyContext.getInstance().getSchema(backendConnection.getSchemaName()).getSchema().getRules();
+ Collection<ShardingSphereRule> rules = ProxyContext.getInstance().getSchema(backendConnection.getSchemaName()).getRules();
Collection<InputGroup<RawSQLExecuteUnit>> inputGroups = new RawExecuteGroupEngine(maxConnectionsSizePerQuery, rules).generate(executionContext.getRouteContext(),
executionContext.getExecutionUnits());
// TODO handle query header
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/context/ProxyContext.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/context/ProxyContext.java
index 6217238..31e1f54 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/context/ProxyContext.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/context/ProxyContext.java
@@ -19,9 +19,9 @@ package org.apache.shardingsphere.proxy.backend.context;
import com.google.common.base.Strings;
import lombok.Getter;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.SchemaContexts;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.datasource.JDBCBackendDataSource;
import org.apache.shardingsphere.transaction.context.TransactionContexts;
import org.apache.shardingsphere.transaction.context.impl.StandardTransactionContexts;
@@ -80,17 +80,17 @@ public final class ProxyContext {
* @return schema exists or not
*/
public boolean schemaExists(final String schemaName) {
- return schemaContexts.getSchemaContextMap().containsKey(schemaName);
+ return schemaContexts.getSchemas().containsKey(schemaName);
}
/**
- * Get schema context.
+ * Get schema.
*
* @param schemaName schema name
- * @return schema context
+ * @return schema
*/
- public SchemaContext getSchema(final String schemaName) {
- return Strings.isNullOrEmpty(schemaName) ? null : schemaContexts.getSchemaContextMap().get(schemaName);
+ public ShardingSphereSchema getSchema(final String schemaName) {
+ return Strings.isNullOrEmpty(schemaName) ? null : schemaContexts.getSchemas().get(schemaName);
}
/**
@@ -99,7 +99,7 @@ public final class ProxyContext {
* @return all schema names
*/
public List<String> getAllSchemaNames() {
- return new ArrayList<>(schemaContexts.getSchemaContextMap().keySet());
+ return new ArrayList<>(schemaContexts.getSchemas().keySet());
}
/**
@@ -112,7 +112,7 @@ public final class ProxyContext {
if (schemaNames.isEmpty()) {
return Optional.empty();
}
- Map<String, DataSource> dataSources = Objects.requireNonNull(getSchema(schemaNames.get(0))).getSchema().getDataSources();
+ Map<String, DataSource> dataSources = Objects.requireNonNull(getSchema(schemaNames.get(0))).getDataSources();
return dataSources.values().stream().findFirst();
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/query/QueryHeaderBuilder.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/query/QueryHeaderBuilder.java
index 44d0e2f..a6fa29c 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/query/QueryHeaderBuilder.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/query/QueryHeaderBuilder.java
@@ -19,9 +19,9 @@ package org.apache.shardingsphere.proxy.backend.response.query;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.executor.sql.raw.execute.result.query.QueryHeader;
import org.apache.shardingsphere.infra.rule.DataNodeRoutedRule;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.sql.parser.binder.metadata.table.TableMetaData;
import org.apache.shardingsphere.sql.parser.binder.segment.select.projection.Projection;
import org.apache.shardingsphere.sql.parser.binder.segment.select.projection.ProjectionsContext;
@@ -46,7 +46,7 @@ public final class QueryHeaderBuilder {
* @return query header
* @throws SQLException SQL exception
*/
- public static QueryHeader build(final ResultSetMetaData resultSetMetaData, final SchemaContext schema, final int columnIndex) throws SQLException {
+ public static QueryHeader build(final ResultSetMetaData resultSetMetaData, final ShardingSphereSchema schema, final int columnIndex) throws SQLException {
return build(resultSetMetaData, schema, resultSetMetaData.getColumnName(columnIndex), columnIndex);
}
@@ -60,20 +60,20 @@ public final class QueryHeaderBuilder {
* @return query header
* @throws SQLException SQL exception
*/
- public static QueryHeader build(final ProjectionsContext projectionsContext,
- final ResultSetMetaData resultSetMetaData, final SchemaContext schema, final int columnIndex) throws SQLException {
+ public static QueryHeader build(final ProjectionsContext projectionsContext,
+ final ResultSetMetaData resultSetMetaData, final ShardingSphereSchema schema, final int columnIndex) throws SQLException {
return build(resultSetMetaData, schema, getColumnName(projectionsContext, resultSetMetaData, columnIndex), columnIndex);
}
- private static QueryHeader build(final ResultSetMetaData resultSetMetaData, final SchemaContext schema, final String columnName, final int columnIndex) throws SQLException {
- String schemaName = schema.getSchema().getName();
+ private static QueryHeader build(final ResultSetMetaData resultSetMetaData, final ShardingSphereSchema schema, final String columnName, final int columnIndex) throws SQLException {
+ String schemaName = schema.getName();
String actualTableName = resultSetMetaData.getTableName(columnIndex);
- Optional<DataNodeRoutedRule> dataNodeRoutedRule = schema.getSchema().getRules().stream().filter(each -> each instanceof DataNodeRoutedRule).findFirst().map(rule -> (DataNodeRoutedRule) rule);
+ Optional<DataNodeRoutedRule> dataNodeRoutedRule = schema.getRules().stream().filter(each -> each instanceof DataNodeRoutedRule).findFirst().map(rule -> (DataNodeRoutedRule) rule);
String tableName;
boolean primaryKey;
if (null != actualTableName && dataNodeRoutedRule.isPresent()) {
tableName = dataNodeRoutedRule.get().findLogicTableByActualTable(actualTableName).orElse("");
- TableMetaData tableMetaData = schema.getSchema().getMetaData().getRuleSchemaMetaData().getConfiguredSchemaMetaData().get(tableName);
+ TableMetaData tableMetaData = schema.getMetaData().getRuleSchemaMetaData().getConfiguredSchemaMetaData().get(tableName);
primaryKey = null != tableMetaData && tableMetaData.getColumns().get(columnName.toLowerCase()).isPrimaryKey();
} else {
tableName = actualTableName;
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/BroadcastBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/BroadcastBackendHandler.java
index 4299e20..64d0dd5 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/BroadcastBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/BroadcastBackendHandler.java
@@ -49,7 +49,7 @@ public final class BroadcastBackendHandler implements TextProtocolBackendHandler
String originalSchema = backendConnection.getSchemaName();
for (String each : ProxyContext.getInstance().getAllSchemaNames()) {
backendConnection.setCurrentSchema(each);
- if (!ProxyContext.getInstance().getSchema(each).getSchema().isComplete()) {
+ if (!ProxyContext.getInstance().getSchema(each).isComplete()) {
throw new RuleNotExistsException();
}
databaseCommunicationEngineFactory.newTextProtocolInstance(sqlStatement, sql, backendConnection).execute();
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowTablesBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowTablesBackendHandler.java
index 4113d50..dba2900 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowTablesBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowTablesBackendHandler.java
@@ -18,8 +18,8 @@
package org.apache.shardingsphere.proxy.backend.text.admin;
import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.executor.sql.raw.execute.result.query.QueryHeader;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngine;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngineFactory;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
@@ -53,11 +53,11 @@ public final class ShowTablesBackendHandler implements TextProtocolBackendHandle
@Override
public BackendResponse execute() throws SQLException {
- SchemaContext schemaContext = ProxyContext.getInstance().getSchema(backendConnection.getSchemaName());
- if (null == schemaContext) {
+ ShardingSphereSchema schema = ProxyContext.getInstance().getSchema(backendConnection.getSchemaName());
+ if (null == schema) {
throw new NoDatabaseSelectedException();
}
- if (!schemaContext.getSchema().isComplete()) {
+ if (!schema.isComplete()) {
return getDefaultQueryResponse(backendConnection.getSchemaName());
}
// TODO Get all tables from meta data.
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/UnicastBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/UnicastBackendHandler.java
index 9758fc8..7d1a190 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/UnicastBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/UnicastBackendHandler.java
@@ -18,7 +18,7 @@
package org.apache.shardingsphere.proxy.backend.text.admin;
import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngine;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngineFactory;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
@@ -52,15 +52,15 @@ public final class UnicastBackendHandler implements TextProtocolBackendHandler {
@Override
public BackendResponse execute() throws SQLException {
if (null == backendConnection.getSchemaName()) {
- Map<String, SchemaContext> schemaContexts = ProxyContext.getInstance().getSchemaContexts().getSchemaContextMap();
- if (schemaContexts.isEmpty()) {
+ Map<String, ShardingSphereSchema> schemas = ProxyContext.getInstance().getSchemaContexts().getSchemas();
+ if (schemas.isEmpty()) {
throw new NoDatabaseSelectedException();
}
- if (!schemaContexts.values().iterator().next().getSchema().isComplete()) {
+ if (!schemas.values().iterator().next().isComplete()) {
throw new RuleNotExistsException();
}
// TODO we should remove set default ShardingSphere schema after parser can recognize all DAL broadcast SQL.
- backendConnection.setCurrentSchema(schemaContexts.keySet().iterator().next());
+ backendConnection.setCurrentSchema(schemas.keySet().iterator().next());
}
databaseCommunicationEngine = databaseCommunicationEngineFactory.newTextProtocolInstance(sqlStatement, sql, backendConnection);
return databaseCommunicationEngine.execute();
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/query/QueryBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/query/QueryBackendHandler.java
index 0578797..4eed6f0 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/query/QueryBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/query/QueryBackendHandler.java
@@ -18,7 +18,7 @@
package org.apache.shardingsphere.proxy.backend.text.query;
import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngine;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngineFactory;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
@@ -50,11 +50,11 @@ public final class QueryBackendHandler implements TextProtocolBackendHandler {
@Override
public BackendResponse execute() throws SQLException {
- SchemaContext schemaContext = ProxyContext.getInstance().getSchema(backendConnection.getSchemaName());
- if (null == schemaContext) {
+ ShardingSphereSchema schema = ProxyContext.getInstance().getSchema(backendConnection.getSchemaName());
+ if (null == schema) {
throw new NoDatabaseSelectedException();
}
- if (!schemaContext.getSchema().isComplete()) {
+ if (!schema.isComplete()) {
throw new RuleNotExistsException();
}
databaseCommunicationEngine = databaseCommunicationEngineFactory.newTextProtocolInstance(sqlStatement, sql, backendConnection);
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/explain/ShardingCTLExplainBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/explain/ShardingCTLExplainBackendHandler.java
index a4a38e1..547d0c5 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/explain/ShardingCTLExplainBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/explain/ShardingCTLExplainBackendHandler.java
@@ -19,10 +19,10 @@ package org.apache.shardingsphere.proxy.backend.text.sctl.explain;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.context.kernel.KernelProcessor;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
-import org.apache.shardingsphere.infra.sql.LogicSQL;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.raw.execute.result.query.QueryHeader;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.sql.LogicSQL;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.exception.NoDatabaseSelectedException;
@@ -64,14 +64,14 @@ public final class ShardingCTLExplainBackendHandler implements TextProtocolBacke
if (!explainStatement.isPresent()) {
throw new InvalidShardingCTLFormatException(sql);
}
- SchemaContext schemaContext = ProxyContext.getInstance().getSchema(backendConnection.getSchemaName());
- if (null == schemaContext) {
+ ShardingSphereSchema schema = ProxyContext.getInstance().getSchema(backendConnection.getSchemaName());
+ if (null == schema) {
throw new NoDatabaseSelectedException();
}
- if (!schemaContext.getSchema().isComplete()) {
+ if (!schema.isComplete()) {
throw new RuleNotExistsException();
}
- LogicSQL logicSQL = createLogicSQL(schemaContext, explainStatement.get());
+ LogicSQL logicSQL = createLogicSQL(schema, explainStatement.get());
executionUnits = new KernelProcessor().generateExecutionContext(logicSQL, ProxyContext.getInstance().getSchemaContexts().getProps()).getExecutionUnits().iterator();
queryHeaders = new ArrayList<>(2);
queryHeaders.add(new QueryHeader("", "", "datasource_name", "", 255, Types.CHAR, 0, false, false, false, false));
@@ -79,11 +79,11 @@ public final class ShardingCTLExplainBackendHandler implements TextProtocolBacke
return new QueryResponse(queryHeaders);
}
- private LogicSQL createLogicSQL(final SchemaContext schemaContext, final ShardingCTLExplainStatement explainStatement) {
- SchemaMetaData schemaMetaData = schemaContext.getSchema().getMetaData().getRuleSchemaMetaData().getSchemaMetaData();
- SQLStatement sqlStatement = schemaContext.getRuntimeContext().getSqlParserEngine().parse(explainStatement.getSql(), false);
+ private LogicSQL createLogicSQL(final ShardingSphereSchema schema, final ShardingCTLExplainStatement explainStatement) {
+ SchemaMetaData schemaMetaData = schema.getMetaData().getRuleSchemaMetaData().getSchemaMetaData();
+ SQLStatement sqlStatement = ProxyContext.getInstance().getSchemaContexts().getSqlParserEngine().parse(explainStatement.getSql(), false);
SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(schemaMetaData, Collections.emptyList(), sqlStatement);
- return new LogicSQL(schemaContext.getSchema(), sqlStatementContext, explainStatement.getSql(), Collections.emptyList());
+ return new LogicSQL(schema, sqlStatementContext, explainStatement.getSql(), Collections.emptyList());
}
@Override
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintShowTableStatusExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintShowTableStatusExecutor.java
index 8af0b13..ca45ec6 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintShowTableStatusExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/internal/executor/HintShowTableStatusExecutor.java
@@ -19,10 +19,10 @@ package org.apache.shardingsphere.proxy.backend.text.sctl.hint.internal.executor
import com.google.common.base.Joiner;
import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.executor.sql.raw.execute.result.query.QueryHeader;
import org.apache.shardingsphere.infra.hint.HintManager;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.exception.NoDatabaseSelectedException;
@@ -59,14 +59,14 @@ public final class HintShowTableStatusExecutor extends AbstractHintQueryExecutor
@Override
protected MergedResult createMergedResult() {
Map<String, HintShowTableStatusResult> results = new HashMap<>();
- SchemaContext schemaContext = ProxyContext.getInstance().getSchema(backendConnection.getSchemaName());
- if (null == schemaContext) {
+ ShardingSphereSchema schema = ProxyContext.getInstance().getSchema(backendConnection.getSchemaName());
+ if (null == schema) {
throw new NoDatabaseSelectedException();
}
- if (!schemaContext.getSchema().isComplete()) {
+ if (!schema.isComplete()) {
throw new RuleNotExistsException();
}
- Collection<String> tableNames = schemaContext.getSchema().getMetaData().getRuleSchemaMetaData().getConfiguredSchemaMetaData().getAllTableNames();
+ Collection<String> tableNames = schema.getMetaData().getRuleSchemaMetaData().getConfiguredSchemaMetaData().getAllTableNames();
for (String each : tableNames) {
if (HintManager.isDatabaseShardingOnly()) {
fillShardingValues(results, each, HintManager.getDatabaseShardingValues(), Collections.emptyList());
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/DatabaseCommunicationEngineFactoryTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/DatabaseCommunicationEngineFactoryTest.java
index 6142e00..32a0c13 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/DatabaseCommunicationEngineFactoryTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/DatabaseCommunicationEngineFactoryTest.java
@@ -20,13 +20,15 @@ package org.apache.shardingsphere.proxy.backend.communication.jdbc;
import lombok.SneakyThrows;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngine;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngineFactory;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.junit.Before;
import org.junit.Test;
@@ -39,8 +41,6 @@ import java.util.Properties;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
-import static org.mockito.ArgumentMatchers.anyBoolean;
-import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -52,17 +52,16 @@ public final class DatabaseCommunicationEngineFactoryTest {
public void setUp() {
Field schemaContexts = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
schemaContexts.setAccessible(true);
- schemaContexts.set(ProxyContext.getInstance(),
- new StandardSchemaContexts(getSchemaContextMap(), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(getSchemas(),
+ mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
BackendConnection backendConnection = mock(BackendConnection.class, RETURNS_DEEP_STUBS);
when(backendConnection.getSchemaName()).thenReturn("schema");
when(backendConnection.isSerialExecute()).thenReturn(true);
}
- private Map<String, SchemaContext> getSchemaContextMap() {
- SchemaContext result = mock(SchemaContext.class, RETURNS_DEEP_STUBS);
- when(result.getSchema().getRules()).thenReturn(Collections.emptyList());
- when(result.getRuntimeContext().getSqlParserEngine().parse(anyString(), anyBoolean())).thenReturn(mock(SQLStatement.class));
+ private Map<String, ShardingSphereSchema> getSchemas() {
+ ShardingSphereSchema result = mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS);
+ when(result.getRules()).thenReturn(Collections.emptyList());
return Collections.singletonMap("schema", result);
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnectionTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnectionTest.java
index 18f230b..ca5ffb5 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnectionTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnectionTest.java
@@ -21,16 +21,16 @@ import com.google.common.collect.Multimap;
import lombok.SneakyThrows;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
-import org.apache.shardingsphere.infra.context.schema.runtime.RuntimeContext;
-import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
import org.apache.shardingsphere.infra.executor.sql.ConnectionMode;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.datasource.JDBCBackendDataSource;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.transaction.BackendTransactionManager;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import org.apache.shardingsphere.transaction.ShardingTransactionManagerEngine;
import org.apache.shardingsphere.transaction.context.TransactionContexts;
import org.apache.shardingsphere.transaction.core.TransactionType;
@@ -56,9 +56,9 @@ import java.util.Properties;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertFalse;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
@@ -100,16 +100,15 @@ public final class BackendConnectionTest {
private void setSchemaContexts() throws ReflectiveOperationException {
Field field = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
field.setAccessible(true);
- field.set(ProxyContext.getInstance(), new StandardSchemaContexts(createSchemaContextMap(), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ field.set(ProxyContext.getInstance(), new StandardSchemaContexts(createSchemas(),
+ mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
}
- private Map<String, SchemaContext> createSchemaContextMap() {
- Map<String, SchemaContext> result = new HashMap<>(10);
+ private Map<String, ShardingSphereSchema> createSchemas() {
+ Map<String, ShardingSphereSchema> result = new HashMap<>(10);
for (int i = 0; i < 10; i++) {
String name = String.format(SCHEMA_PATTERN, i);
- RuntimeContext runtimeContext = mock(RuntimeContext.class);
- SchemaContext schemaContext = new SchemaContext(mock(ShardingSphereSchema.class), runtimeContext);
- result.put(name, schemaContext);
+ result.put(name, mock(ShardingSphereSchema.class));
}
return result;
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSourceTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSourceTest.java
index ea132c0..5ad0e29 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSourceTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSourceTest.java
@@ -21,12 +21,14 @@ import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
import org.apache.shardingsphere.infra.executor.sql.ConnectionMode;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.datasource.fixture.CallTimeRecordDataSource;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import org.apache.shardingsphere.transaction.ShardingTransactionManagerEngine;
import org.apache.shardingsphere.transaction.context.TransactionContexts;
import org.junit.Before;
@@ -72,15 +74,15 @@ public final class JDBCBackendDataSourceTest {
private void setSchemaContexts() {
Field schemaContexts = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
schemaContexts.setAccessible(true);
- schemaContexts.set(ProxyContext.getInstance(),
- new StandardSchemaContexts(createSchemaContextMap(), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(createSchemas(),
+ mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
}
- private Map<String, SchemaContext> createSchemaContextMap() {
- SchemaContext schemaContext = mock(SchemaContext.class, RETURNS_DEEP_STUBS);
- when(schemaContext.getSchema().getName()).thenReturn("schema");
- when(schemaContext.getSchema().getDataSources()).thenReturn(mockDataSources(2));
- return Collections.singletonMap("schema", schemaContext);
+ private Map<String, ShardingSphereSchema> createSchemas() {
+ ShardingSphereSchema schema = mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS);
+ when(schema.getName()).thenReturn("schema");
+ when(schema.getDataSources()).thenReturn(mockDataSources(2));
+ return Collections.singletonMap("schema", schema);
}
@SneakyThrows(ReflectiveOperationException.class)
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
index af20f2b..29cad21 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
@@ -19,11 +19,13 @@ package org.apache.shardingsphere.proxy.backend.context;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.SchemaContexts;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.jdbc.test.MockedDataSource;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import org.apache.shardingsphere.transaction.context.TransactionContexts;
import org.junit.Test;
@@ -43,7 +45,6 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -58,8 +59,8 @@ public final class ProxyContextTest {
mockDataSourceMap.put("ds_2", new MockedDataSource());
Field schemaContexts = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
schemaContexts.setAccessible(true);
- schemaContexts.set(ProxyContext.getInstance(),
- new StandardSchemaContexts(mockSchemaContextMap(mockDataSourceMap), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(mockSchemas(mockDataSourceMap),
+ mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
Optional<DataSource> actual = ProxyContext.getInstance().getDataSourceSample();
assertThat(actual, is(Optional.of(mockDataSourceMap.get("ds_1"))));
}
@@ -76,47 +77,50 @@ public final class ProxyContextTest {
@Test
public void assertSchemaExists() throws NoSuchFieldException, IllegalAccessException {
- Map<String, SchemaContext> schemaContextsMap = mockSchemaContextMap(Collections.emptyMap());
+ Map<String, ShardingSphereSchema> schemas = mockSchemas(Collections.emptyMap());
Field schemaContexts = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
schemaContexts.setAccessible(true);
- schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(schemaContextsMap, new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(schemas,
+ mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
assertTrue(ProxyContext.getInstance().schemaExists("schema"));
assertFalse(ProxyContext.getInstance().schemaExists("schema_2"));
}
@Test
public void assertGetSchema() throws NoSuchFieldException, IllegalAccessException {
- Map<String, SchemaContext> schemaContextsMap = mockSchemaContextMap(Collections.emptyMap());
+ Map<String, ShardingSphereSchema> schemas = mockSchemas(Collections.emptyMap());
Field schemaContexts = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
schemaContexts.setAccessible(true);
- schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(schemaContextsMap, new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(schemas,
+ mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
assertNull(ProxyContext.getInstance().getSchema(null));
assertNull(ProxyContext.getInstance().getSchema(""));
assertNull(ProxyContext.getInstance().getSchema("schema1"));
- assertThat(schemaContextsMap.get("schema"), is(ProxyContext.getInstance().getSchema("schema")));
+ assertThat(schemas.get("schema"), is(ProxyContext.getInstance().getSchema("schema")));
}
@Test
public void assertGetAllSchemaNames() throws NoSuchFieldException, IllegalAccessException {
- Map<String, SchemaContext> schemaContextsMap = createSchemaContextMap();
+ Map<String, ShardingSphereSchema> schemas = createSchemas();
Field schemaContexts = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
schemaContexts.setAccessible(true);
- schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(schemaContextsMap, new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
- assertThat(new LinkedHashSet<>(ProxyContext.getInstance().getAllSchemaNames()), is(schemaContextsMap.keySet()));
+ schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(schemas,
+ mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ assertThat(new LinkedHashSet<>(ProxyContext.getInstance().getAllSchemaNames()), is(schemas.keySet()));
}
- private Map<String, SchemaContext> createSchemaContextMap() {
- Map<String, SchemaContext> result = new LinkedHashMap<>(10, 1);
+ private Map<String, ShardingSphereSchema> createSchemas() {
+ Map<String, ShardingSphereSchema> result = new LinkedHashMap<>(10, 1);
for (int i = 0; i < 10; i++) {
- result.put(String.format(SCHEMA_PATTERN, i), mock(SchemaContext.class));
+ result.put(String.format(SCHEMA_PATTERN, i), mock(ShardingSphereSchema.class));
}
return result;
}
- private Map<String, SchemaContext> mockSchemaContextMap(final Map<String, DataSource> mockDataSourceMap) {
- SchemaContext schemaContext = mock(SchemaContext.class, RETURNS_DEEP_STUBS);
- when(schemaContext.getSchema().getName()).thenReturn("schema");
- when(schemaContext.getSchema().getDataSources()).thenReturn(mockDataSourceMap);
- return Collections.singletonMap("schema", schemaContext);
+ private Map<String, ShardingSphereSchema> mockSchemas(final Map<String, DataSource> mockDataSourceMap) {
+ ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
+ when(schema.getName()).thenReturn("schema");
+ when(schema.getDataSources()).thenReturn(mockDataSourceMap);
+ return Collections.singletonMap("schema", schema);
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/response/query/QueryHeaderBuilderTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/response/query/QueryHeaderBuilderTest.java
index 4ece29c..114e2a6 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/response/query/QueryHeaderBuilderTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/response/query/QueryHeaderBuilderTest.java
@@ -17,13 +17,12 @@
package org.apache.shardingsphere.proxy.backend.response.query;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
-import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.database.metadata.DataSourceMetaData;
import org.apache.shardingsphere.infra.executor.sql.raw.execute.result.query.QueryHeader;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.datasource.DataSourcesMetaData;
import org.apache.shardingsphere.infra.metadata.schema.RuleSchemaMetaData;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.sql.parser.binder.metadata.column.ColumnMetaData;
import org.apache.shardingsphere.sql.parser.binder.metadata.index.IndexMetaData;
@@ -51,84 +50,84 @@ public final class QueryHeaderBuilderTest {
@Test
public void assertQueryHeaderSchema() throws SQLException {
- QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchemaContext(), 1);
+ QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchema(), 1);
assertThat(header.getSchema(), is("sharding_schema"));
}
@Test
public void assertQueryHeaderTable() throws SQLException {
- QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchemaContext(), 1);
+ QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchema(), 1);
assertThat(header.getTable(), is("t_logic_order"));
}
@Test
public void assertQueryHeaderColumnLabel() throws SQLException {
- QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchemaContext(), 1);
+ QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchema(), 1);
assertThat(header.getColumnLabel(), is("order_id"));
}
@Test
public void assertQueryHeaderColumnNameWithoutProjectionsContext() throws SQLException {
- QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchemaContext(), 1);
+ QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchema(), 1);
assertThat(header.getColumnName(), is("order_id"));
}
@Test
public void assertQueryHeaderColumnNameFromProjectionsContext() throws SQLException {
- QueryHeader header = QueryHeaderBuilder.build(createProjectionsContext(), createResultSetMetaData(), createSchemaContext(), 1);
+ QueryHeader header = QueryHeaderBuilder.build(createProjectionsContext(), createResultSetMetaData(), createSchema(), 1);
assertThat(header.getColumnName(), is("order_id"));
}
@Test
public void assertQueryHeaderColumnNameFromMetaData() throws SQLException {
- QueryHeader header = QueryHeaderBuilder.build(createProjectionsContext(), createResultSetMetaData(), createSchemaContext(), 2);
+ QueryHeader header = QueryHeaderBuilder.build(createProjectionsContext(), createResultSetMetaData(), createSchema(), 2);
assertThat(header.getColumnName(), is("expr"));
}
@Test
public void assertQueryHeaderColumnLength() throws SQLException {
- QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchemaContext(), 1);
+ QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchema(), 1);
assertThat(header.getColumnLength(), is(1));
}
@Test
public void assertQueryHeaderColumnType() throws SQLException {
- QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchemaContext(), 1);
+ QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchema(), 1);
assertThat(header.getColumnType(), is(Types.INTEGER));
}
@Test
public void assertQueryHeaderDecimals() throws SQLException {
- QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchemaContext(), 1);
+ QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchema(), 1);
assertThat(header.getDecimals(), is(1));
}
@Test
public void assertQueryHeaderSigned() throws SQLException {
- QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchemaContext(), 1);
+ QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchema(), 1);
assertTrue(header.isSigned());
}
@Test
public void assertQueryHeaderPrimaryKey() throws SQLException {
- QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchemaContext(), 1);
+ QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchema(), 1);
assertTrue(header.isPrimaryKey());
}
@Test
public void assertQueryHeaderNotNull() throws SQLException {
- QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchemaContext(), 1);
+ QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchema(), 1);
assertTrue(header.isNotNull());
}
@Test
public void assertQueryHeaderAutoIncrement() throws SQLException {
- QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchemaContext(), 1);
+ QueryHeader header = QueryHeaderBuilder.build(createResultSetMetaData(), createSchema(), 1);
assertTrue(header.isAutoIncrement());
}
- private SchemaContext createSchemaContext() {
- SchemaContext result = mock(SchemaContext.class);
+ private ShardingSphereSchema createSchema() {
+ ShardingSphereSchema result = mock(ShardingSphereSchema.class);
ColumnMetaData columnMetaData = new ColumnMetaData("order_id", Types.INTEGER, "int", true, false, false);
SchemaMetaData schemaMetaData = mock(SchemaMetaData.class);
when(schemaMetaData.get("t_logic_order")).thenReturn(new TableMetaData(Collections.singletonList(columnMetaData), Collections.singletonList(new IndexMetaData("order_id"))));
@@ -139,13 +138,11 @@ public final class QueryHeaderBuilderTest {
DataSourcesMetaData dataSourcesMetaData = mock(DataSourcesMetaData.class);
when(dataSourcesMetaData.getDataSourceMetaData("ds_0")).thenReturn(mock(DataSourceMetaData.class));
when(metaData.getDataSourcesMetaData()).thenReturn(dataSourcesMetaData);
- ShardingSphereSchema shardingSphereSchema = mock(ShardingSphereSchema.class);
- when(result.getSchema()).thenReturn(shardingSphereSchema);
- when(shardingSphereSchema.getMetaData()).thenReturn(metaData);
+ when(result.getMetaData()).thenReturn(metaData);
ShardingRule shardingRule = mock(ShardingRule.class);
when(shardingRule.findLogicTableByActualTable("t_order")).thenReturn(Optional.of("t_logic_order"));
- when(shardingSphereSchema.getRules()).thenReturn(Collections.singletonList(shardingRule));
- when(result.getSchema().getName()).thenReturn("sharding_schema");
+ when(result.getRules()).thenReturn(Collections.singletonList(shardingRule));
+ when(result.getName()).thenReturn("sharding_schema");
return result;
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/BroadcastBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/BroadcastBackendHandlerTest.java
index 1aefbf4..d99091b 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/BroadcastBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/BroadcastBackendHandlerTest.java
@@ -20,15 +20,17 @@ package org.apache.shardingsphere.proxy.backend.text.admin;
import lombok.SneakyThrows;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngine;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngineFactory;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.response.BackendResponse;
import org.apache.shardingsphere.proxy.backend.response.update.UpdateResponse;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.junit.Before;
import org.junit.Test;
@@ -72,8 +74,8 @@ public final class BroadcastBackendHandlerTest {
public void setUp() {
Field schemaContexts = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
schemaContexts.setAccessible(true);
- schemaContexts.set(ProxyContext.getInstance(),
- new StandardSchemaContexts(getSchemaContextMap(), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(getSchemas(),
+ mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
when(backendConnection.getSchemaName()).thenReturn(String.format(SCHEMA_PATTERN, 0));
}
@@ -89,12 +91,12 @@ public final class BroadcastBackendHandlerTest {
verify(databaseCommunicationEngine, times(10)).execute();
}
- private Map<String, SchemaContext> getSchemaContextMap() {
- Map<String, SchemaContext> result = new HashMap<>(10);
+ private Map<String, ShardingSphereSchema> getSchemas() {
+ Map<String, ShardingSphereSchema> result = new HashMap<>(10);
for (int i = 0; i < 10; i++) {
- SchemaContext schemaContext = mock(SchemaContext.class, RETURNS_DEEP_STUBS);
- when(schemaContext.getSchema().isComplete()).thenReturn(true);
- result.put(String.format(SCHEMA_PATTERN, i), schemaContext);
+ ShardingSphereSchema schema = mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS);
+ when(schema.isComplete()).thenReturn(true);
+ result.put(String.format(SCHEMA_PATTERN, i), schema);
}
return result;
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandlerTest.java
index 67180d8..b2e2c2e 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandlerTest.java
@@ -20,15 +20,17 @@ package org.apache.shardingsphere.proxy.backend.text.admin;
import lombok.SneakyThrows;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.SchemaContexts;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.exception.DBCreateExistsException;
import org.apache.shardingsphere.proxy.backend.response.BackendResponse;
import org.apache.shardingsphere.proxy.backend.response.update.UpdateResponse;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import org.apache.shardingsphere.rdl.parser.statement.rdl.CreateDataSourcesStatement;
import org.apache.shardingsphere.rdl.parser.statement.rdl.CreateShardingRuleStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateDatabaseStatement;
@@ -61,8 +63,8 @@ public final class RDLBackendHandlerTest {
public void setUp() {
Field schemaContexts = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
schemaContexts.setAccessible(true);
- schemaContexts.set(ProxyContext.getInstance(),
- new StandardSchemaContexts(getSchemaContextMap(), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(getSchemas(),
+ mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
}
@Test
@@ -143,9 +145,8 @@ public final class RDLBackendHandlerTest {
}
}
- private Map<String, SchemaContext> getSchemaContextMap() {
- SchemaContext result = new SchemaContext(null, null);
- return Collections.singletonMap("schema", result);
+ private Map<String, ShardingSphereSchema> getSchemas() {
+ return Collections.singletonMap("schema", null);
}
@Test
@@ -184,7 +185,7 @@ public final class RDLBackendHandlerTest {
schemaContexts.setAccessible(true);
if (isGovernance) {
SchemaContexts mockedSchemaContexts = mock(SchemaContexts.class);
- when(mockedSchemaContexts.getSchemaContextMap()).thenReturn(Collections.singletonMap("schema", mock(SchemaContext.class)));
+ when(mockedSchemaContexts.getSchemas()).thenReturn(Collections.singletonMap("schema", mock(ShardingSphereSchema.class)));
schemaContexts.set(ProxyContext.getInstance(), mockedSchemaContexts);
} else {
schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts());
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowDatabasesBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowDatabasesBackendHandlerTest.java
index fe1fa11..a5a2145 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowDatabasesBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowDatabasesBackendHandlerTest.java
@@ -21,13 +21,15 @@ import lombok.SneakyThrows;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.auth.ProxyUser;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
+import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.response.query.QueryData;
import org.apache.shardingsphere.proxy.backend.response.query.QueryResponse;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -62,14 +64,14 @@ public final class ShowDatabasesBackendHandlerTest {
showDatabasesBackendHandler = new ShowDatabasesBackendHandler(backendConnection);
Field schemaContexts = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
schemaContexts.setAccessible(true);
- schemaContexts.set(ProxyContext.getInstance(),
- new StandardSchemaContexts(getSchemaContextMap(), getAuthentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(getSchemas(),
+ mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), getAuthentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
}
- private Map<String, SchemaContext> getSchemaContextMap() {
- Map<String, SchemaContext> result = new HashMap<>(10);
+ private Map<String, ShardingSphereSchema> getSchemas() {
+ Map<String, ShardingSphereSchema> result = new HashMap<>(10);
for (int i = 0; i < 10; i++) {
- result.put(String.format(SCHEMA_PATTERN, i), mock(SchemaContext.class));
+ result.put(String.format(SCHEMA_PATTERN, i), mock(ShardingSphereSchema.class));
}
return result;
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowTablesBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowTablesBackendHandlerTest.java
index 3be2af2..1a44c0c 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowTablesBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/ShowTablesBackendHandlerTest.java
@@ -21,13 +21,15 @@ import lombok.SneakyThrows;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.auth.ProxyUser;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
+import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.response.query.QueryData;
import org.apache.shardingsphere.proxy.backend.response.query.QueryResponse;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.junit.Before;
import org.junit.Test;
@@ -59,19 +61,20 @@ public final class ShowTablesBackendHandlerTest {
BackendConnection backendConnection = mock(BackendConnection.class);
when(backendConnection.getUsername()).thenReturn("root");
tablesBackendHandler = new ShowTablesBackendHandler("show tables", mock(SQLStatement.class), backendConnection);
- Map<String, SchemaContext> schemaContextMap = getSchemaContextMap();
+ Map<String, ShardingSphereSchema> schemas = getSchemas();
when(backendConnection.getSchemaName()).thenReturn(String.format(SCHEMA_PATTERN, 0));
Field schemaContexts = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
schemaContexts.setAccessible(true);
- schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(schemaContextMap, getAuthentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(schemas,
+ mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), getAuthentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
}
- private Map<String, SchemaContext> getSchemaContextMap() {
- Map<String, SchemaContext> result = new HashMap<>(10);
+ private Map<String, ShardingSphereSchema> getSchemas() {
+ Map<String, ShardingSphereSchema> result = new HashMap<>(10);
for (int i = 0; i < 10; i++) {
- SchemaContext context = mock(SchemaContext.class, RETURNS_DEEP_STUBS);
- when(context.getSchema().isComplete()).thenReturn(false);
- result.put(String.format(SCHEMA_PATTERN, i), context);
+ ShardingSphereSchema schema = mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS);
+ when(schema.isComplete()).thenReturn(false);
+ result.put(String.format(SCHEMA_PATTERN, i), schema);
}
return result;
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/UnicastBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/UnicastBackendHandlerTest.java
index 9d10278..64d0bd0 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/UnicastBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/UnicastBackendHandlerTest.java
@@ -20,15 +20,17 @@ package org.apache.shardingsphere.proxy.backend.text.admin;
import lombok.SneakyThrows;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngine;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngineFactory;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.response.BackendResponse;
import org.apache.shardingsphere.proxy.backend.response.update.UpdateResponse;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.apache.shardingsphere.transaction.core.TransactionType;
import org.junit.Before;
@@ -66,15 +68,15 @@ public final class UnicastBackendHandlerTest {
public void setUp() throws SQLException, IllegalAccessException, NoSuchFieldException {
Field schemaContexts = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
schemaContexts.setAccessible(true);
- schemaContexts.set(ProxyContext.getInstance(),
- new StandardSchemaContexts(getSchemaContextMap(), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(getSchemas(),
+ mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
setUnderlyingHandler(new UpdateResponse());
}
- private Map<String, SchemaContext> getSchemaContextMap() {
- Map<String, SchemaContext> result = new HashMap<>(10);
+ private Map<String, ShardingSphereSchema> getSchemas() {
+ Map<String, ShardingSphereSchema> result = new HashMap<>(10);
for (int i = 0; i < 10; i++) {
- result.put(String.format(SCHEMA_PATTERN, i), mock(SchemaContext.class));
+ result.put(String.format(SCHEMA_PATTERN, i), mock(ShardingSphereSchema.class));
}
return result;
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/UseDatabaseBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/UseDatabaseBackendHandlerTest.java
index ed1062b..056d4af 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/UseDatabaseBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/UseDatabaseBackendHandlerTest.java
@@ -20,14 +20,16 @@ package org.apache.shardingsphere.proxy.backend.text.admin;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.auth.ProxyUser;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.exception.UnknownDatabaseException;
import org.apache.shardingsphere.proxy.backend.response.BackendResponse;
import org.apache.shardingsphere.proxy.backend.response.update.UpdateResponse;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLUseStatement;
import org.junit.Before;
import org.junit.Test;
@@ -60,14 +62,14 @@ public final class UseDatabaseBackendHandlerTest {
when(backendConnection.getUsername()).thenReturn("root");
Field schemaContexts = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
schemaContexts.setAccessible(true);
- schemaContexts.set(ProxyContext.getInstance(),
- new StandardSchemaContexts(getSchemaContextMap(), getAuthentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(getSchemas(),
+ mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), getAuthentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
}
- private Map<String, SchemaContext> getSchemaContextMap() {
- Map<String, SchemaContext> result = new HashMap<>(10);
+ private Map<String, ShardingSphereSchema> getSchemas() {
+ Map<String, ShardingSphereSchema> result = new HashMap<>(10);
for (int i = 0; i < 10; i++) {
- result.put(String.format(SCHEMA_PATTERN, i), mock(SchemaContext.class));
+ result.put(String.format(SCHEMA_PATTERN, i), mock(ShardingSphereSchema.class));
}
return result;
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/explain/ShardingCTLExplainBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/explain/ShardingCTLExplainBackendHandlerTest.java
index 28ff54c..8a8960a 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/explain/ShardingCTLExplainBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/explain/ShardingCTLExplainBackendHandlerTest.java
@@ -3,17 +3,15 @@ package org.apache.shardingsphere.proxy.backend.text.sctl.explain;
import lombok.SneakyThrows;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
-import org.apache.shardingsphere.infra.context.schema.runtime.RuntimeContext;
-import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
-import org.apache.shardingsphere.sql.parser.engine.StandardSQLParserEngine;
import org.junit.Before;
import org.junit.Test;
@@ -59,15 +57,14 @@ public final class ShardingCTLExplainBackendHandlerTest {
handler = new ShardingCTLExplainBackendHandler("sctl:explain select 1", connection);
Field schemaContexts = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
schemaContexts.setAccessible(true);
- schemaContexts.set(ProxyContext.getInstance(),
- new StandardSchemaContexts(getSchemaContextMap(), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(getSchemas(),
+ mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
}
- private Map<String, SchemaContext> getSchemaContextMap() {
- RuntimeContext runtimeContext = new RuntimeContext(null, new ShardingSphereSQLParserEngine(new StandardSQLParserEngine("MySQL")));
+ private Map<String, ShardingSphereSchema> getSchemas() {
ShardingSphereSchema schema = new ShardingSphereSchema("schema", Collections.emptyList(),
Collections.singleton(mock(ShardingSphereRule.class)), Collections.singletonMap("ds0", mock(DataSource.class)), mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS));
- return Collections.singletonMap("schema", new SchemaContext(schema, runtimeContext));
+ return Collections.singletonMap("schema", schema);
}
@Test
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/ShardingCTLHintBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/ShardingCTLHintBackendHandlerTest.java
index 36b59ef..08583e2 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/ShardingCTLHintBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/ShardingCTLHintBackendHandlerTest.java
@@ -22,10 +22,10 @@ import lombok.SneakyThrows;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
import org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.SchemaContexts;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
import org.apache.shardingsphere.infra.hint.HintManager;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.datasource.CachedDatabaseMetaData;
@@ -41,6 +41,7 @@ import org.apache.shardingsphere.proxy.backend.response.update.UpdateResponse;
import org.apache.shardingsphere.proxy.backend.text.sctl.exception.InvalidShardingCTLFormatException;
import org.apache.shardingsphere.proxy.backend.text.sctl.exception.UnsupportedShardingCTLTypeException;
import org.apache.shardingsphere.proxy.backend.text.sctl.hint.internal.HintManagerHolder;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import org.apache.shardingsphere.sql.parser.binder.metadata.schema.SchemaMetaData;
import org.apache.shardingsphere.sql.parser.binder.metadata.table.TableMetaData;
import org.apache.shardingsphere.transaction.context.TransactionContexts;
@@ -175,8 +176,8 @@ public final class ShardingCTLHintBackendHandlerTest {
schemaContexts.setAccessible(true);
Properties props = new Properties();
props.setProperty(ConfigurationPropertyKey.PROXY_HINT_ENABLED.getKey(), Boolean.TRUE.toString());
- schemaContexts.set(ProxyContext.getInstance(),
- new StandardSchemaContexts(getSchemaContextMap(), new Authentication(), new ConfigurationProperties(props), new MySQLDatabaseType()));
+ schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(getSchemas(),
+ mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), new Authentication(), new ConfigurationProperties(props), new MySQLDatabaseType()));
String sql = "sctl:hint show table status";
ShardingCTLHintBackendHandler defaultHintBackendHandler = new ShardingCTLHintBackendHandler(sql, backendConnection);
BackendResponse backendResponse = defaultHintBackendHandler.execute();
@@ -206,13 +207,12 @@ public final class ShardingCTLHintBackendHandlerTest {
assertFalse(updateHintBackendHandler.next());
}
- private Map<String, SchemaContext> getSchemaContextMap() {
- ShardingSphereSchema shardingSphereSchema = mock(ShardingSphereSchema.class);
- when(shardingSphereSchema.getMetaData()).thenReturn(new ShardingSphereMetaData(mock(DataSourcesMetaData.class),
+ private Map<String, ShardingSphereSchema> getSchemas() {
+ ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
+ when(schema.getMetaData()).thenReturn(new ShardingSphereMetaData(mock(DataSourcesMetaData.class),
new RuleSchemaMetaData(new SchemaMetaData(ImmutableMap.of("user", mock(TableMetaData.class))), Collections.emptyMap()), mock(CachedDatabaseMetaData.class)));
- when(shardingSphereSchema.isComplete()).thenReturn(true);
- SchemaContext result = new SchemaContext(shardingSphereSchema, null);
- return Collections.singletonMap("schema", result);
+ when(schema.isComplete()).thenReturn(true);
+ return Collections.singletonMap("schema", schema);
}
@Test(expected = UnsupportedShardingCTLTypeException.class)
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/set/ShardingCTLSetBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/set/ShardingCTLSetBackendHandlerTest.java
index 8e78666..1b3840f 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/set/ShardingCTLSetBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/set/ShardingCTLSetBackendHandlerTest.java
@@ -20,15 +20,17 @@ package org.apache.shardingsphere.proxy.backend.text.sctl.set;
import lombok.SneakyThrows;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.response.BackendResponse;
import org.apache.shardingsphere.proxy.backend.response.update.UpdateResponse;
import org.apache.shardingsphere.proxy.backend.text.sctl.exception.InvalidShardingCTLFormatException;
import org.apache.shardingsphere.proxy.backend.text.sctl.exception.UnsupportedShardingCTLTypeException;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import org.apache.shardingsphere.transaction.core.TransactionType;
import org.junit.Before;
import org.junit.Test;
@@ -54,14 +56,14 @@ public final class ShardingCTLSetBackendHandlerTest {
public void setUp() {
Field schemaContexts = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
schemaContexts.setAccessible(true);
- schemaContexts.set(ProxyContext.getInstance(),
- new StandardSchemaContexts(getSchemaContextMap(), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(getSchemas(),
+ mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
}
- private Map<String, SchemaContext> getSchemaContextMap() {
- Map<String, SchemaContext> result = new HashMap<>(10, 1);
+ private Map<String, ShardingSphereSchema> getSchemas() {
+ Map<String, ShardingSphereSchema> result = new HashMap<>(10, 1);
for (int i = 0; i < 10; i++) {
- result.put(String.format(SCHEMA_PATTERN, i), mock(SchemaContext.class));
+ result.put(String.format(SCHEMA_PATTERN, i), mock(ShardingSphereSchema.class));
}
return result;
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/init/impl/AbstractBootstrapInitializer.java b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/init/impl/AbstractBootstrapInitializer.java
index d2c8285..c3a306b 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/init/impl/AbstractBootstrapInitializer.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/init/impl/AbstractBootstrapInitializer.java
@@ -19,14 +19,14 @@ package org.apache.shardingsphere.proxy.init.impl;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.db.protocol.mysql.constant.MySQLServerInfo;
+import org.apache.shardingsphere.infra.config.datasource.DataSourceParameter;
import org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.SchemaContexts;
import org.apache.shardingsphere.infra.context.schema.SchemaContextsBuilder;
-import org.apache.shardingsphere.infra.config.datasource.DataSourceParameter;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.database.type.DatabaseTypes;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.datasource.factory.JDBCRawBackendDataSourceFactory;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.recognizer.JDBCDriverURLRecognizerEngine;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
@@ -97,10 +97,10 @@ public abstract class AbstractBootstrapInitializer implements BootstrapInitializ
}
private TransactionContexts createTransactionContexts(final SchemaContexts schemaContexts) {
- Map<String, ShardingTransactionManagerEngine> transactionManagerEngines = new HashMap<>(schemaContexts.getSchemaContextMap().size(), 1);
- for (Entry<String, SchemaContext> entry : schemaContexts.getSchemaContextMap().entrySet()) {
+ Map<String, ShardingTransactionManagerEngine> transactionManagerEngines = new HashMap<>(schemaContexts.getSchemas().size(), 1);
+ for (Entry<String, ShardingSphereSchema> entry : schemaContexts.getSchemas().entrySet()) {
ShardingTransactionManagerEngine engine = new ShardingTransactionManagerEngine();
- engine.init(schemaContexts.getDatabaseType(), entry.getValue().getSchema().getDataSources());
+ engine.init(schemaContexts.getDatabaseType(), entry.getValue().getDataSources());
transactionManagerEngines.put(entry.getKey(), engine);
}
return new StandardTransactionContexts(transactionManagerEngines);
diff --git a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/init/impl/GovernanceBootstrapInitializerTest.java b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/init/impl/GovernanceBootstrapInitializerTest.java
index 20e3251..a4abe00 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/init/impl/GovernanceBootstrapInitializerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/init/impl/GovernanceBootstrapInitializerTest.java
@@ -211,8 +211,8 @@ public final class GovernanceBootstrapInitializerTest extends AbstractBootstrapI
assertNotNull(actualSchemaContexts);
assertThat(actualSchemaContexts, instanceOf(GovernanceSchemaContexts.class));
assertThat(actualSchemaContexts.getDatabaseType(), is(schemaContexts.getDatabaseType()));
- assertThat(actualSchemaContexts.getSchemaContextMap(), is(schemaContexts.getSchemaContextMap()));
- assertThat(actualSchemaContexts.getDefaultSchemaContext(), is(schemaContexts.getDefaultSchemaContext()));
+ assertThat(actualSchemaContexts.getSchemas(), is(schemaContexts.getSchemas()));
+ assertThat(actualSchemaContexts.getDefaultSchema(), is(schemaContexts.getDefaultSchema()));
assertThat(actualSchemaContexts.getAuthentication(), is(schemaContexts.getAuthentication()));
assertThat(actualSchemaContexts.getProps(), is(schemaContexts.getProps()));
assertThat(actualSchemaContexts.isCircuitBreak(), is(schemaContexts.isCircuitBreak()));
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/netty/ServerHandlerInitializer.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/netty/ServerHandlerInitializer.java
index d5e02d6..df8637b 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/netty/ServerHandlerInitializer.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/netty/ServerHandlerInitializer.java
@@ -44,6 +44,6 @@ public final class ServerHandlerInitializer extends ChannelInitializer<SocketCha
private DatabaseType getDatabaseType() {
// TODO Consider loading from configuration.
- return ProxyContext.getInstance().getSchemaContexts().getSchemaContextMap().isEmpty() ? new MySQLDatabaseType() : ProxyContext.getInstance().getSchemaContexts().getDatabaseType();
+ return ProxyContext.getInstance().getSchemaContexts().getSchemas().isEmpty() ? new MySQLDatabaseType() : ProxyContext.getInstance().getSchemaContexts().getDatabaseType();
}
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactory.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactory.java
index 5b4fce5..e8cc9e2 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactory.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactory.java
@@ -71,7 +71,7 @@ public final class MySQLCommandExecutorFactory {
case COM_PING:
return new MySQLComPingExecutor();
case COM_STMT_PREPARE:
- return new MySQLComStmtPrepareExecutor((MySQLComStmtPreparePacket) commandPacket, backendConnection);
+ return new MySQLComStmtPrepareExecutor((MySQLComStmtPreparePacket) commandPacket);
case COM_STMT_EXECUTE:
return new MySQLComStmtExecuteExecutor((MySQLComStmtExecutePacket) commandPacket, backendConnection);
case COM_STMT_RESET:
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutor.java
index fdb5f57..9150912 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutor.java
@@ -56,7 +56,7 @@ public final class MySQLComStmtExecuteExecutor implements QueryCommandExecutor {
private int currentSequenceId;
public MySQLComStmtExecuteExecutor(final MySQLComStmtExecutePacket packet, final BackendConnection backendConnection) {
- ShardingSphereSQLParserEngine sqlParserEngine = ProxyContext.getInstance().getSchema(backendConnection.getSchemaName()).getRuntimeContext().getSqlParserEngine();
+ ShardingSphereSQLParserEngine sqlParserEngine = ProxyContext.getInstance().getSchemaContexts().getSqlParserEngine();
SQLStatement sqlStatement = sqlParserEngine.parse(packet.getSql(), true);
databaseCommunicationEngine = DatabaseCommunicationEngineFactory.getInstance().newBinaryProtocolInstance(sqlStatement, packet.getSql(), packet.getParameters(), backendConnection);
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
index 5c9d316..c8aed68 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.proxy.frontend.mysql.command.query.binary.prepare;
+import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.db.protocol.mysql.constant.MySQLColumnType;
import org.apache.shardingsphere.db.protocol.mysql.packet.command.query.MySQLColumnDefinition41Packet;
import org.apache.shardingsphere.db.protocol.mysql.packet.command.query.binary.MySQLBinaryStatementRegistry;
@@ -24,8 +25,6 @@ import org.apache.shardingsphere.db.protocol.mysql.packet.command.query.binary.p
import org.apache.shardingsphere.db.protocol.mysql.packet.command.query.binary.prepare.MySQLComStmtPreparePacket;
import org.apache.shardingsphere.db.protocol.mysql.packet.generic.MySQLEofPacket;
import org.apache.shardingsphere.db.protocol.packet.DatabasePacket;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
-import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.frontend.command.executor.CommandExecutor;
import org.apache.shardingsphere.proxy.frontend.exception.UnsupportedPreparedStatementException;
@@ -38,24 +37,18 @@ import java.util.LinkedList;
/**
* COM_STMT_PREPARE command executor for MySQL.
*/
+@RequiredArgsConstructor
public final class MySQLComStmtPrepareExecutor implements CommandExecutor {
private static final MySQLBinaryStatementRegistry PREPARED_STATEMENT_REGISTRY = MySQLBinaryStatementRegistry.getInstance();
private final MySQLComStmtPreparePacket packet;
- private final SchemaContext schema;
-
private int currentSequenceId;
- public MySQLComStmtPrepareExecutor(final MySQLComStmtPreparePacket packet, final BackendConnection backendConnection) {
- this.packet = packet;
- schema = ProxyContext.getInstance().getSchema(backendConnection.getSchemaName());
- }
-
@Override
public Collection<DatabasePacket<?>> execute() {
- SQLStatement sqlStatement = schema.getRuntimeContext().getSqlParserEngine().parse(packet.getSql(), true);
+ SQLStatement sqlStatement = ProxyContext.getInstance().getSchemaContexts().getSqlParserEngine().parse(packet.getSql(), true);
if (!MySQLComStmtPrepareChecker.isStatementAllowed(sqlStatement)) {
throw new UnsupportedPreparedStatementException();
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/fieldlist/MySQLComFieldListPacketExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/fieldlist/MySQLComFieldListPacketExecutor.java
index 6df970a..9f958e1 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/fieldlist/MySQLComFieldListPacketExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/fieldlist/MySQLComFieldListPacketExecutor.java
@@ -52,7 +52,7 @@ public final class MySQLComFieldListPacketExecutor implements CommandExecutor {
this.packet = packet;
schemaName = backendConnection.getSchemaName();
String sql = String.format(SQL, packet.getTable(), schemaName);
- SQLStatement sqlStatement = ProxyContext.getInstance().getSchema(backendConnection.getSchemaName()).getRuntimeContext().getSqlParserEngine().parse(sql, false);
+ SQLStatement sqlStatement = ProxyContext.getInstance().getSchemaContexts().getSqlParserEngine().parse(sql, false);
databaseCommunicationEngine = DatabaseCommunicationEngineFactory.getInstance().newTextProtocolInstance(sqlStatement, sql, backendConnection);
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
index c28e9b0..c5b65be 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
@@ -28,16 +28,16 @@ import org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.auth.ProxyUser;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.SchemaContexts;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
-import org.apache.shardingsphere.infra.context.schema.runtime.RuntimeContext;
-import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.frontend.connection.ConnectionIdGenerator;
import org.apache.shardingsphere.proxy.frontend.auth.AuthenticationResult;
+import org.apache.shardingsphere.proxy.frontend.connection.ConnectionIdGenerator;
import org.apache.shardingsphere.proxy.frontend.mysql.auth.MySQLAuthenticationEngine;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -165,16 +165,16 @@ public final class MySQLFrontendEngineTest {
}
private SchemaContexts getSchemaContexts(final Authentication authentication) {
- return new StandardSchemaContexts(getSchemaContextMap(), authentication, new ConfigurationProperties(new Properties()), new MySQLDatabaseType());
+ return new StandardSchemaContexts(getSchemas(),
+ mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), authentication, new ConfigurationProperties(new Properties()), new MySQLDatabaseType());
}
- private Map<String, SchemaContext> getSchemaContextMap() {
- Map<String, SchemaContext> result = new HashMap<>(10, 1);
+ private Map<String, ShardingSphereSchema> getSchemas() {
+ Map<String, ShardingSphereSchema> result = new HashMap<>(10, 1);
for (int i = 0; i < 10; i++) {
String name = String.format(SCHEMA, i);
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
- RuntimeContext runtimeContext = mock(RuntimeContext.class);
- result.put(name, new SchemaContext(schema, runtimeContext));
+ result.put(name, schema);
}
return result;
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/auth/MySQLAuthenticationEngineTest.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/auth/MySQLAuthenticationEngineTest.java
index e05c2be..9c1a08f 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/auth/MySQLAuthenticationEngineTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/auth/MySQLAuthenticationEngineTest.java
@@ -29,11 +29,13 @@ import org.apache.shardingsphere.db.protocol.mysql.packet.handshake.MySQLHandsha
import org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.frontend.auth.AuthenticationResultBuilder;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import org.junit.Before;
import org.junit.Test;
@@ -139,9 +141,8 @@ public final class MySQLAuthenticationEngineTest {
private void setSchemas() throws NoSuchFieldException, IllegalAccessException {
Field field = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
field.setAccessible(true);
- field.set(ProxyContext.getInstance(),
- new StandardSchemaContexts(Collections.singletonMap("sharding_db", mock(SchemaContext.class)),
- new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ field.set(ProxyContext.getInstance(), new StandardSchemaContexts(Collections.singletonMap("sharding_db", mock(ShardingSphereSchema.class)),
+ mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
}
private MySQLPacketPayload getPayload(final String username, final String database, final byte[] authResponse) {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/auth/MySQLAuthenticationHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/auth/MySQLAuthenticationHandlerTest.java
index f0d70a9..4821cdf 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/auth/MySQLAuthenticationHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/auth/MySQLAuthenticationHandlerTest.java
@@ -24,13 +24,13 @@ import org.apache.shardingsphere.db.protocol.mysql.packet.handshake.MySQLAuthPlu
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.auth.ProxyUser;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.SchemaContexts;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
-import org.apache.shardingsphere.infra.context.schema.runtime.RuntimeContext;
-import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import org.junit.Before;
import org.junit.Test;
@@ -123,16 +123,16 @@ public final class MySQLAuthenticationHandlerTest {
}
private SchemaContexts getSchemaContexts(final Authentication authentication) {
- return new StandardSchemaContexts(getSchemaContextMap(), authentication, new ConfigurationProperties(new Properties()), new MySQLDatabaseType());
+ return new StandardSchemaContexts(getSchemas(),
+ mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), authentication, new ConfigurationProperties(new Properties()), new MySQLDatabaseType());
}
- private Map<String, SchemaContext> getSchemaContextMap() {
- Map<String, SchemaContext> result = new HashMap<>(10);
+ private Map<String, ShardingSphereSchema> getSchemas() {
+ Map<String, ShardingSphereSchema> result = new HashMap<>(10, 1);
for (int i = 0; i < 10; i++) {
String name = String.format(SCHEMA_PATTERN, i);
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
- RuntimeContext runtimeContext = mock(RuntimeContext.class);
- result.put(name, new SchemaContext(schema, runtimeContext));
+ result.put(name, schema);
}
return result;
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java
index 7bb26f7..f650d26 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java
@@ -28,9 +28,10 @@ import org.apache.shardingsphere.db.protocol.mysql.packet.command.query.text.que
import org.apache.shardingsphere.db.protocol.packet.CommandPacket;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.frontend.mysql.command.admin.initdb.MySQLComInitDbExecutor;
@@ -43,6 +44,7 @@ import org.apache.shardingsphere.proxy.frontend.mysql.command.query.binary.prepa
import org.apache.shardingsphere.proxy.frontend.mysql.command.query.binary.reset.MySQLComStmtResetExecutor;
import org.apache.shardingsphere.proxy.frontend.mysql.command.query.text.fieldlist.MySQLComFieldListPacketExecutor;
import org.apache.shardingsphere.proxy.frontend.mysql.command.query.text.query.MySQLComQueryPacketExecutor;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -71,8 +73,9 @@ public final class MySQLCommandExecutorFactoryTest {
when(backendConnection.getSchemaName()).thenReturn("schema");
Field field = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
field.setAccessible(true);
- Map<String, SchemaContext> schemaContextMap = Collections.singletonMap("schema", mock(SchemaContext.class, RETURNS_DEEP_STUBS));
- field.set(ProxyContext.getInstance(), new StandardSchemaContexts(schemaContextMap, new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ Map<String, ShardingSphereSchema> schemas = Collections.singletonMap("schema", mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS));
+ field.set(ProxyContext.getInstance(), new StandardSchemaContexts(schemas,
+ mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
}
@Test
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
index cc3beac..6032352 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
@@ -20,16 +20,18 @@ package org.apache.shardingsphere.proxy.frontend.mysql.command.query.binary.exec
import org.apache.shardingsphere.db.protocol.mysql.packet.command.query.binary.execute.MySQLComStmtExecutePacket;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
import org.apache.shardingsphere.infra.executor.sql.raw.execute.result.query.QueryHeader;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngine;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.response.query.QueryResponse;
import org.apache.shardingsphere.proxy.backend.response.update.UpdateResponse;
import org.apache.shardingsphere.proxy.frontend.command.executor.ResponseType;
+import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -59,8 +61,9 @@ public final class MySQLComStmtExecuteExecutorTest {
public void setUp() throws ReflectiveOperationException {
Field schemaContexts = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
schemaContexts.setAccessible(true);
- Map<String, SchemaContext> schemaContextMap = Collections.singletonMap("schema", mock(SchemaContext.class, RETURNS_DEEP_STUBS));
- schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(schemaContextMap, new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ Map<String, ShardingSphereSchema> schemas = Collections.singletonMap("schema", mock(ShardingSphereSchema.class, RETURNS_DEEP_STUBS));
+ schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(schemas,
+ mock(ShardingSphereSQLParserEngine.class), mock(ExecutorKernel.class), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
}
@Test
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/binary/bind/PostgreSQLComBindExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/binary/bind/PostgreSQLComBindExecutor.java
index 6a8bce4..ee93d64 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/binary/bind/PostgreSQLComBindExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/binary/bind/PostgreSQLComBindExecutor.java
@@ -29,9 +29,9 @@ import org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.bin
import org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.text.PostgreSQLDataRowPacket;
import org.apache.shardingsphere.db.protocol.postgresql.packet.generic.PostgreSQLCommandCompletePacket;
import org.apache.shardingsphere.db.protocol.postgresql.packet.generic.PostgreSQLErrorResponsePacket;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.executor.sql.QueryResult;
import org.apache.shardingsphere.infra.executor.sql.raw.execute.result.query.QueryHeader;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngine;
import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngineFactory;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
@@ -67,9 +67,9 @@ public final class PostgreSQLComBindExecutor implements QueryCommandExecutor {
public PostgreSQLComBindExecutor(final PostgreSQLComBindPacket packet, final BackendConnection backendConnection) {
this.packet = packet;
- SchemaContext schemaContext = ProxyContext.getInstance().getSchema(backendConnection.getSchemaName());
- if (null != packet.getSql() && null != schemaContext) {
- SQLStatement sqlStatement = schemaContext.getRuntimeContext().getSqlParserEngine().parse(packet.getSql(), true);
+ ShardingSphereSchema schema = ProxyContext.getInstance().getSchema(backendConnection.getSchemaName());
+ if (null != packet.getSql() && null != schema) {
+ SQLStatement sqlStatement = ProxyContext.getInstance().getSchemaContexts().getSqlParserEngine().parse(packet.getSql(), true);
databaseCommunicationEngine =
DatabaseCommunicationEngineFactory.getInstance().newBinaryProtocolInstance(sqlStatement, packet.getSql(), packet.getParameters(), backendConnection);
} else {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/binary/parse/PostgreSQLComParseExecutor.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/binary/parse/PostgreSQLComParseExecutor.java
index d49444e..5053463 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/binary/parse/PostgreSQLComParseExecutor.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/binary/parse/PostgreSQLComParseExecutor.java
@@ -22,7 +22,6 @@ import org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.bin
import org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.binary.ConnectionScopeBinaryStatementRegistry;
import org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.binary.parse.PostgreSQLComParsePacket;
import org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.binary.parse.PostgreSQLParseCompletePacket;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.frontend.command.executor.CommandExecutor;
@@ -38,20 +37,17 @@ public final class PostgreSQLComParseExecutor implements CommandExecutor {
private final PostgreSQLComParsePacket packet;
- private final SchemaContext schema;
-
private final ConnectionScopeBinaryStatementRegistry binaryStatementRegistry;
public PostgreSQLComParseExecutor(final PostgreSQLComParsePacket packet, final BackendConnection backendConnection) {
this.packet = packet;
- schema = ProxyContext.getInstance().getSchema(backendConnection.getSchemaName());
binaryStatementRegistry = BinaryStatementRegistry.getInstance().get(backendConnection.getConnectionId());
}
@Override
public Collection<DatabasePacket<?>> execute() {
if (!packet.getSql().isEmpty()) {
- SQLStatement sqlStatement = schema.getRuntimeContext().getSqlParserEngine().parse(packet.getSql(), true);
+ SQLStatement sqlStatement = ProxyContext.getInstance().getSchemaContexts().getSqlParserEngine().parse(packet.getSql(), true);
binaryStatementRegistry.register(packet.getStatementId(), packet.getSql(), sqlStatement.getParameterCount(), packet.getBinaryStatementParameterTypes());
}
return Collections.singletonList(new PostgreSQLParseCompletePacket());
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/binary/parse/PostgreSQLComParseExecutorTest.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/binary/parse/PostgreSQLComParseExecutorTest.java
index f6c3935..790e141 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/binary/parse/PostgreSQLComParseExecutorTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/binary/parse/PostgreSQLComParseExecutorTest.java
@@ -22,11 +22,10 @@ import org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.bin
import org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.binary.parse.PostgreSQLParseCompletePacket;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.context.schema.SchemaContext;
import org.apache.shardingsphere.infra.context.schema.impl.StandardSchemaContexts;
-import org.apache.shardingsphere.infra.context.schema.runtime.RuntimeContext;
-import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
+import org.apache.shardingsphere.infra.schema.ShardingSphereSchema;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.rdl.parser.engine.ShardingSphereSQLParserEngine;
@@ -60,33 +59,32 @@ public final class PostgreSQLComParseExecutorTest {
public void assertNewInstance() throws NoSuchFieldException, IllegalAccessException {
when(parsePacket.getSql()).thenReturn("sql");
when(parsePacket.getStatementId()).thenReturn("2");
- when(backendConnection.getSchemaName()).thenReturn("schema");
when(backendConnection.getConnectionId()).thenReturn(1);
Field schemaContexts = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
schemaContexts.setAccessible(true);
- schemaContexts.set(ProxyContext.getInstance(),
- new StandardSchemaContexts(getSchemaContextMap(), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ schemaContexts.set(ProxyContext.getInstance(), new StandardSchemaContexts(getSchemas(),
+ mockSQLParserEngine(), mock(ExecutorKernel.class), new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
BinaryStatementRegistry.getInstance().register(1);
PostgreSQLComParseExecutor actual = new PostgreSQLComParseExecutor(parsePacket, backendConnection);
assertThat(actual.execute().iterator().next(), instanceOf(PostgreSQLParseCompletePacket.class));
}
- private Map<String, SchemaContext> getSchemaContextMap() {
- RuntimeContext runtimeContext = mock(RuntimeContext.class);
+ private Map<String, ShardingSphereSchema> getSchemas() {
ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
- ShardingSphereSQLParserEngine parserEngine = mock(ShardingSphereSQLParserEngine.class);
+ return Collections.singletonMap("schema", schema);
+ }
+
+ private ShardingSphereSQLParserEngine mockSQLParserEngine() {
+ ShardingSphereSQLParserEngine result = mock(ShardingSphereSQLParserEngine.class);
SQLStatement sqlStatement = mock(SQLStatement.class);
- when(runtimeContext.getSqlParserEngine()).thenReturn(parserEngine);
- when(parserEngine.parse(eq("sql"), eq(true))).thenReturn(sqlStatement);
+ when(result.parse(eq("sql"), eq(true))).thenReturn(sqlStatement);
when(sqlStatement.getParameterCount()).thenReturn(1);
- SchemaContext schemaContext = new SchemaContext(schema, runtimeContext);
- return Collections.singletonMap("schema", schemaContext);
+ return result;
}
@Test
public void assertGetSqlWithNull() {
when(parsePacket.getSql()).thenReturn("");
- when(backendConnection.getSchemaName()).thenReturn("schemaName");
when(backendConnection.getConnectionId()).thenReturn(1);
PostgreSQLComParseExecutor actual = new PostgreSQLComParseExecutor(parsePacket, backendConnection);
assertThat(actual.execute().iterator().next(), instanceOf(PostgreSQLParseCompletePacket.class));