Loading sharding-core/src/main/java/io/shardingsphere/core/routing/SQLRouteResult.java +4 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,10 @@ public final class SQLRouteResult { private final Set<SQLExecutionUnit> executionUnits = new LinkedHashSet<>(); public SQLRouteResult(final SQLStatement sqlStatement) { this(sqlStatement, null); } /** * whether SQLRouteResult can refresh table metadata. * Loading sharding-core/src/main/java/io/shardingsphere/core/routing/router/sharding/DatabaseHintSQLRouter.java +1 −1 Original line number Diff line number Diff line Loading @@ -55,7 +55,7 @@ public final class DatabaseHintSQLRouter implements ShardingRouter { @Override // TODO insert SQL need parse gen key public SQLRouteResult route(final String logicSQL, final List<Object> parameters, final SQLStatement sqlStatement) { SQLRouteResult result = new SQLRouteResult(sqlStatement, null); SQLRouteResult result = new SQLRouteResult(sqlStatement); RoutingResult routingResult = new DatabaseHintRoutingEngine( shardingRule.getShardingDataSourceNames().getDataSourceNames(), (HintShardingStrategy) shardingRule.getDefaultDatabaseShardingStrategy()).route(); for (TableUnit each : routingResult.getTableUnits().getTableUnits()) { Loading sharding-core/src/main/java/io/shardingsphere/core/routing/router/sharding/ParsingSQLRouter.java +3 −3 Original line number Diff line number Diff line Loading @@ -96,7 +96,7 @@ public final class ParsingSQLRouter implements ShardingRouter { if (null != generatedKey) { setGeneratedKeys(result, generatedKey); } RoutingResult routingResult = route(parameters, sqlStatement, shardingConditions); RoutingResult routingResult = route(sqlStatement, shardingConditions); SQLRewriteEngine rewriteEngine = new SQLRewriteEngine(shardingRule, logicSQL, databaseType, sqlStatement, shardingConditions, parameters); boolean isSingleRouting = routingResult.isSingleRouting(); if (sqlStatement instanceof SelectStatement && null != ((SelectStatement) sqlStatement).getLimit()) { Loading @@ -112,7 +112,7 @@ public final class ParsingSQLRouter implements ShardingRouter { return result; } private RoutingResult route(final List<Object> parameters, final SQLStatement sqlStatement, final ShardingConditions shardingConditions) { private RoutingResult route(final SQLStatement sqlStatement, final ShardingConditions shardingConditions) { Collection<String> tableNames = sqlStatement.getTables().getTableNames(); RoutingEngine routingEngine; if (sqlStatement instanceof UseStatement) { Loading @@ -135,7 +135,7 @@ public final class ParsingSQLRouter implements ShardingRouter { routingEngine = new StandardRoutingEngine(shardingRule, tableNames.iterator().next(), shardingConditions); } else { // TODO config for cartesian set routingEngine = new ComplexRoutingEngine(shardingRule, parameters, tableNames, shardingConditions); routingEngine = new ComplexRoutingEngine(shardingRule, tableNames, shardingConditions); } return routingEngine.route(); } Loading sharding-core/src/main/java/io/shardingsphere/core/routing/type/complex/ComplexRoutingEngine.java +0 −3 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ import lombok.extern.slf4j.Slf4j; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.TreeSet; /** Loading @@ -48,8 +47,6 @@ public final class ComplexRoutingEngine implements RoutingEngine { private final ShardingRule shardingRule; private final List<Object> parameters; private final Collection<String> logicTables; private final ShardingConditions shardingConditions; Loading sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/common/jdbc/JDBCBackendHandler.java +11 −11 Original line number Diff line number Diff line Loading @@ -75,6 +75,8 @@ public abstract class JDBCBackendHandler implements BackendHandler { private final String sql; private final BaseJDBCResource jdbcResource; private MergedResult mergedResult; private int currentSequenceId; Loading @@ -86,25 +88,23 @@ public abstract class JDBCBackendHandler implements BackendHandler { private boolean hasMoreResultValueFlag; private final BaseJDBCResource jdbcResource; private final List<ResultList> resultLists; private final RuleRegistry ruleRegistry; private final List<ResultList> resultLists; public JDBCBackendHandler(final String sql, final BaseJDBCResource jdbcResource) { this.sql = sql; this.jdbcResource = jdbcResource; isMerged = false; hasMoreResultValueFlag = true; this.jdbcResource = jdbcResource; ruleRegistry = RuleRegistry.getInstance(); resultLists = new CopyOnWriteArrayList<>(); ruleRegistry = RuleRegistry.getInstance(); } @Override public CommandResponsePackets execute() { try { return doExecuteInternal(ruleRegistry.isMasterSlaveOnly() ? doMasterSlaveRoute() : doSqlShardingRoute()); return doExecuteInternal(ruleRegistry.isMasterSlaveOnly() ? doMasterSlaveRoute() : doShardingRoute()); } catch (final Exception ex) { log.error("ExecuteBackendHandler", ex); return new CommandResponsePackets(new ErrPacket(1, new SQLException(ex))); Loading Loading @@ -139,14 +139,14 @@ public abstract class JDBCBackendHandler implements BackendHandler { private SQLRouteResult doMasterSlaveRoute() { SQLStatement sqlStatement = new SQLJudgeEngine(sql).judge(); SQLRouteResult result = new SQLRouteResult(sqlStatement, null); String dataSourceName = new MasterSlaveRouter(ruleRegistry.getMasterSlaveRule()).route(sqlStatement.getType()).iterator().next(); SQLUnit sqlUnit = new SQLUnit(sql, Collections.<List<Object>>emptyList()); result.getExecutionUnits().add(new SQLExecutionUnit(dataSourceName, sqlUnit)); SQLRouteResult result = new SQLRouteResult(sqlStatement); for (String each : new MasterSlaveRouter(ruleRegistry.getMasterSlaveRule()).route(sqlStatement.getType())) { result.getExecutionUnits().add(new SQLExecutionUnit(each, new SQLUnit(sql, Collections.<List<Object>>emptyList()))); } return result; } protected abstract SQLRouteResult doSqlShardingRoute(); protected abstract SQLRouteResult doShardingRoute(); protected abstract Statement prepareResource(String dataSourceName, String unitSQL, SQLStatement sqlStatement) throws SQLException; Loading Loading
sharding-core/src/main/java/io/shardingsphere/core/routing/SQLRouteResult.java +4 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,10 @@ public final class SQLRouteResult { private final Set<SQLExecutionUnit> executionUnits = new LinkedHashSet<>(); public SQLRouteResult(final SQLStatement sqlStatement) { this(sqlStatement, null); } /** * whether SQLRouteResult can refresh table metadata. * Loading
sharding-core/src/main/java/io/shardingsphere/core/routing/router/sharding/DatabaseHintSQLRouter.java +1 −1 Original line number Diff line number Diff line Loading @@ -55,7 +55,7 @@ public final class DatabaseHintSQLRouter implements ShardingRouter { @Override // TODO insert SQL need parse gen key public SQLRouteResult route(final String logicSQL, final List<Object> parameters, final SQLStatement sqlStatement) { SQLRouteResult result = new SQLRouteResult(sqlStatement, null); SQLRouteResult result = new SQLRouteResult(sqlStatement); RoutingResult routingResult = new DatabaseHintRoutingEngine( shardingRule.getShardingDataSourceNames().getDataSourceNames(), (HintShardingStrategy) shardingRule.getDefaultDatabaseShardingStrategy()).route(); for (TableUnit each : routingResult.getTableUnits().getTableUnits()) { Loading
sharding-core/src/main/java/io/shardingsphere/core/routing/router/sharding/ParsingSQLRouter.java +3 −3 Original line number Diff line number Diff line Loading @@ -96,7 +96,7 @@ public final class ParsingSQLRouter implements ShardingRouter { if (null != generatedKey) { setGeneratedKeys(result, generatedKey); } RoutingResult routingResult = route(parameters, sqlStatement, shardingConditions); RoutingResult routingResult = route(sqlStatement, shardingConditions); SQLRewriteEngine rewriteEngine = new SQLRewriteEngine(shardingRule, logicSQL, databaseType, sqlStatement, shardingConditions, parameters); boolean isSingleRouting = routingResult.isSingleRouting(); if (sqlStatement instanceof SelectStatement && null != ((SelectStatement) sqlStatement).getLimit()) { Loading @@ -112,7 +112,7 @@ public final class ParsingSQLRouter implements ShardingRouter { return result; } private RoutingResult route(final List<Object> parameters, final SQLStatement sqlStatement, final ShardingConditions shardingConditions) { private RoutingResult route(final SQLStatement sqlStatement, final ShardingConditions shardingConditions) { Collection<String> tableNames = sqlStatement.getTables().getTableNames(); RoutingEngine routingEngine; if (sqlStatement instanceof UseStatement) { Loading @@ -135,7 +135,7 @@ public final class ParsingSQLRouter implements ShardingRouter { routingEngine = new StandardRoutingEngine(shardingRule, tableNames.iterator().next(), shardingConditions); } else { // TODO config for cartesian set routingEngine = new ComplexRoutingEngine(shardingRule, parameters, tableNames, shardingConditions); routingEngine = new ComplexRoutingEngine(shardingRule, tableNames, shardingConditions); } return routingEngine.route(); } Loading
sharding-core/src/main/java/io/shardingsphere/core/routing/type/complex/ComplexRoutingEngine.java +0 −3 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ import lombok.extern.slf4j.Slf4j; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.TreeSet; /** Loading @@ -48,8 +47,6 @@ public final class ComplexRoutingEngine implements RoutingEngine { private final ShardingRule shardingRule; private final List<Object> parameters; private final Collection<String> logicTables; private final ShardingConditions shardingConditions; Loading
sharding-proxy/src/main/java/io/shardingsphere/proxy/backend/common/jdbc/JDBCBackendHandler.java +11 −11 Original line number Diff line number Diff line Loading @@ -75,6 +75,8 @@ public abstract class JDBCBackendHandler implements BackendHandler { private final String sql; private final BaseJDBCResource jdbcResource; private MergedResult mergedResult; private int currentSequenceId; Loading @@ -86,25 +88,23 @@ public abstract class JDBCBackendHandler implements BackendHandler { private boolean hasMoreResultValueFlag; private final BaseJDBCResource jdbcResource; private final List<ResultList> resultLists; private final RuleRegistry ruleRegistry; private final List<ResultList> resultLists; public JDBCBackendHandler(final String sql, final BaseJDBCResource jdbcResource) { this.sql = sql; this.jdbcResource = jdbcResource; isMerged = false; hasMoreResultValueFlag = true; this.jdbcResource = jdbcResource; ruleRegistry = RuleRegistry.getInstance(); resultLists = new CopyOnWriteArrayList<>(); ruleRegistry = RuleRegistry.getInstance(); } @Override public CommandResponsePackets execute() { try { return doExecuteInternal(ruleRegistry.isMasterSlaveOnly() ? doMasterSlaveRoute() : doSqlShardingRoute()); return doExecuteInternal(ruleRegistry.isMasterSlaveOnly() ? doMasterSlaveRoute() : doShardingRoute()); } catch (final Exception ex) { log.error("ExecuteBackendHandler", ex); return new CommandResponsePackets(new ErrPacket(1, new SQLException(ex))); Loading Loading @@ -139,14 +139,14 @@ public abstract class JDBCBackendHandler implements BackendHandler { private SQLRouteResult doMasterSlaveRoute() { SQLStatement sqlStatement = new SQLJudgeEngine(sql).judge(); SQLRouteResult result = new SQLRouteResult(sqlStatement, null); String dataSourceName = new MasterSlaveRouter(ruleRegistry.getMasterSlaveRule()).route(sqlStatement.getType()).iterator().next(); SQLUnit sqlUnit = new SQLUnit(sql, Collections.<List<Object>>emptyList()); result.getExecutionUnits().add(new SQLExecutionUnit(dataSourceName, sqlUnit)); SQLRouteResult result = new SQLRouteResult(sqlStatement); for (String each : new MasterSlaveRouter(ruleRegistry.getMasterSlaveRule()).route(sqlStatement.getType())) { result.getExecutionUnits().add(new SQLExecutionUnit(each, new SQLUnit(sql, Collections.<List<Object>>emptyList()))); } return result; } protected abstract SQLRouteResult doSqlShardingRoute(); protected abstract SQLRouteResult doShardingRoute(); protected abstract Statement prepareResource(String dataSourceName, String unitSQL, SQLStatement sqlStatement) throws SQLException; Loading