Loading sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/common/SQLPacketsBackendHandler.java +10 −10 Original line number Diff line number Diff line Loading @@ -76,8 +76,6 @@ public final class SQLPacketsBackendHandler implements BackendHandler { private final DatabaseType databaseType; private final boolean showSQL; private MergedResult mergedResult; private int currentSequenceId; Loading @@ -88,22 +86,24 @@ public final class SQLPacketsBackendHandler implements BackendHandler { private boolean hasMoreResultValueFlag; public SQLPacketsBackendHandler(final CommandPacketRebuilder rebuilder, final DatabaseType databaseType, final boolean showSQL) { private final RuleRegistry ruleRegistry; public SQLPacketsBackendHandler(final CommandPacketRebuilder rebuilder, final DatabaseType databaseType) { this.rebuilder = rebuilder; this.databaseType = databaseType; this.showSQL = showSQL; isMerged = false; hasMoreResultValueFlag = true; ruleRegistry = RuleRegistry.getInstance(); } @Override public CommandResponsePackets execute() { return RuleRegistry.getInstance().isMasterSlaveOnly() ? executeForMasterSlave() : executeForSharding(); return ruleRegistry.isMasterSlaveOnly() ? executeForMasterSlave() : executeForSharding(); } private CommandResponsePackets executeForMasterSlave() { SQLStatement sqlStatement = new SQLJudgeEngine(rebuilder.sql()).judge(); String dataSourceName = new MasterSlaveRouter(RuleRegistry.getInstance().getMasterSlaveRule()).route(sqlStatement.getType()).iterator().next(); String dataSourceName = new MasterSlaveRouter(ruleRegistry.getMasterSlaveRule()).route(sqlStatement.getType()).iterator().next(); synchronizedFuture = new SynchronizedFuture<>(1); MySQLResultCache.getInstance().putFuture(rebuilder.connectionId(), synchronizedFuture); CommandPacket commandPacket = rebuilder.rebuild(rebuilder.sequenceId(), rebuilder.connectionId(), rebuilder.sql()); Loading @@ -119,8 +119,8 @@ public final class SQLPacketsBackendHandler implements BackendHandler { } private CommandResponsePackets executeForSharding() { StatementRoutingEngine routingEngine = new StatementRoutingEngine(RuleRegistry.getInstance().getShardingRule(), RuleRegistry.getInstance().getShardingMetaData(), databaseType, showSQL, RuleRegistry.getInstance().getShardingDataSourceMetaData()); StatementRoutingEngine routingEngine = new StatementRoutingEngine( ruleRegistry.getShardingRule(), ruleRegistry.getShardingMetaData(), databaseType, ruleRegistry.isShowSQL(), ruleRegistry.getShardingDataSourceMetaData()); SQLRouteResult routeResult = routingEngine.route(rebuilder.sql()); if (routeResult.getExecutionUnits().isEmpty()) { return new CommandResponsePackets(new OKPacket(1)); Loading Loading @@ -203,8 +203,8 @@ public final class SQLPacketsBackendHandler implements BackendHandler { private CommandResponsePackets mergeDQLorDAL(final SQLStatement sqlStatement, final List<CommandResponsePackets> packets, final List<QueryResult> queryResults) { try { mergedResult = MergeEngineFactory.newInstance(RuleRegistry.getInstance().getShardingRule(), queryResults, sqlStatement, RuleRegistry.getInstance().getShardingMetaData()).merge(); mergedResult = MergeEngineFactory.newInstance(ruleRegistry.getShardingRule(), queryResults, sqlStatement, ruleRegistry.getShardingMetaData()).merge(); isMerged = true; } catch (final SQLException ex) { return new CommandResponsePackets(new ErrPacket(1, ex)); 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 @@ -59,18 +59,15 @@ public final class JDBCStatementBackendHandler extends JDBCBackendHandler { private final DatabaseType databaseType; private final boolean showSQL; @Getter private final List<ColumnType> columnTypes; private final RuleRegistry ruleRegistry; public JDBCStatementBackendHandler(final List<PreparedStatementParameter> preparedStatementParameters, final int statementId, final DatabaseType databaseType, final boolean showSQL) { public JDBCStatementBackendHandler(final List<PreparedStatementParameter> preparedStatementParameters, final int statementId, final DatabaseType databaseType) { super(PreparedStatementRegistry.getInstance().getSQL(statementId), ProxyJDBCResourceFactory.newPrepareResource()); this.preparedStatementParameters = preparedStatementParameters; this.databaseType = databaseType; this.showSQL = showSQL; columnTypes = new CopyOnWriteArrayList<>(); ruleRegistry = RuleRegistry.getInstance(); } Loading @@ -78,7 +75,7 @@ public final class JDBCStatementBackendHandler extends JDBCBackendHandler { @Override protected SQLRouteResult doShardingRoute() { PreparedStatementRoutingEngine routingEngine = new PreparedStatementRoutingEngine( getSql(), ruleRegistry.getShardingRule(), ruleRegistry.getShardingMetaData(), databaseType, showSQL, ruleRegistry.getShardingDataSourceMetaData()); getSql(), ruleRegistry.getShardingRule(), ruleRegistry.getShardingMetaData(), databaseType, ruleRegistry.isShowSQL(), ruleRegistry.getShardingDataSourceMetaData()); return routingEngine.route(getComStmtExecuteParameters()); } 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 @@ -50,21 +50,18 @@ public final class JDBCTextBackendHandler extends JDBCBackendHandler { private final DatabaseType databaseType; private final boolean showSQL; private final RuleRegistry ruleRegistry; public JDBCTextBackendHandler(final String sql, final DatabaseType databaseType, final boolean showSQL) { public JDBCTextBackendHandler(final String sql, final DatabaseType databaseType) { super(sql, ProxyJDBCResourceFactory.newResource()); this.databaseType = databaseType; this.showSQL = showSQL; ruleRegistry = RuleRegistry.getInstance(); } @Override protected SQLRouteResult doShardingRoute() { StatementRoutingEngine routingEngine = new StatementRoutingEngine( ruleRegistry.getShardingRule(), ruleRegistry.getShardingMetaData(), databaseType, showSQL, ruleRegistry.getShardingDataSourceMetaData()); ruleRegistry.getShardingRule(), ruleRegistry.getShardingMetaData(), databaseType, ruleRegistry.isShowSQL(), ruleRegistry.getShardingDataSourceMetaData()); return routingEngine.route(getSql()); } Loading sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/statement/execute/ComStmtExecutePacket.java +1 −1 Original line number Diff line number Diff line Loading @@ -82,7 +82,7 @@ public final class ComStmtExecutePacket extends CommandPacket { } newParametersBoundFlag = NewParametersBoundFlag.valueOf(mysqlPacketPayload.readInt1()); setParameterList(mysqlPacketPayload, numParameters, newParametersBoundFlag); statementExecuteBackendHandler = new JDBCStatementBackendHandler(preparedStatementParameters, statementId, DatabaseType.MySQL, RuleRegistry.getInstance().isShowSQL()); statementExecuteBackendHandler = new JDBCStatementBackendHandler(preparedStatementParameters, statementId, DatabaseType.MySQL); } private void setParameterList(final MySQLPacketPayload mysqlPacketPayload, final int numParameters, final NewParametersBoundFlag newParametersBoundFlag) { Loading sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/text/fieldlist/ComFieldListPacket.java +5 −8 Original line number Diff line number Diff line Loading @@ -88,9 +88,7 @@ public final class ComFieldListPacket extends CommandPacket implements CommandPa } private BackendHandler getBackendHandler(final String sql) { return RuleRegistry.getInstance().isWithoutJdbc() ? new SQLPacketsBackendHandler(this, DatabaseType.MySQL, RuleRegistry.getInstance().isShowSQL()) : new JDBCTextBackendHandler(sql, DatabaseType.MySQL, RuleRegistry.getInstance().isShowSQL()); return RuleRegistry.getInstance().isWithoutJdbc() ? new SQLPacketsBackendHandler(this, DatabaseType.MySQL) : new JDBCTextBackendHandler(sql, DatabaseType.MySQL); } @Override Loading @@ -104,15 +102,14 @@ public final class ComFieldListPacket extends CommandPacket implements CommandPa @Override public DatabaseProtocolPacket getResultValue() { DatabaseProtocolPacket result = backendHandler.getResultValue(); DatabaseProtocolPacket resultValue = backendHandler.getResultValue(); if (!backendHandler.isHasMoreResultValueFlag()) { return new EofPacket(++currentSequenceId, 0, StatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue()); } if (result instanceof TextResultSetRowPacket) { TextResultSetRowPacket fieldListResponse = (TextResultSetRowPacket) result; if (resultValue instanceof TextResultSetRowPacket) { TextResultSetRowPacket fieldListResponse = (TextResultSetRowPacket) resultValue; String columnName = (String) fieldListResponse.getData().get(0); return new ColumnDefinition41Packet(++currentSequenceId, ShardingConstant.LOGIC_SCHEMA_NAME, table, table, columnName, columnName, 100, ColumnType.MYSQL_TYPE_VARCHAR, 0); return new ColumnDefinition41Packet(++currentSequenceId, ShardingConstant.LOGIC_SCHEMA_NAME, table, table, columnName, columnName, 100, ColumnType.MYSQL_TYPE_VARCHAR, 0); } return new ErrPacket(1, 0, "", ""); } Loading Loading
sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/common/SQLPacketsBackendHandler.java +10 −10 Original line number Diff line number Diff line Loading @@ -76,8 +76,6 @@ public final class SQLPacketsBackendHandler implements BackendHandler { private final DatabaseType databaseType; private final boolean showSQL; private MergedResult mergedResult; private int currentSequenceId; Loading @@ -88,22 +86,24 @@ public final class SQLPacketsBackendHandler implements BackendHandler { private boolean hasMoreResultValueFlag; public SQLPacketsBackendHandler(final CommandPacketRebuilder rebuilder, final DatabaseType databaseType, final boolean showSQL) { private final RuleRegistry ruleRegistry; public SQLPacketsBackendHandler(final CommandPacketRebuilder rebuilder, final DatabaseType databaseType) { this.rebuilder = rebuilder; this.databaseType = databaseType; this.showSQL = showSQL; isMerged = false; hasMoreResultValueFlag = true; ruleRegistry = RuleRegistry.getInstance(); } @Override public CommandResponsePackets execute() { return RuleRegistry.getInstance().isMasterSlaveOnly() ? executeForMasterSlave() : executeForSharding(); return ruleRegistry.isMasterSlaveOnly() ? executeForMasterSlave() : executeForSharding(); } private CommandResponsePackets executeForMasterSlave() { SQLStatement sqlStatement = new SQLJudgeEngine(rebuilder.sql()).judge(); String dataSourceName = new MasterSlaveRouter(RuleRegistry.getInstance().getMasterSlaveRule()).route(sqlStatement.getType()).iterator().next(); String dataSourceName = new MasterSlaveRouter(ruleRegistry.getMasterSlaveRule()).route(sqlStatement.getType()).iterator().next(); synchronizedFuture = new SynchronizedFuture<>(1); MySQLResultCache.getInstance().putFuture(rebuilder.connectionId(), synchronizedFuture); CommandPacket commandPacket = rebuilder.rebuild(rebuilder.sequenceId(), rebuilder.connectionId(), rebuilder.sql()); Loading @@ -119,8 +119,8 @@ public final class SQLPacketsBackendHandler implements BackendHandler { } private CommandResponsePackets executeForSharding() { StatementRoutingEngine routingEngine = new StatementRoutingEngine(RuleRegistry.getInstance().getShardingRule(), RuleRegistry.getInstance().getShardingMetaData(), databaseType, showSQL, RuleRegistry.getInstance().getShardingDataSourceMetaData()); StatementRoutingEngine routingEngine = new StatementRoutingEngine( ruleRegistry.getShardingRule(), ruleRegistry.getShardingMetaData(), databaseType, ruleRegistry.isShowSQL(), ruleRegistry.getShardingDataSourceMetaData()); SQLRouteResult routeResult = routingEngine.route(rebuilder.sql()); if (routeResult.getExecutionUnits().isEmpty()) { return new CommandResponsePackets(new OKPacket(1)); Loading Loading @@ -203,8 +203,8 @@ public final class SQLPacketsBackendHandler implements BackendHandler { private CommandResponsePackets mergeDQLorDAL(final SQLStatement sqlStatement, final List<CommandResponsePackets> packets, final List<QueryResult> queryResults) { try { mergedResult = MergeEngineFactory.newInstance(RuleRegistry.getInstance().getShardingRule(), queryResults, sqlStatement, RuleRegistry.getInstance().getShardingMetaData()).merge(); mergedResult = MergeEngineFactory.newInstance(ruleRegistry.getShardingRule(), queryResults, sqlStatement, ruleRegistry.getShardingMetaData()).merge(); isMerged = true; } catch (final SQLException ex) { return new CommandResponsePackets(new ErrPacket(1, ex)); 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 @@ -59,18 +59,15 @@ public final class JDBCStatementBackendHandler extends JDBCBackendHandler { private final DatabaseType databaseType; private final boolean showSQL; @Getter private final List<ColumnType> columnTypes; private final RuleRegistry ruleRegistry; public JDBCStatementBackendHandler(final List<PreparedStatementParameter> preparedStatementParameters, final int statementId, final DatabaseType databaseType, final boolean showSQL) { public JDBCStatementBackendHandler(final List<PreparedStatementParameter> preparedStatementParameters, final int statementId, final DatabaseType databaseType) { super(PreparedStatementRegistry.getInstance().getSQL(statementId), ProxyJDBCResourceFactory.newPrepareResource()); this.preparedStatementParameters = preparedStatementParameters; this.databaseType = databaseType; this.showSQL = showSQL; columnTypes = new CopyOnWriteArrayList<>(); ruleRegistry = RuleRegistry.getInstance(); } Loading @@ -78,7 +75,7 @@ public final class JDBCStatementBackendHandler extends JDBCBackendHandler { @Override protected SQLRouteResult doShardingRoute() { PreparedStatementRoutingEngine routingEngine = new PreparedStatementRoutingEngine( getSql(), ruleRegistry.getShardingRule(), ruleRegistry.getShardingMetaData(), databaseType, showSQL, ruleRegistry.getShardingDataSourceMetaData()); getSql(), ruleRegistry.getShardingRule(), ruleRegistry.getShardingMetaData(), databaseType, ruleRegistry.isShowSQL(), ruleRegistry.getShardingDataSourceMetaData()); return routingEngine.route(getComStmtExecuteParameters()); } 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 @@ -50,21 +50,18 @@ public final class JDBCTextBackendHandler extends JDBCBackendHandler { private final DatabaseType databaseType; private final boolean showSQL; private final RuleRegistry ruleRegistry; public JDBCTextBackendHandler(final String sql, final DatabaseType databaseType, final boolean showSQL) { public JDBCTextBackendHandler(final String sql, final DatabaseType databaseType) { super(sql, ProxyJDBCResourceFactory.newResource()); this.databaseType = databaseType; this.showSQL = showSQL; ruleRegistry = RuleRegistry.getInstance(); } @Override protected SQLRouteResult doShardingRoute() { StatementRoutingEngine routingEngine = new StatementRoutingEngine( ruleRegistry.getShardingRule(), ruleRegistry.getShardingMetaData(), databaseType, showSQL, ruleRegistry.getShardingDataSourceMetaData()); ruleRegistry.getShardingRule(), ruleRegistry.getShardingMetaData(), databaseType, ruleRegistry.isShowSQL(), ruleRegistry.getShardingDataSourceMetaData()); return routingEngine.route(getSql()); } Loading
sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/statement/execute/ComStmtExecutePacket.java +1 −1 Original line number Diff line number Diff line Loading @@ -82,7 +82,7 @@ public final class ComStmtExecutePacket extends CommandPacket { } newParametersBoundFlag = NewParametersBoundFlag.valueOf(mysqlPacketPayload.readInt1()); setParameterList(mysqlPacketPayload, numParameters, newParametersBoundFlag); statementExecuteBackendHandler = new JDBCStatementBackendHandler(preparedStatementParameters, statementId, DatabaseType.MySQL, RuleRegistry.getInstance().isShowSQL()); statementExecuteBackendHandler = new JDBCStatementBackendHandler(preparedStatementParameters, statementId, DatabaseType.MySQL); } private void setParameterList(final MySQLPacketPayload mysqlPacketPayload, final int numParameters, final NewParametersBoundFlag newParametersBoundFlag) { Loading
sharding-proxy/src/main/java/io/shardingsphere/proxy/transport/mysql/packet/command/text/fieldlist/ComFieldListPacket.java +5 −8 Original line number Diff line number Diff line Loading @@ -88,9 +88,7 @@ public final class ComFieldListPacket extends CommandPacket implements CommandPa } private BackendHandler getBackendHandler(final String sql) { return RuleRegistry.getInstance().isWithoutJdbc() ? new SQLPacketsBackendHandler(this, DatabaseType.MySQL, RuleRegistry.getInstance().isShowSQL()) : new JDBCTextBackendHandler(sql, DatabaseType.MySQL, RuleRegistry.getInstance().isShowSQL()); return RuleRegistry.getInstance().isWithoutJdbc() ? new SQLPacketsBackendHandler(this, DatabaseType.MySQL) : new JDBCTextBackendHandler(sql, DatabaseType.MySQL); } @Override Loading @@ -104,15 +102,14 @@ public final class ComFieldListPacket extends CommandPacket implements CommandPa @Override public DatabaseProtocolPacket getResultValue() { DatabaseProtocolPacket result = backendHandler.getResultValue(); DatabaseProtocolPacket resultValue = backendHandler.getResultValue(); if (!backendHandler.isHasMoreResultValueFlag()) { return new EofPacket(++currentSequenceId, 0, StatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue()); } if (result instanceof TextResultSetRowPacket) { TextResultSetRowPacket fieldListResponse = (TextResultSetRowPacket) result; if (resultValue instanceof TextResultSetRowPacket) { TextResultSetRowPacket fieldListResponse = (TextResultSetRowPacket) resultValue; String columnName = (String) fieldListResponse.getData().get(0); return new ColumnDefinition41Packet(++currentSequenceId, ShardingConstant.LOGIC_SCHEMA_NAME, table, table, columnName, columnName, 100, ColumnType.MYSQL_TYPE_VARCHAR, 0); return new ColumnDefinition41Packet(++currentSequenceId, ShardingConstant.LOGIC_SCHEMA_NAME, table, table, columnName, columnName, 100, ColumnType.MYSQL_TYPE_VARCHAR, 0); } return new ErrPacket(1, 0, "", ""); } Loading