Loading sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/common/jdbc/JDBCBackendHandler.java +3 −2 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import io.shardingsphere.core.merger.MergedResult; import io.shardingsphere.core.merger.QueryResult; import io.shardingsphere.core.parsing.SQLJudgeEngine; import io.shardingsphere.core.parsing.parser.sql.SQLStatement; import io.shardingsphere.core.parsing.parser.sql.dml.insert.InsertStatement; import io.shardingsphere.core.routing.SQLExecutionUnit; import io.shardingsphere.core.routing.SQLRouteResult; import io.shardingsphere.core.routing.SQLUnit; Loading Loading @@ -121,7 +122,7 @@ public abstract class JDBCBackendHandler implements BackendHandler { } List<Future<CommandResponsePackets>> futureList = new ArrayList<>(1024); for (SQLExecutionUnit each : routeResult.getExecutionUnits()) { Statement statement = prepareResource(ConnectionManager.getConnection(each.getDataSource()), each.getSqlUnit().getSql(), routeResult.getSqlStatement()); Statement statement = createStatement(ConnectionManager.getConnection(each.getDataSource()), each.getSqlUnit().getSql(), routeResult.getSqlStatement() instanceof InsertStatement); futureList.add(userGroup.submit(newSubmitTask(statement, routeResult.getSqlStatement(), each.getSqlUnit().getSql()))); } List<CommandResponsePackets> packets = buildCommandResponsePackets(futureList); Loading @@ -137,7 +138,7 @@ public abstract class JDBCBackendHandler implements BackendHandler { return TransactionType.XA == ruleRegistry.getTransactionType() && SQLType.DDL == sqlType && Status.STATUS_NO_TRANSACTION != AtomikosUserTransaction.getInstance().getStatus(); } protected abstract Statement prepareResource(Connection connection, String actualSQL, SQLStatement sqlStatement) throws SQLException; protected abstract Statement createStatement(Connection connection, String actualSQL, boolean isReturnGeneratedKeys) throws SQLException; protected abstract Callable<CommandResponsePackets> newSubmitTask(Statement statement, SQLStatement sqlStatement, String unitSQL); Loading sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/common/jdbc/JDBCResourceManager.java +2 −32 Original line number Diff line number Diff line Loading @@ -20,11 +20,8 @@ package io.shardingsphere.proxy.backend.common.jdbc; import io.shardingsphere.core.routing.router.masterslave.MasterVisitedManager; import lombok.Getter; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; Loading @@ -36,30 +33,8 @@ import java.util.concurrent.CopyOnWriteArrayList; @Getter public final class JDBCResourceManager { private final List<Connection> connections = new ArrayList<>(); private final List<Statement> statements = new ArrayList<>(); private final List<ResultSet> resultSets = new CopyOnWriteArrayList<>(); /** * Add new connection to resource manager. * * @param connection Connection */ public void addConnection(final Connection connection) { connections.add(connection); } /** * Add statement to resource manager. * * @param statement statement */ public void addStatement(final Statement statement) { statements.add(statement); } /** * Add new resultSet to resource manager. * Loading @@ -75,14 +50,9 @@ public final class JDBCResourceManager { * @throws SQLException SQLException */ public void clear() throws SQLException { for (Connection each : connections) { if (!each.isClosed()) { each.close(); } } for (ResultSet each : resultSets) { if (!each.isClosed()) { each.close(); if (!each.getStatement().getConnection().isClosed()) { each.getStatement().getConnection().close(); } MasterVisitedManager.clear(); } Loading sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/common/jdbc/statement/JDBCStatementBackendHandler.java +2 −5 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ package io.shardingsphere.proxy.backend.common.jdbc.statement; import io.shardingsphere.core.constant.DatabaseType; import io.shardingsphere.core.merger.QueryResult; import io.shardingsphere.core.parsing.parser.sql.SQLStatement; import io.shardingsphere.core.parsing.parser.sql.dml.insert.InsertStatement; import io.shardingsphere.core.routing.PreparedStatementRoutingEngine; import io.shardingsphere.core.routing.SQLRouteResult; import io.shardingsphere.proxy.backend.common.ProxyMode; Loading Loading @@ -90,13 +89,11 @@ public final class JDBCStatementBackendHandler extends JDBCBackendHandler { } @Override protected PreparedStatement prepareResource(final Connection connection, final String actualSQL, final SQLStatement sqlStatement) throws SQLException { PreparedStatement result = sqlStatement instanceof InsertStatement ? connection.prepareStatement(actualSQL, Statement.RETURN_GENERATED_KEYS) : connection.prepareStatement(actualSQL); protected PreparedStatement createStatement(final Connection connection, final String actualSQL, final boolean isReturnGeneratedKeys) throws SQLException { PreparedStatement result = isReturnGeneratedKeys ? connection.prepareStatement(actualSQL, Statement.RETURN_GENERATED_KEYS) : connection.prepareStatement(actualSQL); for (int i = 0; i < preparedStatementParameters.size(); i++) { result.setObject(i + 1, preparedStatementParameters.get(i).getValue()); } getJdbcResourceManager().addConnection(connection); getJdbcResourceManager().addStatement(result); return result; } Loading sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/common/jdbc/text/JDBCTextBackendHandler.java +2 −5 Original line number Diff line number Diff line Loading @@ -63,11 +63,8 @@ public final class JDBCTextBackendHandler extends JDBCBackendHandler { } @Override protected Statement prepareResource(final Connection connection, final String actualSQL, final SQLStatement sqlStatement) throws SQLException { Statement result = connection.createStatement(); getJdbcResourceManager().addConnection(connection); getJdbcResourceManager().addStatement(result); return result; protected Statement createStatement(final Connection connection, final String actualSQL, final boolean isReturnGeneratedKeys) throws SQLException { return connection.createStatement(); } @Override Loading Loading
sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/common/jdbc/JDBCBackendHandler.java +3 −2 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import io.shardingsphere.core.merger.MergedResult; import io.shardingsphere.core.merger.QueryResult; import io.shardingsphere.core.parsing.SQLJudgeEngine; import io.shardingsphere.core.parsing.parser.sql.SQLStatement; import io.shardingsphere.core.parsing.parser.sql.dml.insert.InsertStatement; import io.shardingsphere.core.routing.SQLExecutionUnit; import io.shardingsphere.core.routing.SQLRouteResult; import io.shardingsphere.core.routing.SQLUnit; Loading Loading @@ -121,7 +122,7 @@ public abstract class JDBCBackendHandler implements BackendHandler { } List<Future<CommandResponsePackets>> futureList = new ArrayList<>(1024); for (SQLExecutionUnit each : routeResult.getExecutionUnits()) { Statement statement = prepareResource(ConnectionManager.getConnection(each.getDataSource()), each.getSqlUnit().getSql(), routeResult.getSqlStatement()); Statement statement = createStatement(ConnectionManager.getConnection(each.getDataSource()), each.getSqlUnit().getSql(), routeResult.getSqlStatement() instanceof InsertStatement); futureList.add(userGroup.submit(newSubmitTask(statement, routeResult.getSqlStatement(), each.getSqlUnit().getSql()))); } List<CommandResponsePackets> packets = buildCommandResponsePackets(futureList); Loading @@ -137,7 +138,7 @@ public abstract class JDBCBackendHandler implements BackendHandler { return TransactionType.XA == ruleRegistry.getTransactionType() && SQLType.DDL == sqlType && Status.STATUS_NO_TRANSACTION != AtomikosUserTransaction.getInstance().getStatus(); } protected abstract Statement prepareResource(Connection connection, String actualSQL, SQLStatement sqlStatement) throws SQLException; protected abstract Statement createStatement(Connection connection, String actualSQL, boolean isReturnGeneratedKeys) throws SQLException; protected abstract Callable<CommandResponsePackets> newSubmitTask(Statement statement, SQLStatement sqlStatement, String unitSQL); Loading
sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/common/jdbc/JDBCResourceManager.java +2 −32 Original line number Diff line number Diff line Loading @@ -20,11 +20,8 @@ package io.shardingsphere.proxy.backend.common.jdbc; import io.shardingsphere.core.routing.router.masterslave.MasterVisitedManager; import lombok.Getter; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; Loading @@ -36,30 +33,8 @@ import java.util.concurrent.CopyOnWriteArrayList; @Getter public final class JDBCResourceManager { private final List<Connection> connections = new ArrayList<>(); private final List<Statement> statements = new ArrayList<>(); private final List<ResultSet> resultSets = new CopyOnWriteArrayList<>(); /** * Add new connection to resource manager. * * @param connection Connection */ public void addConnection(final Connection connection) { connections.add(connection); } /** * Add statement to resource manager. * * @param statement statement */ public void addStatement(final Statement statement) { statements.add(statement); } /** * Add new resultSet to resource manager. * Loading @@ -75,14 +50,9 @@ public final class JDBCResourceManager { * @throws SQLException SQLException */ public void clear() throws SQLException { for (Connection each : connections) { if (!each.isClosed()) { each.close(); } } for (ResultSet each : resultSets) { if (!each.isClosed()) { each.close(); if (!each.getStatement().getConnection().isClosed()) { each.getStatement().getConnection().close(); } MasterVisitedManager.clear(); } Loading
sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/common/jdbc/statement/JDBCStatementBackendHandler.java +2 −5 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ package io.shardingsphere.proxy.backend.common.jdbc.statement; import io.shardingsphere.core.constant.DatabaseType; import io.shardingsphere.core.merger.QueryResult; import io.shardingsphere.core.parsing.parser.sql.SQLStatement; import io.shardingsphere.core.parsing.parser.sql.dml.insert.InsertStatement; import io.shardingsphere.core.routing.PreparedStatementRoutingEngine; import io.shardingsphere.core.routing.SQLRouteResult; import io.shardingsphere.proxy.backend.common.ProxyMode; Loading Loading @@ -90,13 +89,11 @@ public final class JDBCStatementBackendHandler extends JDBCBackendHandler { } @Override protected PreparedStatement prepareResource(final Connection connection, final String actualSQL, final SQLStatement sqlStatement) throws SQLException { PreparedStatement result = sqlStatement instanceof InsertStatement ? connection.prepareStatement(actualSQL, Statement.RETURN_GENERATED_KEYS) : connection.prepareStatement(actualSQL); protected PreparedStatement createStatement(final Connection connection, final String actualSQL, final boolean isReturnGeneratedKeys) throws SQLException { PreparedStatement result = isReturnGeneratedKeys ? connection.prepareStatement(actualSQL, Statement.RETURN_GENERATED_KEYS) : connection.prepareStatement(actualSQL); for (int i = 0; i < preparedStatementParameters.size(); i++) { result.setObject(i + 1, preparedStatementParameters.get(i).getValue()); } getJdbcResourceManager().addConnection(connection); getJdbcResourceManager().addStatement(result); return result; } Loading
sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/common/jdbc/text/JDBCTextBackendHandler.java +2 −5 Original line number Diff line number Diff line Loading @@ -63,11 +63,8 @@ public final class JDBCTextBackendHandler extends JDBCBackendHandler { } @Override protected Statement prepareResource(final Connection connection, final String actualSQL, final SQLStatement sqlStatement) throws SQLException { Statement result = connection.createStatement(); getJdbcResourceManager().addConnection(connection); getJdbcResourceManager().addStatement(result); return result; protected Statement createStatement(final Connection connection, final String actualSQL, final boolean isReturnGeneratedKeys) throws SQLException { return connection.createStatement(); } @Override Loading