You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by wu...@apache.org on 2021/10/07 10:16:55 UTC
[shardingsphere] branch master updated: Encapsule
ShardingSphereConnection.cachedConnections as inner field (#12917)
This is an automated email from the ASF dual-hosted git repository.
wuweijie 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 db80066 Encapsule ShardingSphereConnection.cachedConnections as inner field (#12917)
db80066 is described below
commit db80066f56d609329c4fc7a51f032520277a94c4
Author: Liang Zhang <te...@163.com>
AuthorDate: Thu Oct 7 18:16:09 2021 +0800
Encapsule ShardingSphereConnection.cachedConnections as inner field (#12917)
* Rename ShardingSphereConnection.schema
* Fix test case
* Fix test case
* Move getRandomPhysicalDataSourceName to ShardingSphereConnection
* Encapsule ShardingSphereConnection.cachedConnections as inner field
---
.../driver/executor/DriverExecutor.java | 4 +-
.../jdbc/adapter/AbstractConnectionAdapter.java | 5 --
.../jdbc/adapter/AbstractResultSetAdapter.java | 2 +-
.../core/connection/ShardingSphereConnection.java | 53 ++++++++++++++--------
.../metadata/ShardingSphereDatabaseMetaData.java | 27 +++--------
.../statement/ShardingSpherePreparedStatement.java | 38 ++++++++--------
.../core/statement/ShardingSphereStatement.java | 36 +++++++--------
.../driver/jdbc/adapter/ConnectionAdapterTest.java | 8 +---
.../jdbc/adapter/PreparedStatementAdapterTest.java | 4 +-
.../connection/ShardingSphereConnectionTest.java | 43 +++++++-----------
.../ShardingSphereDatabaseMetaDataTest.java | 9 ++--
.../UnsupportedOperationPreparedStatementTest.java | 4 +-
12 files changed, 106 insertions(+), 127 deletions(-)
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/DriverExecutor.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/DriverExecutor.java
index 170c788..a3c4411 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/DriverExecutor.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/DriverExecutor.java
@@ -42,9 +42,9 @@ public final class DriverExecutor implements AutoCloseable {
public DriverExecutor(final ShardingSphereConnection connection) {
MetaDataContexts metaDataContexts = connection.getContextManager().getMetaDataContexts();
JDBCExecutor jdbcExecutor = new JDBCExecutor(metaDataContexts.getExecutorEngine(), connection.isHoldTransaction());
- regularExecutor = new DriverJDBCExecutor(connection.getSchemaName(), metaDataContexts, jdbcExecutor);
+ regularExecutor = new DriverJDBCExecutor(connection.getSchema(), metaDataContexts, jdbcExecutor);
rawExecutor = new RawExecutor(metaDataContexts.getExecutorEngine(), connection.isHoldTransaction(), metaDataContexts.getProps());
- federationExecutor = FederationExecutorFactory.newInstance(connection.getSchemaName(), metaDataContexts.getOptimizerContext(), metaDataContexts.getProps(), jdbcExecutor);
+ federationExecutor = FederationExecutorFactory.newInstance(connection.getSchema(), metaDataContexts.getOptimizerContext(), metaDataContexts.getProps(), jdbcExecutor);
}
/**
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractConnectionAdapter.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractConnectionAdapter.java
index 6ecd5e3..23a44bd 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractConnectionAdapter.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractConnectionAdapter.java
@@ -55,11 +55,6 @@ public abstract class AbstractConnectionAdapter extends AbstractUnsupportedOpera
}
@Override
- public final String getSchema() {
- return null;
- }
-
- @Override
public final void setSchema(final String schema) {
}
}
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 fd429fc..df81c4e 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
@@ -68,7 +68,7 @@ public abstract class AbstractResultSetAdapter extends AbstractUnsupportedOperat
private ShardingSphereMetaData getShardingSphereMetaData() {
ShardingSphereConnection connection = statement instanceof ShardingSpherePreparedStatement
? ((ShardingSpherePreparedStatement) statement).getConnection() : ((ShardingSphereStatement) statement).getConnection();
- return connection.getContextManager().getMetaDataContexts().getMetaData(connection.getSchemaName());
+ return connection.getContextManager().getMetaDataContexts().getMetaData(connection.getSchema());
}
@Override
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
index 114ec38..5f884d8 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.java
@@ -36,6 +36,7 @@ import org.apache.shardingsphere.transaction.TransactionHolder;
import org.apache.shardingsphere.transaction.rule.TransactionRule;
import javax.sql.DataSource;
+import java.security.SecureRandom;
import java.sql.Array;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
@@ -47,6 +48,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
+import java.util.Random;
/**
* ShardingSphere Connection.
@@ -54,18 +56,19 @@ import java.util.Optional;
public final class ShardingSphereConnection extends AbstractConnectionAdapter implements ExecutorJDBCManager {
@Getter
- private final String schemaName;
+ private final String schema;
@Getter
private final ContextManager contextManager;
- private final ConnectionTransaction connectionTransaction;
-
- @Getter
private final Multimap<String, Connection> cachedConnections = LinkedHashMultimap.create();
+ private final ConnectionTransaction connectionTransaction;
+
private final ForceExecuteTemplate<Connection> forceExecuteTemplate = new ForceExecuteTemplate<>();
+ private final Random random = new SecureRandom();
+
private boolean autoCommit = true;
private boolean readOnly;
@@ -74,10 +77,10 @@ public final class ShardingSphereConnection extends AbstractConnectionAdapter im
private volatile boolean closed;
- public ShardingSphereConnection(final String schemaName, final ContextManager contextManager) {
- this.schemaName = schemaName;
+ public ShardingSphereConnection(final String schema, final ContextManager contextManager) {
+ this.schema = schema;
this.contextManager = contextManager;
- connectionTransaction = createConnectionTransaction(schemaName, contextManager);
+ connectionTransaction = createConnectionTransaction(schema, contextManager);
}
private ConnectionTransaction createConnectionTransaction(final String schemaName, final ContextManager contextManager) {
@@ -87,6 +90,16 @@ public final class ShardingSphereConnection extends AbstractConnectionAdapter im
}
/**
+ * Get random physical data source name.
+ *
+ * @return random physical data source name
+ */
+ public String getRandomPhysicalDataSourceName() {
+ Collection<String> datasourceNames = cachedConnections.isEmpty() ? contextManager.getDataSourceMap(schema).keySet() : cachedConnections.keySet();
+ return new ArrayList<>(datasourceNames).get(random.nextInt(datasourceNames.size()));
+ }
+
+ /**
* Get connection.
*
* @param dataSourceName data source name
@@ -99,11 +112,11 @@ public final class ShardingSphereConnection extends AbstractConnectionAdapter im
@Override
public List<Connection> getConnections(final String dataSourceName, final int connectionSize, final ConnectionMode connectionMode) throws SQLException {
- DataSource dataSource = contextManager.getDataSourceMap(schemaName).get(dataSourceName);
+ DataSource dataSource = contextManager.getDataSourceMap(schema).get(dataSourceName);
Preconditions.checkState(null != dataSource, "Missing the data source name: '%s'", dataSourceName);
Collection<Connection> connections;
- synchronized (getCachedConnections()) {
- connections = getCachedConnections().get(dataSourceName);
+ synchronized (cachedConnections) {
+ connections = cachedConnections.get(dataSourceName);
}
List<Connection> result;
if (connections.size() >= connectionSize) {
@@ -113,13 +126,13 @@ public final class ShardingSphereConnection extends AbstractConnectionAdapter im
result.addAll(connections);
List<Connection> newConnections = createConnections(dataSourceName, dataSource, connectionSize - connections.size(), connectionMode);
result.addAll(newConnections);
- synchronized (getCachedConnections()) {
- getCachedConnections().putAll(dataSourceName, newConnections);
+ synchronized (cachedConnections) {
+ cachedConnections.putAll(dataSourceName, newConnections);
}
} else {
result = new ArrayList<>(createConnections(dataSourceName, dataSource, connectionSize, connectionMode));
- synchronized (getCachedConnections()) {
- getCachedConnections().putAll(dataSourceName, result);
+ synchronized (cachedConnections) {
+ cachedConnections.putAll(dataSourceName, result);
}
}
return result;
@@ -252,7 +265,7 @@ public final class ShardingSphereConnection extends AbstractConnectionAdapter im
private void processLocalTransaction(final boolean autoCommit) throws SQLException {
this.autoCommit = autoCommit;
recordMethodInvocation(Connection.class, "setAutoCommit", new Class[]{boolean.class}, new Object[]{autoCommit});
- forceExecuteTemplate.execute(getCachedConnections().values(), connection -> connection.setAutoCommit(autoCommit));
+ forceExecuteTemplate.execute(cachedConnections.values(), connection -> connection.setAutoCommit(autoCommit));
if (!autoCommit) {
TransactionHolder.setInTransaction();
}
@@ -274,15 +287,15 @@ public final class ShardingSphereConnection extends AbstractConnectionAdapter im
}
private void closeCachedConnections() throws SQLException {
- forceExecuteTemplate.execute(getCachedConnections().values(), Connection::close);
- getCachedConnections().clear();
+ forceExecuteTemplate.execute(cachedConnections.values(), Connection::close);
+ cachedConnections.clear();
}
@Override
public void commit() throws SQLException {
try {
if (connectionTransaction.isLocalTransaction()) {
- forceExecuteTemplate.execute(getCachedConnections().values(), Connection::commit);
+ forceExecuteTemplate.execute(cachedConnections.values(), Connection::commit);
} else {
connectionTransaction.commit();
}
@@ -295,7 +308,7 @@ public final class ShardingSphereConnection extends AbstractConnectionAdapter im
public void rollback() throws SQLException {
try {
if (connectionTransaction.isLocalTransaction()) {
- forceExecuteTemplate.execute(getCachedConnections().values(), Connection::rollback);
+ forceExecuteTemplate.execute(cachedConnections.values(), Connection::rollback);
} else {
connectionTransaction.rollback();
}
@@ -306,7 +319,7 @@ public final class ShardingSphereConnection extends AbstractConnectionAdapter im
@Override
public Array createArrayOf(final String typeName, final Object[] elements) throws SQLException {
- String dataSourceName = contextManager.getDataSourceMap(schemaName).keySet().iterator().next();
+ String dataSourceName = contextManager.getDataSourceMap(schema).keySet().iterator().next();
Connection connection = getConnection(dataSourceName);
return connection.createArrayOf(typeName, elements);
}
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 02b2645..2d4c39c 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
@@ -26,15 +26,12 @@ import org.apache.shardingsphere.infra.metadata.resource.DataSourcesMetaData;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.infra.rule.identifier.type.DataNodeContainedRule;
-import java.security.SecureRandom;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Optional;
-import java.util.Random;
/**
* ShardingSphere database meta data.
@@ -45,22 +42,17 @@ public final class ShardingSphereDatabaseMetaData extends AdaptedDatabaseMetaDat
private final Collection<ShardingSphereRule> rules;
- private final Collection<String> datasourceNames;
-
private final DataSourcesMetaData dataSourcesMetaData;
- private final Random random = new SecureRandom();
-
- private String currentDataSourceName;
+ private String currentPhysicalDataSourceName;
private DatabaseMetaData currentDatabaseMetaData;
public ShardingSphereDatabaseMetaData(final ShardingSphereConnection connection) {
- super(connection.getContextManager().getMetaDataContexts().getMetaData(connection.getSchemaName()).getResource().getCachedDatabaseMetaData());
+ super(connection.getContextManager().getMetaDataContexts().getMetaData(connection.getSchema()).getResource().getCachedDatabaseMetaData());
this.connection = connection;
- rules = connection.getContextManager().getMetaDataContexts().getMetaData(connection.getSchemaName()).getRuleMetaData().getRules();
- datasourceNames = connection.getContextManager().getDataSourceMap(connection.getSchemaName()).keySet();
- dataSourcesMetaData = connection.getContextManager().getMetaDataContexts().getMetaData(connection.getSchemaName()).getResource().getDataSourcesMetaData();
+ rules = connection.getContextManager().getMetaDataContexts().getMetaData(connection.getSchema()).getRuleMetaData().getRules();
+ dataSourcesMetaData = connection.getContextManager().getMetaDataContexts().getMetaData(connection.getSchema()).getResource().getDataSourcesMetaData();
}
@Override
@@ -238,15 +230,10 @@ public final class ShardingSphereDatabaseMetaData extends AdaptedDatabaseMetaDat
}
private String getDataSourceName() {
- if (null == currentDataSourceName) {
- currentDataSourceName = getRandomDataSourceName();
+ if (null == currentPhysicalDataSourceName) {
+ currentPhysicalDataSourceName = connection.getRandomPhysicalDataSourceName();
}
- return currentDataSourceName;
- }
-
- private String getRandomDataSourceName() {
- Collection<String> datasourceNames = connection.getCachedConnections().isEmpty() ? this.datasourceNames : connection.getCachedConnections().keySet();
- return new ArrayList<>(datasourceNames).get(random.nextInt(datasourceNames.size()));
+ return currentPhysicalDataSourceName;
}
private DatabaseMetaData getDatabaseMetaData() throws SQLException {
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 195b60b..93820c4 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
@@ -153,15 +153,15 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
statements = new ArrayList<>();
parameterSets = new ArrayList<>();
ShardingSphereSQLParserEngine sqlParserEngine = new ShardingSphereSQLParserEngine(
- DatabaseTypeRegistry.getTrunkDatabaseTypeName(metaDataContexts.getMetaData(connection.getSchemaName()).getResource().getDatabaseType()), metaDataContexts.getProps());
+ DatabaseTypeRegistry.getTrunkDatabaseTypeName(metaDataContexts.getMetaData(connection.getSchema()).getResource().getDatabaseType()), metaDataContexts.getProps());
sqlStatement = sqlParserEngine.parse(sql, true);
parameterMetaData = new ShardingSphereParameterMetaData(sqlStatement);
statementOption = returnGeneratedKeys ? new StatementOption(true) : new StatementOption(resultSetType, resultSetConcurrency, resultSetHoldability);
executor = new DriverExecutor(connection);
JDBCExecutor jdbcExecutor = new JDBCExecutor(metaDataContexts.getExecutorEngine(), connection.isHoldTransaction());
- batchPreparedStatementExecutor = new BatchPreparedStatementExecutor(metaDataContexts, jdbcExecutor, connection.getSchemaName());
+ batchPreparedStatementExecutor = new BatchPreparedStatementExecutor(metaDataContexts, jdbcExecutor, connection.getSchema());
kernelProcessor = new KernelProcessor();
- statementsCacheable = isStatementsCacheable(metaDataContexts.getMetaData(connection.getSchemaName()).getRuleMetaData().getConfigurations());
+ statementsCacheable = isStatementsCacheable(metaDataContexts.getMetaData(connection.getSchema()).getRuleMetaData().getConfigurations());
}
private boolean isStatementsCacheable(final Collection<RuleConfiguration> configurations) {
@@ -200,7 +200,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
}
private List<QueryResult> executeQuery0() throws SQLException {
- if (metaDataContexts.getMetaData(connection.getSchemaName()).getRuleMetaData().getRules().stream().anyMatch(each -> each instanceof RawExecutionRule)) {
+ if (metaDataContexts.getMetaData(connection.getSchema()).getRuleMetaData().getRules().stream().anyMatch(each -> each instanceof RawExecutionRule)) {
return executor.getRawExecutor().execute(createRawExecutionGroupContext(), executionContext.getLogicSQL(),
new RawSQLExecutorCallback()).stream().map(each -> (QueryResult) each).collect(Collectors.toList());
}
@@ -210,7 +210,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext = createExecutionGroupContext();
cacheStatements(executionGroupContext.getInputGroups());
return executor.getRegularExecutor().executeQuery(executionGroupContext, executionContext.getLogicSQL(),
- new PreparedStatementExecuteQueryCallback(metaDataContexts.getMetaData(connection.getSchemaName()).getResource().getDatabaseType(), sqlStatement,
+ new PreparedStatementExecuteQueryCallback(metaDataContexts.getMetaData(connection.getSchema()).getResource().getDatabaseType(), sqlStatement,
SQLExecutorExceptionHandler.isExceptionThrown()));
}
@@ -218,7 +218,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
if (executionContext.getExecutionUnits().isEmpty()) {
return Collections.emptyList();
}
- PreparedStatementExecuteQueryCallback callback = new PreparedStatementExecuteQueryCallback(metaDataContexts.getMetaData(connection.getSchemaName()).getResource().getDatabaseType(),
+ PreparedStatementExecuteQueryCallback callback = new PreparedStatementExecuteQueryCallback(metaDataContexts.getMetaData(connection.getSchema()).getResource().getDatabaseType(),
sqlStatement, SQLExecutorExceptionHandler.isExceptionThrown());
return executor.getFederationExecutor().executeQuery(createDriverExecutionPrepareEngine(), callback, executionContext);
}
@@ -226,7 +226,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
private DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> createDriverExecutionPrepareEngine() {
int maxConnectionsSizePerQuery = metaDataContexts.getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
return new DriverExecutionPrepareEngine<>(JDBCDriverType.PREPARED_STATEMENT, maxConnectionsSizePerQuery, connection,
- statementOption, metaDataContexts.getMetaData(connection.getSchemaName()).getRuleMetaData().getRules());
+ statementOption, metaDataContexts.getMetaData(connection.getSchema()).getRuleMetaData().getRules());
}
@Override
@@ -238,7 +238,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
}
clearPrevious();
executionContext = createExecutionContext();
- if (metaDataContexts.getMetaData(connection.getSchemaName()).getRuleMetaData().getRules().stream().anyMatch(each -> each instanceof RawExecutionRule)) {
+ if (metaDataContexts.getMetaData(connection.getSchema()).getRuleMetaData().getRules().stream().anyMatch(each -> each instanceof RawExecutionRule)) {
Collection<ExecuteResult> executeResults = executor.getRawExecutor().execute(createRawExecutionGroupContext(), executionContext.getLogicSQL(), new RawSQLExecutorCallback());
return accumulate(executeResults);
}
@@ -261,7 +261,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
private JDBCExecutorCallback<Integer> createExecuteUpdateCallback() {
boolean isExceptionThrown = SQLExecutorExceptionHandler.isExceptionThrown();
- return new JDBCExecutorCallback<Integer>(metaDataContexts.getMetaData(connection.getSchemaName()).getResource().getDatabaseType(), sqlStatement, isExceptionThrown) {
+ return new JDBCExecutorCallback<Integer>(metaDataContexts.getMetaData(connection.getSchema()).getResource().getDatabaseType(), sqlStatement, isExceptionThrown) {
@Override
protected Integer executeSQL(final String sql, final Statement statement, final ConnectionMode connectionMode) throws SQLException {
@@ -284,7 +284,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
}
clearPrevious();
executionContext = createExecutionContext();
- if (metaDataContexts.getMetaData(connection.getSchemaName()).getRuleMetaData().getRules().stream().anyMatch(each -> each instanceof RawExecutionRule)) {
+ if (metaDataContexts.getMetaData(connection.getSchema()).getRuleMetaData().getRules().stream().anyMatch(each -> each instanceof RawExecutionRule)) {
// TODO process getStatement
Collection<ExecuteResult> executeResults = executor.getRawExecutor().execute(createRawExecutionGroupContext(), executionContext.getLogicSQL(), new RawSQLExecutorCallback());
return executeResults.iterator().next() instanceof QueryResult;
@@ -304,7 +304,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
private ExecutionGroupContext<RawSQLExecutionUnit> createRawExecutionGroupContext() throws SQLException {
int maxConnectionsSizePerQuery = metaDataContexts.getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
- return new RawExecutionPrepareEngine(maxConnectionsSizePerQuery, metaDataContexts.getMetaData(connection.getSchemaName()).getRuleMetaData().getRules())
+ return new RawExecutionPrepareEngine(maxConnectionsSizePerQuery, metaDataContexts.getMetaData(connection.getSchema()).getRuleMetaData().getRules())
.prepare(executionContext.getRouteContext(), executionContext.getExecutionUnits());
}
@@ -315,7 +315,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
private JDBCExecutorCallback<Boolean> createExecuteCallback() {
boolean isExceptionThrown = SQLExecutorExceptionHandler.isExceptionThrown();
- return new JDBCExecutorCallback<Boolean>(metaDataContexts.getMetaData(connection.getSchemaName()).getResource().getDatabaseType(), sqlStatement, isExceptionThrown) {
+ return new JDBCExecutorCallback<Boolean>(metaDataContexts.getMetaData(connection.getSchema()).getResource().getDatabaseType(), sqlStatement, isExceptionThrown) {
@Override
protected Boolean executeSQL(final String sql, final Statement statement, final ConnectionMode connectionMode) throws SQLException {
@@ -374,21 +374,21 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
private ExecutionContext createExecutionContext() {
LogicSQL logicSQL = createLogicSQL();
SQLCheckEngine.check(logicSQL.getSqlStatementContext().getSqlStatement(), logicSQL.getParameters(),
- metaDataContexts.getMetaData(connection.getSchemaName()).getRuleMetaData().getRules(), connection.getSchemaName(), metaDataContexts.getMetaDataMap(), null);
- ExecutionContext result = kernelProcessor.generateExecutionContext(logicSQL, metaDataContexts.getMetaData(connection.getSchemaName()), metaDataContexts.getProps());
+ metaDataContexts.getMetaData(connection.getSchema()).getRuleMetaData().getRules(), connection.getSchema(), metaDataContexts.getMetaDataMap(), null);
+ ExecutionContext result = kernelProcessor.generateExecutionContext(logicSQL, metaDataContexts.getMetaData(connection.getSchema()), metaDataContexts.getProps());
findGeneratedKey(result).ifPresent(generatedKey -> generatedValues.addAll(generatedKey.getGeneratedValues()));
return result;
}
private LogicSQL createLogicSQL() {
List<Object> parameters = new ArrayList<>(getParameters());
- SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(metaDataContexts.getMetaDataMap(), parameters, sqlStatement, connection.getSchemaName());
+ SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(metaDataContexts.getMetaDataMap(), parameters, sqlStatement, connection.getSchema());
return new LogicSQL(sqlStatementContext, sql, parameters);
}
private MergedResult mergeQuery(final List<QueryResult> queryResults) throws SQLException {
- ShardingSphereMetaData metaData = metaDataContexts.getMetaData(connection.getSchemaName());
- MergeEngine mergeEngine = new MergeEngine(connection.getSchemaName(), metaData.getResource().getDatabaseType(), metaData.getSchema(),
+ ShardingSphereMetaData metaData = metaDataContexts.getMetaData(connection.getSchema());
+ MergeEngine mergeEngine = new MergeEngine(connection.getSchema(), metaData.getResource().getDatabaseType(), metaData.getSchema(),
metaDataContexts.getProps(), metaData.getRuleMetaData().getRules());
return mergeEngine.merge(queryResults, executionContext.getSqlStatementContext());
}
@@ -464,7 +464,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
private void initBatchPreparedStatementExecutor() throws SQLException {
DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> prepareEngine = new DriverExecutionPrepareEngine<>(
JDBCDriverType.PREPARED_STATEMENT, metaDataContexts.getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY),
- connection, statementOption, metaDataContexts.getMetaData(connection.getSchemaName()).getRuleMetaData().getRules());
+ connection, statementOption, metaDataContexts.getMetaData(connection.getSchema()).getRuleMetaData().getRules());
batchPreparedStatementExecutor.init(prepareEngine.prepare(executionContext.getRouteContext(),
new ArrayList<>(batchPreparedStatementExecutor.getBatchExecutionUnits()).stream().map(BatchExecutionUnit::getExecutionUnit).collect(Collectors.toList())));
setBatchParametersForStatements();
@@ -506,7 +506,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
@Override
public boolean isAccumulate() {
- return metaDataContexts.getMetaData(connection.getSchemaName()).getRuleMetaData().getRules().stream().anyMatch(
+ return metaDataContexts.getMetaData(connection.getSchema()).getRuleMetaData().getRules().stream().anyMatch(
each -> each instanceof DataNodeContainedRule && ((DataNodeContainedRule) 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 62a694d..299a6aa 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
@@ -149,7 +149,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
}
private List<QueryResult> executeQuery0() throws SQLException {
- if (metaDataContexts.getMetaData(connection.getSchemaName()).getRuleMetaData().getRules().stream().anyMatch(each -> each instanceof RawExecutionRule)) {
+ if (metaDataContexts.getMetaData(connection.getSchema()).getRuleMetaData().getRules().stream().anyMatch(each -> each instanceof RawExecutionRule)) {
return executor.getRawExecutor().execute(createRawExecutionContext(), executionContext.getLogicSQL(),
new RawSQLExecutorCallback()).stream().map(each -> (QueryResult) each).collect(Collectors.toList());
}
@@ -158,7 +158,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
}
ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext = createExecutionContext();
cacheStatements(executionGroupContext.getInputGroups());
- StatementExecuteQueryCallback callback = new StatementExecuteQueryCallback(metaDataContexts.getMetaData(connection.getSchemaName()).getResource().getDatabaseType(),
+ StatementExecuteQueryCallback callback = new StatementExecuteQueryCallback(metaDataContexts.getMetaData(connection.getSchema()).getResource().getDatabaseType(),
executionContext.getSqlStatementContext().getSqlStatement(), SQLExecutorExceptionHandler.isExceptionThrown());
return executor.getRegularExecutor().executeQuery(executionGroupContext, executionContext.getLogicSQL(), callback);
}
@@ -167,7 +167,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
if (executionContext.getExecutionUnits().isEmpty()) {
return Collections.emptyList();
}
- StatementExecuteQueryCallback callback = new StatementExecuteQueryCallback(metaDataContexts.getMetaData(connection.getSchemaName()).getResource().getDatabaseType(),
+ StatementExecuteQueryCallback callback = new StatementExecuteQueryCallback(metaDataContexts.getMetaData(connection.getSchema()).getResource().getDatabaseType(),
executionContext.getSqlStatementContext().getSqlStatement(), SQLExecutorExceptionHandler.isExceptionThrown());
return executor.getFederationExecutor().executeQuery(createDriverExecutionPrepareEngine(), callback, executionContext);
}
@@ -175,14 +175,14 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
private DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> createDriverExecutionPrepareEngine() {
int maxConnectionsSizePerQuery = metaDataContexts.getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
return new DriverExecutionPrepareEngine<>(JDBCDriverType.STATEMENT, maxConnectionsSizePerQuery, connection,
- statementOption, metaDataContexts.getMetaData(connection.getSchemaName()).getRuleMetaData().getRules());
+ statementOption, metaDataContexts.getMetaData(connection.getSchema()).getRuleMetaData().getRules());
}
@Override
public int executeUpdate(final String sql) throws SQLException {
try {
executionContext = createExecutionContext(sql);
- if (metaDataContexts.getMetaData(connection.getSchemaName()).getRuleMetaData().getRules().stream().anyMatch(each -> each instanceof RawExecutionRule)) {
+ if (metaDataContexts.getMetaData(connection.getSchema()).getRuleMetaData().getRules().stream().anyMatch(each -> each instanceof RawExecutionRule)) {
return accumulate(executor.getRawExecutor().execute(createRawExecutionContext(), executionContext.getLogicSQL(), new RawSQLExecutorCallback()));
}
ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext = createExecutionContext();
@@ -201,7 +201,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
}
try {
executionContext = createExecutionContext(sql);
- if (metaDataContexts.getMetaData(connection.getSchemaName()).getRuleMetaData().getRules().stream().anyMatch(each -> each instanceof RawExecutionRule)) {
+ if (metaDataContexts.getMetaData(connection.getSchema()).getRuleMetaData().getRules().stream().anyMatch(each -> each instanceof RawExecutionRule)) {
return accumulate(executor.getRawExecutor().execute(createRawExecutionContext(), executionContext.getLogicSQL(), new RawSQLExecutorCallback()));
}
ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext = createExecutionContext();
@@ -218,7 +218,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
returnGeneratedKeys = true;
try {
executionContext = createExecutionContext(sql);
- if (metaDataContexts.getMetaData(connection.getSchemaName()).getRuleMetaData().getRules().stream().anyMatch(each -> each instanceof RawExecutionRule)) {
+ if (metaDataContexts.getMetaData(connection.getSchema()).getRuleMetaData().getRules().stream().anyMatch(each -> each instanceof RawExecutionRule)) {
return accumulate(executor.getRawExecutor().execute(createRawExecutionContext(), executionContext.getLogicSQL(), new RawSQLExecutorCallback()));
}
ExecutionGroupContext<JDBCExecutionUnit> executionGroups = createExecutionContext();
@@ -235,7 +235,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
returnGeneratedKeys = true;
try {
executionContext = createExecutionContext(sql);
- if (metaDataContexts.getMetaData(connection.getSchemaName()).getRuleMetaData().getRules().stream().anyMatch(each -> each instanceof RawExecutionRule)) {
+ if (metaDataContexts.getMetaData(connection.getSchema()).getRuleMetaData().getRules().stream().anyMatch(each -> each instanceof RawExecutionRule)) {
return accumulate(executor.getRawExecutor().execute(createRawExecutionContext(), executionContext.getLogicSQL(), new RawSQLExecutorCallback()));
}
ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext = createExecutionContext();
@@ -251,7 +251,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
final SQLStatementContext<?> sqlStatementContext, final Collection<RouteUnit> routeUnits) throws SQLException {
boolean isExceptionThrown = SQLExecutorExceptionHandler.isExceptionThrown();
JDBCExecutorCallback<Integer> callback = new JDBCExecutorCallback<Integer>(
- metaDataContexts.getMetaData(connection.getSchemaName()).getResource().getDatabaseType(), sqlStatementContext.getSqlStatement(), isExceptionThrown) {
+ metaDataContexts.getMetaData(connection.getSchema()).getResource().getDatabaseType(), sqlStatementContext.getSqlStatement(), isExceptionThrown) {
@Override
protected Integer executeSQL(final String sql, final Statement statement, final ConnectionMode connectionMode) throws SQLException {
@@ -303,7 +303,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
final SQLStatement sqlStatement, final Collection<RouteUnit> routeUnits) throws SQLException {
boolean isExceptionThrown = SQLExecutorExceptionHandler.isExceptionThrown();
JDBCExecutorCallback<Boolean> jdbcExecutorCallback = new JDBCExecutorCallback<Boolean>(
- metaDataContexts.getMetaData(connection.getSchemaName()).getResource().getDatabaseType(), sqlStatement, isExceptionThrown) {
+ metaDataContexts.getMetaData(connection.getSchema()).getResource().getDatabaseType(), sqlStatement, isExceptionThrown) {
@Override
protected Boolean executeSQL(final String sql, final Statement statement, final ConnectionMode connectionMode) throws SQLException {
@@ -321,7 +321,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
private boolean execute0(final String sql, final ExecuteCallback callback) throws SQLException {
try {
executionContext = createExecutionContext(sql);
- if (metaDataContexts.getMetaData(connection.getSchemaName()).getRuleMetaData().getRules().stream().anyMatch(each -> each instanceof RawExecutionRule)) {
+ if (metaDataContexts.getMetaData(connection.getSchema()).getRuleMetaData().getRules().stream().anyMatch(each -> each instanceof RawExecutionRule)) {
// TODO process getStatement
Collection<ExecuteResult> results = executor.getRawExecutor().execute(createRawExecutionContext(), executionContext.getLogicSQL(), new RawSQLExecutorCallback());
return results.iterator().next() instanceof QueryResult;
@@ -347,10 +347,10 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
private LogicSQL createLogicSQL(final String sql) {
ShardingSphereSQLParserEngine sqlParserEngine = new ShardingSphereSQLParserEngine(
- DatabaseTypeRegistry.getTrunkDatabaseTypeName(metaDataContexts.getMetaData(connection.getSchemaName()).getResource().getDatabaseType()), metaDataContexts.getProps());
+ DatabaseTypeRegistry.getTrunkDatabaseTypeName(metaDataContexts.getMetaData(connection.getSchema()).getResource().getDatabaseType()), metaDataContexts.getProps());
SQLStatement sqlStatement = sqlParserEngine.parse(sql, false);
SQLStatementContext<?> sqlStatementContext = SQLStatementContextFactory.newInstance(metaDataContexts.getMetaDataMap(), Collections.emptyList(), sqlStatement,
- connection.getSchemaName());
+ connection.getSchema());
return new LogicSQL(sqlStatementContext, sql, Collections.emptyList());
}
@@ -358,8 +358,8 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
clearStatements();
LogicSQL logicSQL = createLogicSQL(sql);
SQLCheckEngine.check(logicSQL.getSqlStatementContext().getSqlStatement(), logicSQL.getParameters(),
- metaDataContexts.getMetaData(connection.getSchemaName()).getRuleMetaData().getRules(), connection.getSchemaName(), metaDataContexts.getMetaDataMap(), null);
- return kernelProcessor.generateExecutionContext(logicSQL, metaDataContexts.getMetaData(connection.getSchemaName()), metaDataContexts.getProps());
+ metaDataContexts.getMetaData(connection.getSchema()).getRuleMetaData().getRules(), connection.getSchema(), metaDataContexts.getMetaDataMap(), null);
+ return kernelProcessor.generateExecutionContext(logicSQL, metaDataContexts.getMetaData(connection.getSchema()), metaDataContexts.getProps());
}
private ExecutionGroupContext<JDBCExecutionUnit> createExecutionContext() throws SQLException {
@@ -369,7 +369,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
private ExecutionGroupContext<RawSQLExecutionUnit> createRawExecutionContext() throws SQLException {
int maxConnectionsSizePerQuery = metaDataContexts.getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
- return new RawExecutionPrepareEngine(maxConnectionsSizePerQuery, metaDataContexts.getMetaData(connection.getSchemaName()).getRuleMetaData().getRules())
+ return new RawExecutionPrepareEngine(maxConnectionsSizePerQuery, metaDataContexts.getMetaData(connection.getSchema()).getRuleMetaData().getRules())
.prepare(executionContext.getRouteContext(), executionContext.getExecutionUnits());
}
@@ -427,7 +427,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
}
private MergedResult mergeQuery(final List<QueryResult> queryResults) throws SQLException {
- ShardingSphereMetaData metaData = metaDataContexts.getMetaData(connection.getSchemaName());
+ ShardingSphereMetaData metaData = metaDataContexts.getMetaData(connection.getSchema());
MergeEngine mergeEngine = new MergeEngine(DefaultSchema.LOGIC_NAME, metaData.getResource().getDatabaseType(), metaData.getSchema(),
metaDataContexts.getProps(), metaData.getRuleMetaData().getRules());
return mergeEngine.merge(queryResults, executionContext.getSqlStatementContext());
@@ -452,7 +452,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
@Override
public boolean isAccumulate() {
- return metaDataContexts.getMetaData(connection.getSchemaName()).getRuleMetaData().getRules().stream().anyMatch(
+ return metaDataContexts.getMetaData(connection.getSchema()).getRuleMetaData().getRules().stream().anyMatch(
each -> each instanceof DataNodeContainedRule && ((DataNodeContainedRule) each).isNeedAccumulate(executionContext.getSqlStatementContext().getTablesContext().getTableNames()));
}
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/ConnectionAdapterTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/ConnectionAdapterTest.java
index d4aa093..c43e5cd3 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/ConnectionAdapterTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/ConnectionAdapterTest.java
@@ -71,15 +71,11 @@ public final class ConnectionAdapterTest {
}
@Test
- public void assertGetSchema() throws SQLException {
- assertNull(createConnectionAdaptor().getSchema());
- }
-
- @Test
public void assertSetSchema() throws SQLException {
Connection actual = createConnectionAdaptor();
+ String originalSchema = actual.getSchema();
actual.setSchema("");
- assertNull(actual.getSchema());
+ assertThat(actual.getSchema(), is(originalSchema));
}
private Connection createConnectionAdaptor() {
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/PreparedStatementAdapterTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/PreparedStatementAdapterTest.java
index 3802bed..6f742bb 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/PreparedStatementAdapterTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/PreparedStatementAdapterTest.java
@@ -56,8 +56,8 @@ public final class PreparedStatementAdapterTest {
@Before
public void setUp() throws SQLException {
ShardingSphereConnection connection = mock(ShardingSphereConnection.class, RETURNS_DEEP_STUBS);
- when(connection.getSchemaName()).thenReturn(DefaultSchema.LOGIC_NAME);
- when(connection.getContextManager().getMetaDataContexts().getMetaData(connection.getSchemaName()).getResource().getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(connection.getSchema()).thenReturn(DefaultSchema.LOGIC_NAME);
+ when(connection.getContextManager().getMetaDataContexts().getMetaData(connection.getSchema()).getResource().getDatabaseType()).thenReturn(new MySQLDatabaseType());
when(connection.getContextManager().getMetaDataContexts().getProps()).thenReturn(new ConfigurationProperties(new Properties()));
shardingSpherePreparedStatement = new ShardingSpherePreparedStatement(connection, "SELECT 1");
}
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 0eb2572..7ea676c 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
@@ -45,7 +45,6 @@ import javax.sql.DataSource;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.SQLException;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
@@ -54,7 +53,6 @@ import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
@@ -102,7 +100,6 @@ public final class ShardingSphereConnectionTest {
when(contextManager.getDataSourceMap(DefaultSchema.LOGIC_NAME)).thenReturn(dataSourceMap);
when(contextManager.getMetaDataContexts().getGlobalRuleMetaData().findSingleRule(TransactionRule.class)).thenReturn(Optional.empty());
connection = new ShardingSphereConnection(DefaultSchema.LOGIC_NAME, contextManager);
- connection = new ShardingSphereConnection(DefaultSchema.LOGIC_NAME, contextManager);
}
@After
@@ -140,10 +137,9 @@ public final class ShardingSphereConnectionTest {
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
when(contextManager.getTransactionContexts()).thenReturn(transactionContexts);
when(contextManager.getDataSourceMap(DefaultSchema.LOGIC_NAME)).thenReturn(dataSourceMap);
- when(contextManager.getDataSourceMap(DefaultSchema.LOGIC_NAME)).thenReturn(dataSourceMap);
TransactionRule transactionRule = new TransactionRule(new TransactionRuleConfiguration("XA", null));
when(contextManager.getMetaDataContexts().getGlobalRuleMetaData().findSingleRule(TransactionRule.class)).thenReturn(Optional.of(transactionRule));
- connection = new ShardingSphereConnection(connection.getSchemaName(), contextManager);
+ connection = new ShardingSphereConnection(connection.getSchema(), contextManager);
connection.setAutoCommit(false);
assertTrue(XAShardingSphereTransactionManagerFixture.getInvocations().contains(TransactionOperationType.BEGIN));
connection.commit();
@@ -158,10 +154,9 @@ public final class ShardingSphereConnectionTest {
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
when(contextManager.getTransactionContexts()).thenReturn(transactionContexts);
when(contextManager.getDataSourceMap(DefaultSchema.LOGIC_NAME)).thenReturn(dataSourceMap);
- when(contextManager.getDataSourceMap(DefaultSchema.LOGIC_NAME)).thenReturn(dataSourceMap);
TransactionRule transactionRule = new TransactionRule(new TransactionRuleConfiguration("BASE", null));
when(contextManager.getMetaDataContexts().getGlobalRuleMetaData().findSingleRule(TransactionRule.class)).thenReturn(Optional.of(transactionRule));
- connection = new ShardingSphereConnection(connection.getSchemaName(), contextManager);
+ connection = new ShardingSphereConnection(connection.getSchema(), contextManager);
connection.setAutoCommit(false);
assertTrue(BASEShardingSphereTransactionManagerFixture.getInvocations().contains(TransactionOperationType.BEGIN));
connection.commit();
@@ -171,25 +166,21 @@ public final class ShardingSphereConnectionTest {
}
@Test
- public void assertIsValid() throws SQLException {
- Connection primaryConnection = mock(Connection.class);
- Connection upReplicaConnection = mock(Connection.class);
- Connection downReplicaConnection = mock(Connection.class);
- when(primaryConnection.isValid(anyInt())).thenReturn(true);
- when(upReplicaConnection.isValid(anyInt())).thenReturn(true);
- when(downReplicaConnection.isValid(anyInt())).thenReturn(false);
- connection.getCachedConnections().put("test_primary", primaryConnection);
- connection.getCachedConnections().put("test_replica_up", upReplicaConnection);
+ public void assertIsValidWhenEmptyConnection() throws SQLException {
assertTrue(connection.isValid(0));
- connection.getCachedConnections().put("test_replica_down", downReplicaConnection);
+ }
+
+ @Test
+ public void assertIsInvalid() throws SQLException {
+ connection.getConnection("test_replica_ds");
assertFalse(connection.isValid(0));
}
@Test
public void assertSetReadOnly() throws SQLException {
- Connection connection = mock(Connection.class);
- ShardingSphereConnection actual = createShardingSphereConnection(connection);
+ ShardingSphereConnection actual = createShardingSphereConnection();
assertFalse(actual.isReadOnly());
+ Connection connection = actual.getConnection("test_replica_ds");
actual.setReadOnly(true);
assertTrue(actual.isReadOnly());
verify(connection).setReadOnly(true);
@@ -202,8 +193,8 @@ public final class ShardingSphereConnectionTest {
@Test
public void assertSetTransactionIsolation() throws SQLException {
- Connection connection = mock(Connection.class);
- ShardingSphereConnection actual = createShardingSphereConnection(connection);
+ ShardingSphereConnection actual = createShardingSphereConnection();
+ Connection connection = actual.getConnection("test_replica_ds");
actual.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
verify(connection).setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
}
@@ -218,7 +209,7 @@ public final class ShardingSphereConnectionTest {
@Test
public void assertClose() throws SQLException {
- ShardingSphereConnection actual = createShardingSphereConnection(mock(Connection.class));
+ ShardingSphereConnection actual = createShardingSphereConnection();
actual.close();
assertTrue(actual.isClosed());
assertTrue(getCachedConnections(actual).isEmpty());
@@ -226,7 +217,7 @@ public final class ShardingSphereConnectionTest {
@Test
public void assertCloseShouldNotClearTransactionType() throws SQLException {
- ShardingSphereConnection actual = createShardingSphereConnection(mock(Connection.class));
+ ShardingSphereConnection actual = createShardingSphereConnection();
TransactionTypeHolder.set(TransactionType.XA);
actual.close();
assertTrue(actual.isClosed());
@@ -234,11 +225,9 @@ public final class ShardingSphereConnectionTest {
assertThat(TransactionTypeHolder.get(), is(TransactionType.XA));
}
- private ShardingSphereConnection createShardingSphereConnection(final Connection... connections) {
+ private ShardingSphereConnection createShardingSphereConnection() {
ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
when(contextManager.getMetaDataContexts().getGlobalRuleMetaData().findSingleRule(TransactionRule.class)).thenReturn(Optional.empty());
- ShardingSphereConnection result = new ShardingSphereConnection(DefaultSchema.LOGIC_NAME, contextManager);
- result.getCachedConnections().putAll("", Arrays.asList(connections));
- return result;
+ return new ShardingSphereConnection(DefaultSchema.LOGIC_NAME, contextManager);
}
}
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 624a424..1c3363e 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
@@ -17,13 +17,12 @@
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.mode.metadata.MetaDataContexts;
import org.apache.shardingsphere.infra.database.DefaultSchema;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.resource.CachedDatabaseMetaData;
+import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -90,13 +89,13 @@ public final class ShardingSphereDatabaseMetaDataTest {
when(connection.getMetaData()).thenReturn(databaseMetaData);
when(resultSet.getMetaData()).thenReturn(mock(ResultSetMetaData.class));
CachedDatabaseMetaData cachedDatabaseMetaData = new CachedDatabaseMetaData(databaseMetaData);
- when(shardingSphereConnection.getCachedConnections()).thenReturn(LinkedHashMultimap.create());
+ when(shardingSphereConnection.getRandomPhysicalDataSourceName()).thenReturn(DATA_SOURCE_NAME);
when(shardingSphereConnection.getConnection(anyString())).thenReturn(connection);
when(shardingSphereConnection.getContextManager().getMetaDataContexts()).thenReturn(metaDataContexts);
when(shardingSphereConnection.getContextManager().getDataSourceMap(DefaultSchema.LOGIC_NAME)).thenReturn(dataSourceMap);
- when(shardingSphereConnection.getSchemaName()).thenReturn(DefaultSchema.LOGIC_NAME);
+ when(shardingSphereConnection.getSchema()).thenReturn(DefaultSchema.LOGIC_NAME);
ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
- when(metaDataContexts.getMetaData(shardingSphereConnection.getSchemaName())).thenReturn(metaData);
+ when(metaDataContexts.getMetaData(shardingSphereConnection.getSchema())).thenReturn(metaData);
when(metaData.getResource().getCachedDatabaseMetaData()).thenReturn(cachedDatabaseMetaData);
ShardingRule shardingRule = mockShardingRule();
when(metaData.getRuleMetaData().getRules()).thenReturn(Collections.singleton(shardingRule));
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/unsupported/UnsupportedOperationPreparedStatementTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/unsupported/UnsupportedOperationPreparedStatementTest.java
index 21a7da9..06bd955 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/unsupported/UnsupportedOperationPreparedStatementTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/unsupported/UnsupportedOperationPreparedStatementTest.java
@@ -42,8 +42,8 @@ public final class UnsupportedOperationPreparedStatementTest {
@Before
public void setUp() throws SQLException {
ShardingSphereConnection connection = mock(ShardingSphereConnection.class, RETURNS_DEEP_STUBS);
- when(connection.getSchemaName()).thenReturn(DefaultSchema.LOGIC_NAME);
- when(connection.getContextManager().getMetaDataContexts().getMetaData(connection.getSchemaName()).getResource().getDatabaseType()).thenReturn(new MySQLDatabaseType());
+ when(connection.getSchema()).thenReturn(DefaultSchema.LOGIC_NAME);
+ when(connection.getContextManager().getMetaDataContexts().getMetaData(connection.getSchema()).getResource().getDatabaseType()).thenReturn(new MySQLDatabaseType());
when(connection.getContextManager().getMetaDataContexts().getProps()).thenReturn(new ConfigurationProperties(new Properties()));
shardingSpherePreparedStatement = new ShardingSpherePreparedStatement(connection, "SELECT 1");
}