Loading sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/common/jdbc/JDBCBackendHandler.java +6 −6 Original line number Diff line number Diff line Loading @@ -91,17 +91,17 @@ public abstract class JDBCBackendHandler implements BackendHandler { private final boolean showSQL; @Setter private BaseJDBCResource jdbcResource; private final BaseJDBCResource jdbcResource; private final List<ResultList> resultLists = new CopyOnWriteArrayList<>(); public JDBCBackendHandler(final String sql, final DatabaseType databaseType, final boolean showSQL) { public JDBCBackendHandler(final String sql, final DatabaseType databaseType, final boolean showSQL, final BaseJDBCResource jdbcResource) { this.sql = sql; isMerged = false; hasMoreResultValueFlag = true; this.databaseType = databaseType; this.showSQL = showSQL; this.jdbcResource = jdbcResource; } @Override Loading @@ -110,7 +110,7 @@ public abstract class JDBCBackendHandler implements BackendHandler { return doExecuteInternal(RuleRegistry.getInstance().isMasterSlaveOnly() ? doMasterSlaveRoute() : doSqlShardingRoute()); } catch (final Exception ex) { log.error("ExecuteBackendHandler", ex); return new CommandResponsePackets(new ErrPacket(1, 0, "", "" + ex.getMessage())); return new CommandResponsePackets(new ErrPacket(1, new SQLException(ex))); } } Loading Loading @@ -151,9 +151,9 @@ public abstract class JDBCBackendHandler implements BackendHandler { protected abstract SQLRouteResult doSqlShardingRoute(); protected abstract Statement prepareResource(String dataSourceName, String unitSql, SQLStatement sqlStatement) throws SQLException; protected abstract Statement prepareResource(String dataSourceName, String unitSQL, SQLStatement sqlStatement) throws SQLException; protected abstract Callable<CommandResponsePackets> newSubmitTask(Statement statement, SQLStatement sqlStatement, String unitSql); protected abstract Callable<CommandResponsePackets> newSubmitTask(Statement statement, SQLStatement sqlStatement, String unitSQL); private List<CommandResponsePackets> buildCommandResponsePackets(final List<Future<CommandResponsePackets>> futureList) { List<CommandResponsePackets> result = new ArrayList<>(); Loading sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/common/jdbc/statement/JDBCStatementBackendHandler.java +12 −12 Original line number Diff line number Diff line Loading @@ -55,24 +55,24 @@ import java.util.concurrent.CopyOnWriteArrayList; */ public final class JDBCStatementBackendHandler extends JDBCBackendHandler { private final RuleRegistry ruleRegistry; private final List<PreparedStatementParameter> preparedStatementParameters; @Getter private final List<ColumnType> columnTypes; public JDBCStatementBackendHandler(final List<PreparedStatementParameter> preparedStatementParameters, final int statementId, final DatabaseType databaseType, final boolean showSQL) { super(PreparedStatementRegistry.getInstance().getSQL(statementId), databaseType, showSQL); super.setJdbcResource(ProxyJDBCResourceFactory.newPrepareResource()); public JDBCStatementBackendHandler(final List<PreparedStatementParameter> preparedStatementParameters, final int statementId, final DatabaseType databaseType, final boolean showSQL) { super(PreparedStatementRegistry.getInstance().getSQL(statementId), databaseType, showSQL, ProxyJDBCResourceFactory.newPrepareResource()); ruleRegistry = RuleRegistry.getInstance(); this.preparedStatementParameters = preparedStatementParameters; columnTypes = new CopyOnWriteArrayList<>(); } @Override protected SQLRouteResult doSqlShardingRoute() { PreparedStatementRoutingEngine routingEngine = new PreparedStatementRoutingEngine(getSql(), RuleRegistry.getInstance().getShardingRule(), RuleRegistry.getInstance().getShardingMetaData(), getDatabaseType(), isShowSQL(), RuleRegistry.getInstance().getShardingDataSourceMetaData()); PreparedStatementRoutingEngine routingEngine = new PreparedStatementRoutingEngine( getSql(), ruleRegistry.getShardingRule(), ruleRegistry.getShardingMetaData(), getDatabaseType(), isShowSQL(), ruleRegistry.getShardingDataSourceMetaData()); return routingEngine.route(getComStmtExecuteParameters()); } Loading @@ -85,15 +85,15 @@ public final class JDBCStatementBackendHandler extends JDBCBackendHandler { } @Override protected Callable<CommandResponsePackets> newSubmitTask(final Statement statement, final SQLStatement sqlStatement, final String unitSql) { protected Callable<CommandResponsePackets> newSubmitTask(final Statement statement, final SQLStatement sqlStatement, final String unitSQL) { return new JDBCStatementExecuteWorker(this, sqlStatement, (PreparedStatement) statement); } @Override protected PreparedStatement prepareResource(final String dataSourceName, final String unitSql, final SQLStatement sqlStatement) throws SQLException { DataSource dataSource = RuleRegistry.getInstance().getDataSourceMap().get(dataSourceName); protected PreparedStatement prepareResource(final String dataSourceName, final String unitSQL, final SQLStatement sqlStatement) throws SQLException { DataSource dataSource = ruleRegistry.getDataSourceMap().get(dataSourceName); Connection connection = getConnection(dataSource); PreparedStatement result = sqlStatement instanceof InsertStatement ? connection.prepareStatement(unitSql, Statement.RETURN_GENERATED_KEYS) : connection.prepareStatement(unitSql); PreparedStatement result = sqlStatement instanceof InsertStatement ? connection.prepareStatement(unitSQL, Statement.RETURN_GENERATED_KEYS) : connection.prepareStatement(unitSQL); for (int i = 0; i < preparedStatementParameters.size(); i++) { result.setObject(i + 1, preparedStatementParameters.get(i).getValue()); } Loading @@ -106,7 +106,7 @@ public final class JDBCStatementBackendHandler extends JDBCBackendHandler { @Override protected QueryResult newQueryResult(final CommandResponsePackets packet, final int index) { MySQLPacketStatementExecuteQueryResult result = new MySQLPacketStatementExecuteQueryResult(packet, columnTypes); if (ProxyMode.MEMORY_STRICTLY == RuleRegistry.getInstance().getProxyMode()) { if (ProxyMode.MEMORY_STRICTLY == ruleRegistry.getProxyMode()) { result.setResultSet(getJdbcResource().getResultSets().get(index)); } else { result.setResultList(getResultLists().get(index)); Loading sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/common/jdbc/text/JDBCTextBackendHandler.java +11 −9 Original line number Diff line number Diff line Loading @@ -48,21 +48,23 @@ import java.util.concurrent.Callable; */ public final class JDBCTextBackendHandler extends JDBCBackendHandler { private final RuleRegistry ruleRegistry; public JDBCTextBackendHandler(final String sql, final DatabaseType databaseType, final boolean showSQL) { super(sql, databaseType, showSQL); setJdbcResource(ProxyJDBCResourceFactory.newResource()); super(sql, databaseType, showSQL, ProxyJDBCResourceFactory.newResource()); ruleRegistry = RuleRegistry.getInstance(); } @Override protected SQLRouteResult doSqlShardingRoute() { StatementRoutingEngine routingEngine = new StatementRoutingEngine(RuleRegistry.getInstance().getShardingRule(), RuleRegistry.getInstance().getShardingMetaData(), getDatabaseType(), isShowSQL(), RuleRegistry.getInstance().getShardingDataSourceMetaData()); StatementRoutingEngine routingEngine = new StatementRoutingEngine( ruleRegistry.getShardingRule(), ruleRegistry.getShardingMetaData(), getDatabaseType(), isShowSQL(), ruleRegistry.getShardingDataSourceMetaData()); return routingEngine.route(getSql()); } @Override protected Statement prepareResource(final String dataSourceName, final String unitSql, final SQLStatement sqlStatement) throws SQLException { DataSource dataSource = RuleRegistry.getInstance().getDataSourceMap().get(dataSourceName); protected Statement prepareResource(final String dataSourceName, final String unitSQL, final SQLStatement sqlStatement) throws SQLException { DataSource dataSource = ruleRegistry.getDataSourceMap().get(dataSourceName); Connection connection = getConnection(dataSource); Statement result = connection.createStatement(); ProxyJDBCResource proxyJDBCResource = (ProxyJDBCResource) getJdbcResource(); Loading @@ -72,14 +74,14 @@ public final class JDBCTextBackendHandler extends JDBCBackendHandler { } @Override protected Callable<CommandResponsePackets> newSubmitTask(final Statement statement, final SQLStatement sqlStatement, final String unitSql) { return new JDBCTextExecuteWorker(this, sqlStatement, statement, unitSql); protected Callable<CommandResponsePackets> newSubmitTask(final Statement statement, final SQLStatement sqlStatement, final String unitSQL) { return new JDBCTextExecuteWorker(this, sqlStatement, statement, unitSQL); } @Override protected QueryResult newQueryResult(final CommandResponsePackets packet, final int index) { MySQLPacketQueryResult result = new MySQLPacketQueryResult(packet); if (ProxyMode.MEMORY_STRICTLY == RuleRegistry.getInstance().getProxyMode()) { if (ProxyMode.MEMORY_STRICTLY == ruleRegistry.getProxyMode()) { result.setResultSet(getJdbcResource().getResultSets().get(index)); } else { result.setResultList(getResultLists().get(index)); Loading sharding-proxy/src/main/java/io/shardingsphere/proxy/config/RuleRegistry.java +1 −1 Original line number Diff line number Diff line Loading @@ -102,7 +102,7 @@ public final class RuleRegistry { * * @param config yaml proxy configuration */ public void init(final OrchestrationProxyConfiguration config) { public synchronized void init(final OrchestrationProxyConfiguration config) { Properties properties = null == config.getShardingRule() ? new Properties() : config.getShardingRule().getProps(); ShardingProperties shardingProperties = new ShardingProperties(null == properties ? new Properties() : properties); showSQL = shardingProperties.getValue(ShardingPropertiesConstant.SQL_SHOW); Loading sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/text/query/ComQueryPacket.java +1 −1 Original line number Diff line number Diff line Loading @@ -88,7 +88,7 @@ public final class ComQueryPacket extends CommandPacket implements CommandPacket } } catch (final Exception ex) { log.error("doTransactionIntercept Exception", ex); return new CommandResponsePackets(new ErrPacket(1, 0, "", "" + ex.getMessage())); return new CommandResponsePackets(new ErrPacket(1, new SQLException(ex))); } return backendHandler.execute(); } Loading Loading
sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/common/jdbc/JDBCBackendHandler.java +6 −6 Original line number Diff line number Diff line Loading @@ -91,17 +91,17 @@ public abstract class JDBCBackendHandler implements BackendHandler { private final boolean showSQL; @Setter private BaseJDBCResource jdbcResource; private final BaseJDBCResource jdbcResource; private final List<ResultList> resultLists = new CopyOnWriteArrayList<>(); public JDBCBackendHandler(final String sql, final DatabaseType databaseType, final boolean showSQL) { public JDBCBackendHandler(final String sql, final DatabaseType databaseType, final boolean showSQL, final BaseJDBCResource jdbcResource) { this.sql = sql; isMerged = false; hasMoreResultValueFlag = true; this.databaseType = databaseType; this.showSQL = showSQL; this.jdbcResource = jdbcResource; } @Override Loading @@ -110,7 +110,7 @@ public abstract class JDBCBackendHandler implements BackendHandler { return doExecuteInternal(RuleRegistry.getInstance().isMasterSlaveOnly() ? doMasterSlaveRoute() : doSqlShardingRoute()); } catch (final Exception ex) { log.error("ExecuteBackendHandler", ex); return new CommandResponsePackets(new ErrPacket(1, 0, "", "" + ex.getMessage())); return new CommandResponsePackets(new ErrPacket(1, new SQLException(ex))); } } Loading Loading @@ -151,9 +151,9 @@ public abstract class JDBCBackendHandler implements BackendHandler { protected abstract SQLRouteResult doSqlShardingRoute(); protected abstract Statement prepareResource(String dataSourceName, String unitSql, SQLStatement sqlStatement) throws SQLException; protected abstract Statement prepareResource(String dataSourceName, String unitSQL, SQLStatement sqlStatement) throws SQLException; protected abstract Callable<CommandResponsePackets> newSubmitTask(Statement statement, SQLStatement sqlStatement, String unitSql); protected abstract Callable<CommandResponsePackets> newSubmitTask(Statement statement, SQLStatement sqlStatement, String unitSQL); private List<CommandResponsePackets> buildCommandResponsePackets(final List<Future<CommandResponsePackets>> futureList) { List<CommandResponsePackets> result = new ArrayList<>(); Loading
sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/common/jdbc/statement/JDBCStatementBackendHandler.java +12 −12 Original line number Diff line number Diff line Loading @@ -55,24 +55,24 @@ import java.util.concurrent.CopyOnWriteArrayList; */ public final class JDBCStatementBackendHandler extends JDBCBackendHandler { private final RuleRegistry ruleRegistry; private final List<PreparedStatementParameter> preparedStatementParameters; @Getter private final List<ColumnType> columnTypes; public JDBCStatementBackendHandler(final List<PreparedStatementParameter> preparedStatementParameters, final int statementId, final DatabaseType databaseType, final boolean showSQL) { super(PreparedStatementRegistry.getInstance().getSQL(statementId), databaseType, showSQL); super.setJdbcResource(ProxyJDBCResourceFactory.newPrepareResource()); public JDBCStatementBackendHandler(final List<PreparedStatementParameter> preparedStatementParameters, final int statementId, final DatabaseType databaseType, final boolean showSQL) { super(PreparedStatementRegistry.getInstance().getSQL(statementId), databaseType, showSQL, ProxyJDBCResourceFactory.newPrepareResource()); ruleRegistry = RuleRegistry.getInstance(); this.preparedStatementParameters = preparedStatementParameters; columnTypes = new CopyOnWriteArrayList<>(); } @Override protected SQLRouteResult doSqlShardingRoute() { PreparedStatementRoutingEngine routingEngine = new PreparedStatementRoutingEngine(getSql(), RuleRegistry.getInstance().getShardingRule(), RuleRegistry.getInstance().getShardingMetaData(), getDatabaseType(), isShowSQL(), RuleRegistry.getInstance().getShardingDataSourceMetaData()); PreparedStatementRoutingEngine routingEngine = new PreparedStatementRoutingEngine( getSql(), ruleRegistry.getShardingRule(), ruleRegistry.getShardingMetaData(), getDatabaseType(), isShowSQL(), ruleRegistry.getShardingDataSourceMetaData()); return routingEngine.route(getComStmtExecuteParameters()); } Loading @@ -85,15 +85,15 @@ public final class JDBCStatementBackendHandler extends JDBCBackendHandler { } @Override protected Callable<CommandResponsePackets> newSubmitTask(final Statement statement, final SQLStatement sqlStatement, final String unitSql) { protected Callable<CommandResponsePackets> newSubmitTask(final Statement statement, final SQLStatement sqlStatement, final String unitSQL) { return new JDBCStatementExecuteWorker(this, sqlStatement, (PreparedStatement) statement); } @Override protected PreparedStatement prepareResource(final String dataSourceName, final String unitSql, final SQLStatement sqlStatement) throws SQLException { DataSource dataSource = RuleRegistry.getInstance().getDataSourceMap().get(dataSourceName); protected PreparedStatement prepareResource(final String dataSourceName, final String unitSQL, final SQLStatement sqlStatement) throws SQLException { DataSource dataSource = ruleRegistry.getDataSourceMap().get(dataSourceName); Connection connection = getConnection(dataSource); PreparedStatement result = sqlStatement instanceof InsertStatement ? connection.prepareStatement(unitSql, Statement.RETURN_GENERATED_KEYS) : connection.prepareStatement(unitSql); PreparedStatement result = sqlStatement instanceof InsertStatement ? connection.prepareStatement(unitSQL, Statement.RETURN_GENERATED_KEYS) : connection.prepareStatement(unitSQL); for (int i = 0; i < preparedStatementParameters.size(); i++) { result.setObject(i + 1, preparedStatementParameters.get(i).getValue()); } Loading @@ -106,7 +106,7 @@ public final class JDBCStatementBackendHandler extends JDBCBackendHandler { @Override protected QueryResult newQueryResult(final CommandResponsePackets packet, final int index) { MySQLPacketStatementExecuteQueryResult result = new MySQLPacketStatementExecuteQueryResult(packet, columnTypes); if (ProxyMode.MEMORY_STRICTLY == RuleRegistry.getInstance().getProxyMode()) { if (ProxyMode.MEMORY_STRICTLY == ruleRegistry.getProxyMode()) { result.setResultSet(getJdbcResource().getResultSets().get(index)); } else { result.setResultList(getResultLists().get(index)); Loading
sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/common/jdbc/text/JDBCTextBackendHandler.java +11 −9 Original line number Diff line number Diff line Loading @@ -48,21 +48,23 @@ import java.util.concurrent.Callable; */ public final class JDBCTextBackendHandler extends JDBCBackendHandler { private final RuleRegistry ruleRegistry; public JDBCTextBackendHandler(final String sql, final DatabaseType databaseType, final boolean showSQL) { super(sql, databaseType, showSQL); setJdbcResource(ProxyJDBCResourceFactory.newResource()); super(sql, databaseType, showSQL, ProxyJDBCResourceFactory.newResource()); ruleRegistry = RuleRegistry.getInstance(); } @Override protected SQLRouteResult doSqlShardingRoute() { StatementRoutingEngine routingEngine = new StatementRoutingEngine(RuleRegistry.getInstance().getShardingRule(), RuleRegistry.getInstance().getShardingMetaData(), getDatabaseType(), isShowSQL(), RuleRegistry.getInstance().getShardingDataSourceMetaData()); StatementRoutingEngine routingEngine = new StatementRoutingEngine( ruleRegistry.getShardingRule(), ruleRegistry.getShardingMetaData(), getDatabaseType(), isShowSQL(), ruleRegistry.getShardingDataSourceMetaData()); return routingEngine.route(getSql()); } @Override protected Statement prepareResource(final String dataSourceName, final String unitSql, final SQLStatement sqlStatement) throws SQLException { DataSource dataSource = RuleRegistry.getInstance().getDataSourceMap().get(dataSourceName); protected Statement prepareResource(final String dataSourceName, final String unitSQL, final SQLStatement sqlStatement) throws SQLException { DataSource dataSource = ruleRegistry.getDataSourceMap().get(dataSourceName); Connection connection = getConnection(dataSource); Statement result = connection.createStatement(); ProxyJDBCResource proxyJDBCResource = (ProxyJDBCResource) getJdbcResource(); Loading @@ -72,14 +74,14 @@ public final class JDBCTextBackendHandler extends JDBCBackendHandler { } @Override protected Callable<CommandResponsePackets> newSubmitTask(final Statement statement, final SQLStatement sqlStatement, final String unitSql) { return new JDBCTextExecuteWorker(this, sqlStatement, statement, unitSql); protected Callable<CommandResponsePackets> newSubmitTask(final Statement statement, final SQLStatement sqlStatement, final String unitSQL) { return new JDBCTextExecuteWorker(this, sqlStatement, statement, unitSQL); } @Override protected QueryResult newQueryResult(final CommandResponsePackets packet, final int index) { MySQLPacketQueryResult result = new MySQLPacketQueryResult(packet); if (ProxyMode.MEMORY_STRICTLY == RuleRegistry.getInstance().getProxyMode()) { if (ProxyMode.MEMORY_STRICTLY == ruleRegistry.getProxyMode()) { result.setResultSet(getJdbcResource().getResultSets().get(index)); } else { result.setResultList(getResultLists().get(index)); Loading
sharding-proxy/src/main/java/io/shardingsphere/proxy/config/RuleRegistry.java +1 −1 Original line number Diff line number Diff line Loading @@ -102,7 +102,7 @@ public final class RuleRegistry { * * @param config yaml proxy configuration */ public void init(final OrchestrationProxyConfiguration config) { public synchronized void init(final OrchestrationProxyConfiguration config) { Properties properties = null == config.getShardingRule() ? new Properties() : config.getShardingRule().getProps(); ShardingProperties shardingProperties = new ShardingProperties(null == properties ? new Properties() : properties); showSQL = shardingProperties.getValue(ShardingPropertiesConstant.SQL_SHOW); Loading
sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/text/query/ComQueryPacket.java +1 −1 Original line number Diff line number Diff line Loading @@ -88,7 +88,7 @@ public final class ComQueryPacket extends CommandPacket implements CommandPacket } } catch (final Exception ex) { log.error("doTransactionIntercept Exception", ex); return new CommandResponsePackets(new ErrPacket(1, 0, "", "" + ex.getMessage())); return new CommandResponsePackets(new ErrPacket(1, new SQLException(ex))); } return backendHandler.execute(); } Loading