未验证 提交 09753004 编写于 作者: L Liang Zhang 提交者: GitHub

Use standard RouteContext and remove ShardingRouteContext for special interface (#4925)

* Add RouteResult.originalDataNodes

* remove ShardingRouteContext

* remove ShardingCondition.dataNodes
上级 ed614ad0
...@@ -27,7 +27,6 @@ import org.apache.shardingsphere.masterslave.route.engine.MasterSlaveRouteDecora ...@@ -27,7 +27,6 @@ import org.apache.shardingsphere.masterslave.route.engine.MasterSlaveRouteDecora
import org.apache.shardingsphere.sharding.rewrite.context.ShardingSQLRewriteContextDecorator; import org.apache.shardingsphere.sharding.rewrite.context.ShardingSQLRewriteContextDecorator;
import org.apache.shardingsphere.sharding.rewrite.engine.ShardingSQLRewriteEngine; import org.apache.shardingsphere.sharding.rewrite.engine.ShardingSQLRewriteEngine;
import org.apache.shardingsphere.sharding.route.engine.ShardingRouteDecorator; import org.apache.shardingsphere.sharding.route.engine.ShardingRouteDecorator;
import org.apache.shardingsphere.sharding.route.engine.context.ShardingRouteContext;
import org.apache.shardingsphere.sharding.route.hook.SPIRoutingHook; import org.apache.shardingsphere.sharding.route.hook.SPIRoutingHook;
import org.apache.shardingsphere.sql.parser.SQLParserEngine; import org.apache.shardingsphere.sql.parser.SQLParserEngine;
import org.apache.shardingsphere.underlying.common.config.properties.ConfigurationProperties; import org.apache.shardingsphere.underlying.common.config.properties.ConfigurationProperties;
...@@ -83,9 +82,9 @@ public abstract class BaseShardingEngine { ...@@ -83,9 +82,9 @@ public abstract class BaseShardingEngine {
*/ */
public ExecutionContext shard(final String sql, final List<Object> parameters) { public ExecutionContext shard(final String sql, final List<Object> parameters) {
List<Object> clonedParameters = cloneParameters(parameters); List<Object> clonedParameters = cloneParameters(parameters);
ShardingRouteContext shardingRouteContext = executeRoute(sql, clonedParameters); RouteContext routeContext = executeRoute(sql, clonedParameters);
ExecutionContext result = new ExecutionContext(shardingRouteContext.getSqlStatementContext()); ExecutionContext result = new ExecutionContext(routeContext.getSqlStatementContext());
result.getExecutionUnits().addAll(HintManager.isDatabaseShardingOnly() ? convert(sql, clonedParameters, shardingRouteContext) : rewriteAndConvert(sql, clonedParameters, shardingRouteContext)); result.getExecutionUnits().addAll(HintManager.isDatabaseShardingOnly() ? convert(sql, clonedParameters, routeContext) : rewriteAndConvert(sql, clonedParameters, routeContext));
if (properties.<Boolean>getValue(ConfigurationPropertyKey.SQL_SHOW)) { if (properties.<Boolean>getValue(ConfigurationPropertyKey.SQL_SHOW)) {
ShardingSQLLogger.logSQL(sql, properties.<Boolean>getValue(ConfigurationPropertyKey.SQL_SIMPLE), result.getSqlStatementContext(), result.getExecutionUnits()); ShardingSQLLogger.logSQL(sql, properties.<Boolean>getValue(ConfigurationPropertyKey.SQL_SIMPLE), result.getSqlStatementContext(), result.getExecutionUnits());
} }
...@@ -96,11 +95,11 @@ public abstract class BaseShardingEngine { ...@@ -96,11 +95,11 @@ public abstract class BaseShardingEngine {
protected abstract RouteContext route(DataNodeRouter dataNodeRouter, String sql, List<Object> parameters); protected abstract RouteContext route(DataNodeRouter dataNodeRouter, String sql, List<Object> parameters);
private ShardingRouteContext executeRoute(final String sql, final List<Object> clonedParameters) { private RouteContext executeRoute(final String sql, final List<Object> clonedParameters) {
routingHook.start(sql); routingHook.start(sql);
try { try {
registerRouteDecorator(); registerRouteDecorator();
ShardingRouteContext result = (ShardingRouteContext) route(dataNodeRouter, sql, clonedParameters); RouteContext result = route(dataNodeRouter, sql, clonedParameters);
routingHook.finishSuccess(result, metaData.getSchema()); routingHook.finishSuccess(result, metaData.getSchema());
return result; return result;
// CHECKSTYLE:OFF // CHECKSTYLE:OFF
...@@ -118,28 +117,28 @@ public abstract class BaseShardingEngine { ...@@ -118,28 +117,28 @@ public abstract class BaseShardingEngine {
} }
} }
private Collection<ExecutionUnit> convert(final String sql, final List<Object> parameters, final ShardingRouteContext shardingRouteContext) { private Collection<ExecutionUnit> convert(final String sql, final List<Object> parameters, final RouteContext routeContext) {
Collection<ExecutionUnit> result = new LinkedHashSet<>(); Collection<ExecutionUnit> result = new LinkedHashSet<>();
for (RouteUnit each : shardingRouteContext.getRouteResult().getRouteUnits()) { for (RouteUnit each : routeContext.getRouteResult().getRouteUnits()) {
result.add(new ExecutionUnit(each.getDataSourceMapper().getActualName(), new SQLUnit(sql, parameters))); result.add(new ExecutionUnit(each.getDataSourceMapper().getActualName(), new SQLUnit(sql, parameters)));
} }
return result; return result;
} }
private Collection<ExecutionUnit> rewriteAndConvert(final String sql, final List<Object> parameters, final ShardingRouteContext shardingRouteContext) { private Collection<ExecutionUnit> rewriteAndConvert(final String sql, final List<Object> parameters, final RouteContext routeContext) {
Collection<ExecutionUnit> result = new LinkedHashSet<>(); Collection<ExecutionUnit> result = new LinkedHashSet<>();
registerRewriteDecorator(shardingRouteContext); registerRewriteDecorator(routeContext);
SQLRewriteContext sqlRewriteContext = sqlRewriteEntry.createSQLRewriteContext(sql, parameters, shardingRouteContext.getSqlStatementContext()); SQLRewriteContext sqlRewriteContext = sqlRewriteEntry.createSQLRewriteContext(sql, parameters, routeContext.getSqlStatementContext());
for (RouteUnit each : shardingRouteContext.getRouteResult().getRouteUnits()) { for (RouteUnit each : routeContext.getRouteResult().getRouteUnits()) {
ShardingSQLRewriteEngine sqlRewriteEngine = new ShardingSQLRewriteEngine(shardingRule, shardingRouteContext.getShardingConditions(), each); ShardingSQLRewriteEngine sqlRewriteEngine = new ShardingSQLRewriteEngine(shardingRule, routeContext.getRouteResult().getOriginalDataNodes(), each);
SQLRewriteResult sqlRewriteResult = sqlRewriteEngine.rewrite(sqlRewriteContext); SQLRewriteResult sqlRewriteResult = sqlRewriteEngine.rewrite(sqlRewriteContext);
result.add(new ExecutionUnit(each.getDataSourceMapper().getActualName(), new SQLUnit(sqlRewriteResult.getSql(), sqlRewriteResult.getParameters()))); result.add(new ExecutionUnit(each.getDataSourceMapper().getActualName(), new SQLUnit(sqlRewriteResult.getSql(), sqlRewriteResult.getParameters())));
} }
return result; return result;
} }
private void registerRewriteDecorator(final ShardingRouteContext shardingRouteContext) { private void registerRewriteDecorator(final RouteContext routeContext) {
sqlRewriteEntry.registerDecorator(shardingRule, new ShardingSQLRewriteContextDecorator(shardingRouteContext)); sqlRewriteEntry.registerDecorator(shardingRule, new ShardingSQLRewriteContextDecorator(routeContext));
if (!shardingRule.getEncryptRule().getEncryptTableNames().isEmpty()) { if (!shardingRule.getEncryptRule().getEncryptTableNames().isEmpty()) {
sqlRewriteEntry.registerDecorator(shardingRule.getEncryptRule(), new EncryptSQLRewriteContextDecorator()); sqlRewriteEntry.registerDecorator(shardingRule.getEncryptRule(), new EncryptSQLRewriteContextDecorator());
} }
......
...@@ -20,14 +20,13 @@ package org.apache.shardingsphere.core.shard; ...@@ -20,14 +20,13 @@ package org.apache.shardingsphere.core.shard;
import lombok.Getter; import lombok.Getter;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.api.hint.HintManager; import org.apache.shardingsphere.api.hint.HintManager;
import org.apache.shardingsphere.sharding.route.engine.condition.ShardingConditions;
import org.apache.shardingsphere.sharding.route.engine.context.ShardingRouteContext;
import org.apache.shardingsphere.sql.parser.binder.statement.CommonSQLStatementContext; import org.apache.shardingsphere.sql.parser.binder.statement.CommonSQLStatementContext;
import org.apache.shardingsphere.sql.parser.sql.statement.dal.dialect.postgresql.ShowStatement; import org.apache.shardingsphere.sql.parser.sql.statement.dal.dialect.postgresql.ShowStatement;
import org.apache.shardingsphere.underlying.common.config.properties.ConfigurationPropertyKey;
import org.apache.shardingsphere.underlying.common.config.properties.ConfigurationProperties; import org.apache.shardingsphere.underlying.common.config.properties.ConfigurationProperties;
import org.apache.shardingsphere.underlying.common.config.properties.ConfigurationPropertyKey;
import org.apache.shardingsphere.underlying.executor.context.ExecutionContext; import org.apache.shardingsphere.underlying.executor.context.ExecutionContext;
import org.apache.shardingsphere.underlying.executor.context.ExecutionUnit; import org.apache.shardingsphere.underlying.executor.context.ExecutionUnit;
import org.apache.shardingsphere.underlying.route.context.RouteContext;
import org.apache.shardingsphere.underlying.route.context.RouteMapper; import org.apache.shardingsphere.underlying.route.context.RouteMapper;
import org.apache.shardingsphere.underlying.route.context.RouteResult; import org.apache.shardingsphere.underlying.route.context.RouteResult;
import org.apache.shardingsphere.underlying.route.context.RouteUnit; import org.apache.shardingsphere.underlying.route.context.RouteUnit;
...@@ -55,10 +54,10 @@ public abstract class BaseShardingEngineTest { ...@@ -55,10 +54,10 @@ public abstract class BaseShardingEngineTest {
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
protected final ShardingRouteContext createSQLRouteContext() { protected final RouteContext createSQLRouteContext() {
RouteResult routeResult = new RouteResult(); RouteResult routeResult = new RouteResult();
routeResult.getRouteUnits().add(new RouteUnit(new RouteMapper("ds", "ds"), Collections.emptyList())); routeResult.getRouteUnits().add(new RouteUnit(new RouteMapper("ds", "ds"), Collections.emptyList()));
return new ShardingRouteContext(new CommonSQLStatementContext(new ShowStatement()), Collections.emptyList(), routeResult, new ShardingConditions(Collections.emptyList())); return new RouteContext(new CommonSQLStatementContext(new ShowStatement()), Collections.emptyList(), routeResult);
} }
protected final void assertExecutionContext(final ExecutionContext actual) { protected final void assertExecutionContext(final ExecutionContext actual) {
......
...@@ -17,9 +17,9 @@ ...@@ -17,9 +17,9 @@
package org.apache.shardingsphere.core.shard.fixture; package org.apache.shardingsphere.core.shard.fixture;
import org.apache.shardingsphere.sql.parser.binder.metadata.schema.SchemaMetaData;
import org.apache.shardingsphere.sharding.route.engine.context.ShardingRouteContext;
import org.apache.shardingsphere.sharding.route.hook.RoutingHook; import org.apache.shardingsphere.sharding.route.hook.RoutingHook;
import org.apache.shardingsphere.sql.parser.binder.metadata.schema.SchemaMetaData;
import org.apache.shardingsphere.underlying.route.context.RouteContext;
/** /**
* Routing hook fixture. * Routing hook fixture.
...@@ -31,7 +31,7 @@ public final class RoutingHookFixture implements RoutingHook { ...@@ -31,7 +31,7 @@ public final class RoutingHookFixture implements RoutingHook {
} }
@Override @Override
public void finishSuccess(final ShardingRouteContext shardingRouteContext, final SchemaMetaData schemaMetaData) { public void finishSuccess(final RouteContext routeContext, final SchemaMetaData schemaMetaData) {
} }
@Override @Override
......
...@@ -17,17 +17,17 @@ ...@@ -17,17 +17,17 @@
package org.apache.shardingsphere.sharding.rewrite.aware; package org.apache.shardingsphere.sharding.rewrite.aware;
import org.apache.shardingsphere.sharding.route.engine.context.ShardingRouteContext; import org.apache.shardingsphere.underlying.route.context.RouteContext;
/** /**
* Sharding route context aware. * Route context aware.
*/ */
public interface ShardingRouteContextAware { public interface RouteContextAware {
/** /**
* Set sharding route context. * Set route context.
* *
* @param shardingRouteContext sharding route context * @param routeContext route context
*/ */
void setShardingRouteContext(ShardingRouteContext shardingRouteContext); void setRouteContext(RouteContext routeContext);
} }
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sharding.rewrite.context; package org.apache.shardingsphere.sharding.rewrite.context;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.sharding.route.engine.context.ShardingRouteContext;
import org.apache.shardingsphere.core.rule.ShardingRule; import org.apache.shardingsphere.core.rule.ShardingRule;
import org.apache.shardingsphere.sharding.rewrite.parameter.ShardingParameterRewriterBuilder; import org.apache.shardingsphere.sharding.rewrite.parameter.ShardingParameterRewriterBuilder;
import org.apache.shardingsphere.sharding.rewrite.token.pojo.impl.ShardingTokenGenerateBuilder; import org.apache.shardingsphere.sharding.rewrite.token.pojo.impl.ShardingTokenGenerateBuilder;
...@@ -26,6 +25,7 @@ import org.apache.shardingsphere.underlying.common.config.properties.Configurati ...@@ -26,6 +25,7 @@ import org.apache.shardingsphere.underlying.common.config.properties.Configurati
import org.apache.shardingsphere.underlying.rewrite.context.SQLRewriteContext; import org.apache.shardingsphere.underlying.rewrite.context.SQLRewriteContext;
import org.apache.shardingsphere.underlying.rewrite.context.SQLRewriteContextDecorator; import org.apache.shardingsphere.underlying.rewrite.context.SQLRewriteContextDecorator;
import org.apache.shardingsphere.underlying.rewrite.parameter.rewriter.ParameterRewriter; import org.apache.shardingsphere.underlying.rewrite.parameter.rewriter.ParameterRewriter;
import org.apache.shardingsphere.underlying.route.context.RouteContext;
/** /**
* SQL rewrite context decorator for sharding. * SQL rewrite context decorator for sharding.
...@@ -33,16 +33,16 @@ import org.apache.shardingsphere.underlying.rewrite.parameter.rewriter.Parameter ...@@ -33,16 +33,16 @@ import org.apache.shardingsphere.underlying.rewrite.parameter.rewriter.Parameter
@RequiredArgsConstructor @RequiredArgsConstructor
public final class ShardingSQLRewriteContextDecorator implements SQLRewriteContextDecorator<ShardingRule> { public final class ShardingSQLRewriteContextDecorator implements SQLRewriteContextDecorator<ShardingRule> {
private final ShardingRouteContext shardingRouteContext; private final RouteContext routeContext;
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public void decorate(final ShardingRule shardingRule, final ConfigurationProperties properties, final SQLRewriteContext sqlRewriteContext) { public void decorate(final ShardingRule shardingRule, final ConfigurationProperties properties, final SQLRewriteContext sqlRewriteContext) {
for (ParameterRewriter each : new ShardingParameterRewriterBuilder(shardingRule, shardingRouteContext).getParameterRewriters(sqlRewriteContext.getSchemaMetaData())) { for (ParameterRewriter each : new ShardingParameterRewriterBuilder(shardingRule, routeContext).getParameterRewriters(sqlRewriteContext.getSchemaMetaData())) {
if (!sqlRewriteContext.getParameters().isEmpty() && each.isNeedRewrite(sqlRewriteContext.getSqlStatementContext())) { if (!sqlRewriteContext.getParameters().isEmpty() && each.isNeedRewrite(sqlRewriteContext.getSqlStatementContext())) {
each.rewrite(sqlRewriteContext.getParameterBuilder(), sqlRewriteContext.getSqlStatementContext(), sqlRewriteContext.getParameters()); each.rewrite(sqlRewriteContext.getParameterBuilder(), sqlRewriteContext.getSqlStatementContext(), sqlRewriteContext.getParameters());
} }
} }
sqlRewriteContext.addSQLTokenGenerators(new ShardingTokenGenerateBuilder(shardingRule, shardingRouteContext).getSQLTokenGenerators()); sqlRewriteContext.addSQLTokenGenerators(new ShardingTokenGenerateBuilder(shardingRule, routeContext).getSQLTokenGenerators());
} }
} }
...@@ -18,11 +18,9 @@ ...@@ -18,11 +18,9 @@
package org.apache.shardingsphere.sharding.rewrite.engine; package org.apache.shardingsphere.sharding.rewrite.engine;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.underlying.common.rule.DataNode;
import org.apache.shardingsphere.core.rule.ShardingRule; import org.apache.shardingsphere.core.rule.ShardingRule;
import org.apache.shardingsphere.sharding.rewrite.sql.ShardingSQLBuilder; import org.apache.shardingsphere.sharding.rewrite.sql.ShardingSQLBuilder;
import org.apache.shardingsphere.sharding.route.engine.condition.ShardingCondition; import org.apache.shardingsphere.underlying.common.rule.DataNode;
import org.apache.shardingsphere.sharding.route.engine.condition.ShardingConditions;
import org.apache.shardingsphere.underlying.rewrite.context.SQLRewriteContext; import org.apache.shardingsphere.underlying.rewrite.context.SQLRewriteContext;
import org.apache.shardingsphere.underlying.rewrite.engine.SQLRewriteEngine; import org.apache.shardingsphere.underlying.rewrite.engine.SQLRewriteEngine;
import org.apache.shardingsphere.underlying.rewrite.engine.SQLRewriteResult; import org.apache.shardingsphere.underlying.rewrite.engine.SQLRewriteResult;
...@@ -31,6 +29,7 @@ import org.apache.shardingsphere.underlying.rewrite.parameter.builder.impl.Group ...@@ -31,6 +29,7 @@ import org.apache.shardingsphere.underlying.rewrite.parameter.builder.impl.Group
import org.apache.shardingsphere.underlying.rewrite.parameter.builder.impl.StandardParameterBuilder; import org.apache.shardingsphere.underlying.rewrite.parameter.builder.impl.StandardParameterBuilder;
import org.apache.shardingsphere.underlying.route.context.RouteUnit; import org.apache.shardingsphere.underlying.route.context.RouteUnit;
import java.util.Collection;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
...@@ -42,7 +41,7 @@ public final class ShardingSQLRewriteEngine implements SQLRewriteEngine { ...@@ -42,7 +41,7 @@ public final class ShardingSQLRewriteEngine implements SQLRewriteEngine {
private final ShardingRule shardingRule; private final ShardingRule shardingRule;
private final ShardingConditions shardingConditions; private final Collection<Collection<DataNode>> originalDataNodes;
private final RouteUnit routeUnit; private final RouteUnit routeUnit;
...@@ -52,12 +51,12 @@ public final class ShardingSQLRewriteEngine implements SQLRewriteEngine { ...@@ -52,12 +51,12 @@ public final class ShardingSQLRewriteEngine implements SQLRewriteEngine {
} }
private List<Object> getParameters(final ParameterBuilder parameterBuilder) { private List<Object> getParameters(final ParameterBuilder parameterBuilder) {
if (parameterBuilder instanceof StandardParameterBuilder || shardingConditions.getConditions().isEmpty() || parameterBuilder.getParameters().isEmpty()) { if (parameterBuilder instanceof StandardParameterBuilder || originalDataNodes.isEmpty() || parameterBuilder.getParameters().isEmpty()) {
return parameterBuilder.getParameters(); return parameterBuilder.getParameters();
} }
List<Object> result = new LinkedList<>(); List<Object> result = new LinkedList<>();
int count = 0; int count = 0;
for (ShardingCondition each : shardingConditions.getConditions()) { for (Collection<DataNode> each : originalDataNodes) {
if (isInSameDataNode(each)) { if (isInSameDataNode(each)) {
result.addAll(((GroupedParameterBuilder) parameterBuilder).getParameters(count)); result.addAll(((GroupedParameterBuilder) parameterBuilder).getParameters(count));
} }
...@@ -66,11 +65,11 @@ public final class ShardingSQLRewriteEngine implements SQLRewriteEngine { ...@@ -66,11 +65,11 @@ public final class ShardingSQLRewriteEngine implements SQLRewriteEngine {
return result; return result;
} }
private boolean isInSameDataNode(final ShardingCondition shardingCondition) { private boolean isInSameDataNode(final Collection<DataNode> dataNodes) {
if (shardingCondition.getDataNodes().isEmpty()) { if (dataNodes.isEmpty()) {
return true; return true;
} }
for (DataNode each : shardingCondition.getDataNodes()) { for (DataNode each : dataNodes) {
if (routeUnit.findTableMapper(each.getDataSourceName(), each.getTableName()).isPresent()) { if (routeUnit.findTableMapper(each.getDataSourceName(), each.getTableName()).isPresent()) {
return true; return true;
} }
......
...@@ -20,14 +20,14 @@ package org.apache.shardingsphere.sharding.rewrite.parameter; ...@@ -20,14 +20,14 @@ package org.apache.shardingsphere.sharding.rewrite.parameter;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.core.rule.ShardingRule; import org.apache.shardingsphere.core.rule.ShardingRule;
import org.apache.shardingsphere.core.rule.aware.ShardingRuleAware; import org.apache.shardingsphere.core.rule.aware.ShardingRuleAware;
import org.apache.shardingsphere.sharding.rewrite.aware.ShardingRouteContextAware; import org.apache.shardingsphere.sharding.rewrite.aware.RouteContextAware;
import org.apache.shardingsphere.sharding.rewrite.parameter.impl.ShardingGeneratedKeyInsertValueParameterRewriter; import org.apache.shardingsphere.sharding.rewrite.parameter.impl.ShardingGeneratedKeyInsertValueParameterRewriter;
import org.apache.shardingsphere.sharding.rewrite.parameter.impl.ShardingPaginationParameterRewriter; import org.apache.shardingsphere.sharding.rewrite.parameter.impl.ShardingPaginationParameterRewriter;
import org.apache.shardingsphere.sharding.route.engine.context.ShardingRouteContext;
import org.apache.shardingsphere.sql.parser.binder.metadata.schema.SchemaMetaData; import org.apache.shardingsphere.sql.parser.binder.metadata.schema.SchemaMetaData;
import org.apache.shardingsphere.underlying.rewrite.parameter.rewriter.ParameterRewriter; import org.apache.shardingsphere.underlying.rewrite.parameter.rewriter.ParameterRewriter;
import org.apache.shardingsphere.underlying.rewrite.parameter.rewriter.ParameterRewriterBuilder; import org.apache.shardingsphere.underlying.rewrite.parameter.rewriter.ParameterRewriterBuilder;
import org.apache.shardingsphere.underlying.rewrite.sql.token.generator.aware.SchemaMetaDataAware; import org.apache.shardingsphere.underlying.rewrite.sql.token.generator.aware.SchemaMetaDataAware;
import org.apache.shardingsphere.underlying.route.context.RouteContext;
import java.util.Collection; import java.util.Collection;
import java.util.LinkedList; import java.util.LinkedList;
...@@ -40,7 +40,7 @@ public final class ShardingParameterRewriterBuilder implements ParameterRewriter ...@@ -40,7 +40,7 @@ public final class ShardingParameterRewriterBuilder implements ParameterRewriter
private final ShardingRule shardingRule; private final ShardingRule shardingRule;
private final ShardingRouteContext shardingRouteContext; private final RouteContext routeContext;
@Override @Override
public Collection<ParameterRewriter> getParameterRewriters(final SchemaMetaData schemaMetaData) { public Collection<ParameterRewriter> getParameterRewriters(final SchemaMetaData schemaMetaData) {
...@@ -65,8 +65,8 @@ public final class ShardingParameterRewriterBuilder implements ParameterRewriter ...@@ -65,8 +65,8 @@ public final class ShardingParameterRewriterBuilder implements ParameterRewriter
if (parameterRewriter instanceof ShardingRuleAware) { if (parameterRewriter instanceof ShardingRuleAware) {
((ShardingRuleAware) parameterRewriter).setShardingRule(shardingRule); ((ShardingRuleAware) parameterRewriter).setShardingRule(shardingRule);
} }
if (parameterRewriter instanceof ShardingRouteContextAware) { if (parameterRewriter instanceof RouteContextAware) {
((ShardingRouteContextAware) parameterRewriter).setShardingRouteContext(shardingRouteContext); ((RouteContextAware) parameterRewriter).setRouteContext(routeContext);
} }
} }
} }
...@@ -18,14 +18,14 @@ ...@@ -18,14 +18,14 @@
package org.apache.shardingsphere.sharding.rewrite.parameter.impl; package org.apache.shardingsphere.sharding.rewrite.parameter.impl;
import lombok.Setter; import lombok.Setter;
import org.apache.shardingsphere.sharding.rewrite.aware.ShardingRouteContextAware; import org.apache.shardingsphere.sharding.rewrite.aware.RouteContextAware;
import org.apache.shardingsphere.sharding.route.engine.context.ShardingRouteContext;
import org.apache.shardingsphere.sql.parser.binder.segment.select.pagination.PaginationContext; import org.apache.shardingsphere.sql.parser.binder.segment.select.pagination.PaginationContext;
import org.apache.shardingsphere.sql.parser.binder.statement.SQLStatementContext; import org.apache.shardingsphere.sql.parser.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.sql.parser.binder.statement.dml.SelectStatementContext; import org.apache.shardingsphere.sql.parser.binder.statement.dml.SelectStatementContext;
import org.apache.shardingsphere.underlying.rewrite.parameter.builder.ParameterBuilder; import org.apache.shardingsphere.underlying.rewrite.parameter.builder.ParameterBuilder;
import org.apache.shardingsphere.underlying.rewrite.parameter.builder.impl.StandardParameterBuilder; import org.apache.shardingsphere.underlying.rewrite.parameter.builder.impl.StandardParameterBuilder;
import org.apache.shardingsphere.underlying.rewrite.parameter.rewriter.ParameterRewriter; import org.apache.shardingsphere.underlying.rewrite.parameter.rewriter.ParameterRewriter;
import org.apache.shardingsphere.underlying.route.context.RouteContext;
import java.util.List; import java.util.List;
...@@ -33,14 +33,14 @@ import java.util.List; ...@@ -33,14 +33,14 @@ import java.util.List;
* Sharding pagination parameter rewriter. * Sharding pagination parameter rewriter.
*/ */
@Setter @Setter
public final class ShardingPaginationParameterRewriter implements ParameterRewriter<SelectStatementContext>, ShardingRouteContextAware { public final class ShardingPaginationParameterRewriter implements ParameterRewriter<SelectStatementContext>, RouteContextAware {
private ShardingRouteContext shardingRouteContext; private RouteContext routeContext;
@Override @Override
public boolean isNeedRewrite(final SQLStatementContext sqlStatementContext) { public boolean isNeedRewrite(final SQLStatementContext sqlStatementContext) {
return sqlStatementContext instanceof SelectStatementContext return sqlStatementContext instanceof SelectStatementContext
&& ((SelectStatementContext) sqlStatementContext).getPaginationContext().isHasPagination() && !shardingRouteContext.getRouteResult().isSingleRouting(); && ((SelectStatementContext) sqlStatementContext).getPaginationContext().isHasPagination() && !routeContext.getRouteResult().isSingleRouting();
} }
@Override @Override
......
...@@ -18,19 +18,18 @@ ...@@ -18,19 +18,18 @@
package org.apache.shardingsphere.sharding.rewrite.token.generator.impl; package org.apache.shardingsphere.sharding.rewrite.token.generator.impl;
import lombok.Setter; import lombok.Setter;
import org.apache.shardingsphere.underlying.common.rule.DataNode; import org.apache.shardingsphere.sharding.rewrite.aware.RouteContextAware;
import org.apache.shardingsphere.sharding.rewrite.aware.ShardingRouteContextAware;
import org.apache.shardingsphere.sharding.rewrite.token.pojo.impl.ShardingInsertValue; import org.apache.shardingsphere.sharding.rewrite.token.pojo.impl.ShardingInsertValue;
import org.apache.shardingsphere.sharding.rewrite.token.pojo.impl.ShardingInsertValuesToken; import org.apache.shardingsphere.sharding.rewrite.token.pojo.impl.ShardingInsertValuesToken;
import org.apache.shardingsphere.sharding.route.engine.condition.ShardingCondition;
import org.apache.shardingsphere.sharding.route.engine.context.ShardingRouteContext;
import org.apache.shardingsphere.sql.parser.binder.segment.insert.values.InsertValueContext; import org.apache.shardingsphere.sql.parser.binder.segment.insert.values.InsertValueContext;
import org.apache.shardingsphere.sql.parser.binder.statement.SQLStatementContext; import org.apache.shardingsphere.sql.parser.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.sql.parser.binder.statement.dml.InsertStatementContext; import org.apache.shardingsphere.sql.parser.binder.statement.dml.InsertStatementContext;
import org.apache.shardingsphere.sql.parser.sql.segment.dml.assignment.InsertValuesSegment; import org.apache.shardingsphere.sql.parser.sql.segment.dml.assignment.InsertValuesSegment;
import org.apache.shardingsphere.sql.parser.sql.segment.dml.expr.ExpressionSegment; import org.apache.shardingsphere.sql.parser.sql.segment.dml.expr.ExpressionSegment;
import org.apache.shardingsphere.underlying.common.rule.DataNode;
import org.apache.shardingsphere.underlying.rewrite.sql.token.generator.OptionalSQLTokenGenerator; import org.apache.shardingsphere.underlying.rewrite.sql.token.generator.OptionalSQLTokenGenerator;
import org.apache.shardingsphere.underlying.rewrite.sql.token.pojo.generic.InsertValuesToken; import org.apache.shardingsphere.underlying.rewrite.sql.token.pojo.generic.InsertValuesToken;
import org.apache.shardingsphere.underlying.route.context.RouteContext;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
...@@ -41,9 +40,9 @@ import java.util.List; ...@@ -41,9 +40,9 @@ import java.util.List;
* Insert values token generator for sharding. * Insert values token generator for sharding.
*/ */
@Setter @Setter
public final class ShardingInsertValuesTokenGenerator implements OptionalSQLTokenGenerator<InsertStatementContext>, ShardingRouteContextAware { public final class ShardingInsertValuesTokenGenerator implements OptionalSQLTokenGenerator<InsertStatementContext>, RouteContextAware {
private ShardingRouteContext shardingRouteContext; private RouteContext routeContext;
@Override @Override
public boolean isGenerateSQLToken(final SQLStatementContext sqlStatementContext) { public boolean isGenerateSQLToken(final SQLStatementContext sqlStatementContext) {
...@@ -54,11 +53,11 @@ public final class ShardingInsertValuesTokenGenerator implements OptionalSQLToke ...@@ -54,11 +53,11 @@ public final class ShardingInsertValuesTokenGenerator implements OptionalSQLToke
public InsertValuesToken generateSQLToken(final InsertStatementContext insertStatementContext) { public InsertValuesToken generateSQLToken(final InsertStatementContext insertStatementContext) {
Collection<InsertValuesSegment> insertValuesSegments = (insertStatementContext.getSqlStatement()).getValues(); Collection<InsertValuesSegment> insertValuesSegments = (insertStatementContext.getSqlStatement()).getValues();
InsertValuesToken result = new ShardingInsertValuesToken(getStartIndex(insertValuesSegments), getStopIndex(insertValuesSegments)); InsertValuesToken result = new ShardingInsertValuesToken(getStartIndex(insertValuesSegments), getStopIndex(insertValuesSegments));
Iterator<ShardingCondition> shardingConditionIterator = null == shardingRouteContext || shardingRouteContext.getShardingConditions().getConditions().isEmpty() Iterator<Collection<DataNode>> originalDataNodesIterator = null == routeContext || routeContext.getRouteResult().getOriginalDataNodes().isEmpty()
? null : shardingRouteContext.getShardingConditions().getConditions().iterator(); ? null : routeContext.getRouteResult().getOriginalDataNodes().iterator();
for (InsertValueContext each : insertStatementContext.getInsertValueContexts()) { for (InsertValueContext each : insertStatementContext.getInsertValueContexts()) {
List<ExpressionSegment> expressionSegments = each.getValueExpressions(); List<ExpressionSegment> expressionSegments = each.getValueExpressions();
Collection<DataNode> dataNodes = null == shardingConditionIterator ? Collections.emptyList() : shardingConditionIterator.next().getDataNodes(); Collection<DataNode> dataNodes = null == originalDataNodesIterator ? Collections.emptyList() : originalDataNodesIterator.next();
result.getInsertValues().add(new ShardingInsertValue(expressionSegments, dataNodes)); result.getInsertValues().add(new ShardingInsertValue(expressionSegments, dataNodes));
} }
return result; return result;
......
...@@ -18,18 +18,17 @@ ...@@ -18,18 +18,17 @@
package org.apache.shardingsphere.sharding.rewrite.token.pojo.impl; package org.apache.shardingsphere.sharding.rewrite.token.pojo.impl;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.sharding.route.engine.context.ShardingRouteContext;
import org.apache.shardingsphere.core.rule.ShardingRule; import org.apache.shardingsphere.core.rule.ShardingRule;
import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.OffsetTokenGenerator;
import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.RowCountTokenGenerator;
import org.apache.shardingsphere.sharding.rewrite.aware.ShardingRouteContextAware;
import org.apache.shardingsphere.core.rule.aware.ShardingRuleAware; import org.apache.shardingsphere.core.rule.aware.ShardingRuleAware;
import org.apache.shardingsphere.sharding.rewrite.aware.RouteContextAware;
import org.apache.shardingsphere.sharding.rewrite.token.generator.IgnoreForSingleRoute; import org.apache.shardingsphere.sharding.rewrite.token.generator.IgnoreForSingleRoute;
import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.AggregationDistinctTokenGenerator; import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.AggregationDistinctTokenGenerator;
import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.DistinctProjectionPrefixTokenGenerator; import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.DistinctProjectionPrefixTokenGenerator;
import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.IndexTokenGenerator; import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.IndexTokenGenerator;
import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.OffsetTokenGenerator;
import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.OrderByTokenGenerator; import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.OrderByTokenGenerator;
import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.ProjectionsTokenGenerator; import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.ProjectionsTokenGenerator;
import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.RowCountTokenGenerator;
import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.ShardingInsertValuesTokenGenerator; import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.ShardingInsertValuesTokenGenerator;
import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.TableTokenGenerator; import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.TableTokenGenerator;
import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.keygen.GeneratedKeyAssignmentTokenGenerator; import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.keygen.GeneratedKeyAssignmentTokenGenerator;
...@@ -38,6 +37,7 @@ import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.keygen.Ge ...@@ -38,6 +37,7 @@ import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.keygen.Ge
import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.keygen.GeneratedKeyInsertValuesTokenGenerator; import org.apache.shardingsphere.sharding.rewrite.token.generator.impl.keygen.GeneratedKeyInsertValuesTokenGenerator;
import org.apache.shardingsphere.underlying.rewrite.sql.token.generator.SQLTokenGenerator; import org.apache.shardingsphere.underlying.rewrite.sql.token.generator.SQLTokenGenerator;
import org.apache.shardingsphere.underlying.rewrite.sql.token.generator.builder.SQLTokenGeneratorBuilder; import org.apache.shardingsphere.underlying.rewrite.sql.token.generator.builder.SQLTokenGeneratorBuilder;
import org.apache.shardingsphere.underlying.route.context.RouteContext;
import java.util.Collection; import java.util.Collection;
import java.util.LinkedList; import java.util.LinkedList;
...@@ -50,7 +50,7 @@ public final class ShardingTokenGenerateBuilder implements SQLTokenGeneratorBuil ...@@ -50,7 +50,7 @@ public final class ShardingTokenGenerateBuilder implements SQLTokenGeneratorBuil
private final ShardingRule shardingRule; private final ShardingRule shardingRule;
private final ShardingRouteContext shardingRouteContext; private final RouteContext routeContext;
@Override @Override
public Collection<SQLTokenGenerator> getSQLTokenGenerators() { public Collection<SQLTokenGenerator> getSQLTokenGenerators() {
...@@ -59,8 +59,8 @@ public final class ShardingTokenGenerateBuilder implements SQLTokenGeneratorBuil ...@@ -59,8 +59,8 @@ public final class ShardingTokenGenerateBuilder implements SQLTokenGeneratorBuil
if (each instanceof ShardingRuleAware) { if (each instanceof ShardingRuleAware) {
((ShardingRuleAware) each).setShardingRule(shardingRule); ((ShardingRuleAware) each).setShardingRule(shardingRule);
} }
if (each instanceof ShardingRouteContextAware) { if (each instanceof RouteContextAware) {
((ShardingRouteContextAware) each).setShardingRouteContext(shardingRouteContext); ((RouteContextAware) each).setRouteContext(routeContext);
} }
} }
return result; return result;
...@@ -85,7 +85,7 @@ public final class ShardingTokenGenerateBuilder implements SQLTokenGeneratorBuil ...@@ -85,7 +85,7 @@ public final class ShardingTokenGenerateBuilder implements SQLTokenGeneratorBuil
} }
private void addSQLTokenGenerator(final Collection<SQLTokenGenerator> sqlTokenGenerators, final SQLTokenGenerator toBeAddedSQLTokenGenerator) { private void addSQLTokenGenerator(final Collection<SQLTokenGenerator> sqlTokenGenerators, final SQLTokenGenerator toBeAddedSQLTokenGenerator) {
if (toBeAddedSQLTokenGenerator instanceof IgnoreForSingleRoute && shardingRouteContext.getRouteResult().isSingleRouting()) { if (toBeAddedSQLTokenGenerator instanceof IgnoreForSingleRoute && routeContext.getRouteResult().isSingleRouting()) {
return; return;
} }
sqlTokenGenerators.add(toBeAddedSQLTokenGenerator); sqlTokenGenerators.add(toBeAddedSQLTokenGenerator);
......
...@@ -26,7 +26,6 @@ import org.apache.shardingsphere.encrypt.rewrite.context.EncryptSQLRewriteContex ...@@ -26,7 +26,6 @@ import org.apache.shardingsphere.encrypt.rewrite.context.EncryptSQLRewriteContex
import org.apache.shardingsphere.sharding.rewrite.context.ShardingSQLRewriteContextDecorator; import org.apache.shardingsphere.sharding.rewrite.context.ShardingSQLRewriteContextDecorator;
import org.apache.shardingsphere.sharding.rewrite.engine.ShardingSQLRewriteEngine; import org.apache.shardingsphere.sharding.rewrite.engine.ShardingSQLRewriteEngine;
import org.apache.shardingsphere.sharding.route.engine.ShardingRouteDecorator; import org.apache.shardingsphere.sharding.route.engine.ShardingRouteDecorator;
import org.apache.shardingsphere.sharding.route.engine.context.ShardingRouteContext;
import org.apache.shardingsphere.sql.parser.SQLParserEngine; import org.apache.shardingsphere.sql.parser.SQLParserEngine;
import org.apache.shardingsphere.sql.parser.SQLParserEngineFactory; import org.apache.shardingsphere.sql.parser.SQLParserEngineFactory;
import org.apache.shardingsphere.sql.parser.binder.metadata.column.ColumnMetaData; import org.apache.shardingsphere.sql.parser.binder.metadata.column.ColumnMetaData;
...@@ -82,15 +81,15 @@ public final class MixSQLRewriterParameterizedTest extends AbstractSQLRewriterPa ...@@ -82,15 +81,15 @@ public final class MixSQLRewriterParameterizedTest extends AbstractSQLRewriterPa
ConfigurationProperties properties = new ConfigurationProperties(ruleConfiguration.getProps()); ConfigurationProperties properties = new ConfigurationProperties(ruleConfiguration.getProps());
RouteContext routeContext = new DataNodeRouter(metaData, properties, sqlParserEngine).route(getTestParameters().getInputSQL(), getTestParameters().getInputParameters(), false); RouteContext routeContext = new DataNodeRouter(metaData, properties, sqlParserEngine).route(getTestParameters().getInputSQL(), getTestParameters().getInputParameters(), false);
ShardingRouteDecorator shardingRouteDecorator = new ShardingRouteDecorator(); ShardingRouteDecorator shardingRouteDecorator = new ShardingRouteDecorator();
ShardingRouteContext shardingRouteContext = (ShardingRouteContext) shardingRouteDecorator.decorate(routeContext, metaData, shardingRule, properties); routeContext = shardingRouteDecorator.decorate(routeContext, metaData, shardingRule, properties);
SQLRewriteContext sqlRewriteContext = new SQLRewriteContext( SQLRewriteContext sqlRewriteContext = new SQLRewriteContext(
mock(SchemaMetaData.class), shardingRouteContext.getSqlStatementContext(), getTestParameters().getInputSQL(), getTestParameters().getInputParameters()); mock(SchemaMetaData.class), routeContext.getSqlStatementContext(), getTestParameters().getInputSQL(), getTestParameters().getInputParameters());
new ShardingSQLRewriteContextDecorator(shardingRouteContext).decorate(shardingRule, properties, sqlRewriteContext); new ShardingSQLRewriteContextDecorator(routeContext).decorate(shardingRule, properties, sqlRewriteContext);
new EncryptSQLRewriteContextDecorator().decorate(shardingRule.getEncryptRule(), properties, sqlRewriteContext); new EncryptSQLRewriteContextDecorator().decorate(shardingRule.getEncryptRule(), properties, sqlRewriteContext);
sqlRewriteContext.generateSQLTokens(); sqlRewriteContext.generateSQLTokens();
Collection<SQLRewriteResult> result = new LinkedList<>(); Collection<SQLRewriteResult> result = new LinkedList<>();
for (RouteUnit each : shardingRouteContext.getRouteResult().getRouteUnits()) { for (RouteUnit each : routeContext.getRouteResult().getRouteUnits()) {
result.add(new ShardingSQLRewriteEngine(shardingRule, shardingRouteContext.getShardingConditions(), each).rewrite(sqlRewriteContext)); result.add(new ShardingSQLRewriteEngine(shardingRule, routeContext.getRouteResult().getOriginalDataNodes(), each).rewrite(sqlRewriteContext));
} }
return result; return result;
} }
......
...@@ -25,7 +25,6 @@ import org.apache.shardingsphere.core.yaml.swapper.ShardingRuleConfigurationYaml ...@@ -25,7 +25,6 @@ import org.apache.shardingsphere.core.yaml.swapper.ShardingRuleConfigurationYaml
import org.apache.shardingsphere.sharding.rewrite.context.ShardingSQLRewriteContextDecorator; import org.apache.shardingsphere.sharding.rewrite.context.ShardingSQLRewriteContextDecorator;
import org.apache.shardingsphere.sharding.rewrite.engine.ShardingSQLRewriteEngine; import org.apache.shardingsphere.sharding.rewrite.engine.ShardingSQLRewriteEngine;
import org.apache.shardingsphere.sharding.route.engine.ShardingRouteDecorator; import org.apache.shardingsphere.sharding.route.engine.ShardingRouteDecorator;
import org.apache.shardingsphere.sharding.route.engine.context.ShardingRouteContext;
import org.apache.shardingsphere.sql.parser.SQLParserEngine; import org.apache.shardingsphere.sql.parser.SQLParserEngine;
import org.apache.shardingsphere.sql.parser.SQLParserEngineFactory; import org.apache.shardingsphere.sql.parser.SQLParserEngineFactory;
import org.apache.shardingsphere.sql.parser.binder.metadata.column.ColumnMetaData; import org.apache.shardingsphere.sql.parser.binder.metadata.column.ColumnMetaData;
...@@ -81,14 +80,14 @@ public final class ShardingSQLRewriterParameterizedTest extends AbstractSQLRewri ...@@ -81,14 +80,14 @@ public final class ShardingSQLRewriterParameterizedTest extends AbstractSQLRewri
ConfigurationProperties properties = new ConfigurationProperties(ruleConfiguration.getProps()); ConfigurationProperties properties = new ConfigurationProperties(ruleConfiguration.getProps());
RouteContext routeContext = new DataNodeRouter(metaData, properties, sqlParserEngine).route(getTestParameters().getInputSQL(), getTestParameters().getInputParameters(), false); RouteContext routeContext = new DataNodeRouter(metaData, properties, sqlParserEngine).route(getTestParameters().getInputSQL(), getTestParameters().getInputParameters(), false);
ShardingRouteDecorator shardingRouteDecorator = new ShardingRouteDecorator(); ShardingRouteDecorator shardingRouteDecorator = new ShardingRouteDecorator();
ShardingRouteContext shardingRouteContext = (ShardingRouteContext) shardingRouteDecorator.decorate(routeContext, metaData, shardingRule, properties); routeContext = shardingRouteDecorator.decorate(routeContext, metaData, shardingRule, properties);
SQLRewriteContext sqlRewriteContext = new SQLRewriteContext( SQLRewriteContext sqlRewriteContext = new SQLRewriteContext(
mock(SchemaMetaData.class), shardingRouteContext.getSqlStatementContext(), getTestParameters().getInputSQL(), getTestParameters().getInputParameters()); mock(SchemaMetaData.class), routeContext.getSqlStatementContext(), getTestParameters().getInputSQL(), getTestParameters().getInputParameters());
new ShardingSQLRewriteContextDecorator(shardingRouteContext).decorate(shardingRule, properties, sqlRewriteContext); new ShardingSQLRewriteContextDecorator(routeContext).decorate(shardingRule, properties, sqlRewriteContext);
sqlRewriteContext.generateSQLTokens(); sqlRewriteContext.generateSQLTokens();
Collection<SQLRewriteResult> result = new LinkedList<>(); Collection<SQLRewriteResult> result = new LinkedList<>();
for (RouteUnit each : shardingRouteContext.getRouteResult().getRouteUnits()) { for (RouteUnit each : routeContext.getRouteResult().getRouteUnits()) {
result.add(new ShardingSQLRewriteEngine(shardingRule, shardingRouteContext.getShardingConditions(), each).rewrite(sqlRewriteContext)); result.add(new ShardingSQLRewriteEngine(shardingRule, routeContext.getRouteResult().getOriginalDataNodes(), each).rewrite(sqlRewriteContext));
} }
return result; return result;
} }
......
...@@ -29,7 +29,6 @@ import org.apache.shardingsphere.sharding.route.engine.condition.ShardingConditi ...@@ -29,7 +29,6 @@ import org.apache.shardingsphere.sharding.route.engine.condition.ShardingConditi
import org.apache.shardingsphere.sharding.route.engine.condition.ShardingConditions; import org.apache.shardingsphere.sharding.route.engine.condition.ShardingConditions;
import org.apache.shardingsphere.sharding.route.engine.condition.engine.InsertClauseShardingConditionEngine; import org.apache.shardingsphere.sharding.route.engine.condition.engine.InsertClauseShardingConditionEngine;
import org.apache.shardingsphere.sharding.route.engine.condition.engine.WhereClauseShardingConditionEngine; import org.apache.shardingsphere.sharding.route.engine.condition.engine.WhereClauseShardingConditionEngine;
import org.apache.shardingsphere.sharding.route.engine.context.ShardingRouteContext;
import org.apache.shardingsphere.sharding.route.engine.type.ShardingRouteEngine; import org.apache.shardingsphere.sharding.route.engine.type.ShardingRouteEngine;
import org.apache.shardingsphere.sharding.route.engine.type.ShardingRouteEngineFactory; import org.apache.shardingsphere.sharding.route.engine.type.ShardingRouteEngineFactory;
import org.apache.shardingsphere.sharding.route.engine.validator.ShardingStatementValidatorFactory; import org.apache.shardingsphere.sharding.route.engine.validator.ShardingStatementValidatorFactory;
...@@ -71,7 +70,7 @@ public final class ShardingRouteDecorator implements RouteDecorator<ShardingRule ...@@ -71,7 +70,7 @@ public final class ShardingRouteDecorator implements RouteDecorator<ShardingRule
if (needMergeShardingValues) { if (needMergeShardingValues) {
Preconditions.checkState(1 == routeResult.getRouteUnits().size(), "Must have one sharding with subquery."); Preconditions.checkState(1 == routeResult.getRouteUnits().size(), "Must have one sharding with subquery.");
} }
return new ShardingRouteContext(sqlStatementContext, parameters, routeResult, shardingConditions); return new RouteContext(sqlStatementContext, parameters, routeResult);
} }
private ShardingConditions getShardingConditions(final List<Object> parameters, private ShardingConditions getShardingConditions(final List<Object> parameters,
......
...@@ -19,10 +19,8 @@ package org.apache.shardingsphere.sharding.route.engine.condition; ...@@ -19,10 +19,8 @@ package org.apache.shardingsphere.sharding.route.engine.condition;
import lombok.Getter; import lombok.Getter;
import lombok.ToString; import lombok.ToString;
import org.apache.shardingsphere.underlying.common.rule.DataNode;
import org.apache.shardingsphere.core.strategy.route.value.RouteValue; import org.apache.shardingsphere.core.strategy.route.value.RouteValue;
import java.util.Collection;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
...@@ -34,6 +32,4 @@ import java.util.List; ...@@ -34,6 +32,4 @@ import java.util.List;
public class ShardingCondition { public class ShardingCondition {
private final List<RouteValue> routeValues = new LinkedList<>(); private final List<RouteValue> routeValues = new LinkedList<>();
private final Collection<DataNode> dataNodes = new LinkedList<>();
} }
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.shardingsphere.sharding.route.engine.context;
import lombok.Getter;
import org.apache.shardingsphere.sharding.route.engine.condition.ShardingConditions;
import org.apache.shardingsphere.sql.parser.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.underlying.route.context.RouteContext;
import org.apache.shardingsphere.underlying.route.context.RouteResult;
import java.util.List;
/**
* SQL route context.
*/
@Getter
public final class ShardingRouteContext extends RouteContext {
private final ShardingConditions shardingConditions;
public ShardingRouteContext(final SQLStatementContext sqlStatementContext, final List<Object> parameters, final RouteResult routeResult, final ShardingConditions shardingConditions) {
super(sqlStatementContext, parameters, routeResult);
this.shardingConditions = shardingConditions;
}
}
...@@ -64,6 +64,8 @@ public final class ShardingStandardRoutingEngine implements ShardingRouteEngine ...@@ -64,6 +64,8 @@ public final class ShardingStandardRoutingEngine implements ShardingRouteEngine
private final ConfigurationProperties properties; private final ConfigurationProperties properties;
private final Collection<Collection<DataNode>> originalDataNodes = new LinkedList<>();
@Override @Override
public RouteResult route(final ShardingRule shardingRule) { public RouteResult route(final ShardingRule shardingRule) {
if (isDMLForModify(sqlStatementContext) && 1 != ((TableAvailable) sqlStatementContext).getAllTables().size()) { if (isDMLForModify(sqlStatementContext) && 1 != ((TableAvailable) sqlStatementContext).getAllTables().size()) {
...@@ -78,6 +80,7 @@ public final class ShardingStandardRoutingEngine implements ShardingRouteEngine ...@@ -78,6 +80,7 @@ public final class ShardingStandardRoutingEngine implements ShardingRouteEngine
private RouteResult generateRouteResult(final Collection<DataNode> routedDataNodes) { private RouteResult generateRouteResult(final Collection<DataNode> routedDataNodes) {
RouteResult result = new RouteResult(); RouteResult result = new RouteResult();
result.getOriginalDataNodes().addAll(originalDataNodes);
for (DataNode each : routedDataNodes) { for (DataNode each : routedDataNodes) {
result.getRouteUnits().add( result.getRouteUnits().add(
new RouteUnit(new RouteMapper(each.getDataSourceName(), each.getDataSourceName()), Collections.singletonList(new RouteMapper(logicTableName, each.getTableName())))); new RouteUnit(new RouteMapper(each.getDataSourceName(), each.getDataSourceName()), Collections.singletonList(new RouteMapper(logicTableName, each.getTableName()))));
...@@ -118,8 +121,8 @@ public final class ShardingStandardRoutingEngine implements ShardingRouteEngine ...@@ -118,8 +121,8 @@ public final class ShardingStandardRoutingEngine implements ShardingRouteEngine
Collection<DataNode> dataNodes = route0(shardingRule, tableRule, Collection<DataNode> dataNodes = route0(shardingRule, tableRule,
getShardingValuesFromShardingConditions(shardingRule, shardingRule.getDatabaseShardingStrategy(tableRule).getShardingColumns(), each), getShardingValuesFromShardingConditions(shardingRule, shardingRule.getDatabaseShardingStrategy(tableRule).getShardingColumns(), each),
getShardingValuesFromShardingConditions(shardingRule, shardingRule.getTableShardingStrategy(tableRule).getShardingColumns(), each)); getShardingValuesFromShardingConditions(shardingRule, shardingRule.getTableShardingStrategy(tableRule).getShardingColumns(), each));
each.getDataNodes().addAll(dataNodes);
result.addAll(dataNodes); result.addAll(dataNodes);
originalDataNodes.add(dataNodes);
} }
return result; return result;
} }
...@@ -132,8 +135,8 @@ public final class ShardingStandardRoutingEngine implements ShardingRouteEngine ...@@ -132,8 +135,8 @@ public final class ShardingStandardRoutingEngine implements ShardingRouteEngine
Collection<DataNode> result = new LinkedList<>(); Collection<DataNode> result = new LinkedList<>();
for (ShardingCondition each : shardingConditions.getConditions()) { for (ShardingCondition each : shardingConditions.getConditions()) {
Collection<DataNode> dataNodes = route0(shardingRule, tableRule, getDatabaseShardingValues(shardingRule, tableRule, each), getTableShardingValues(shardingRule, tableRule, each)); Collection<DataNode> dataNodes = route0(shardingRule, tableRule, getDatabaseShardingValues(shardingRule, tableRule, each), getTableShardingValues(shardingRule, tableRule, each));
each.getDataNodes().addAll(dataNodes);
result.addAll(dataNodes); result.addAll(dataNodes);
originalDataNodes.add(dataNodes);
} }
return result; return result;
} }
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
package org.apache.shardingsphere.sharding.route.hook; package org.apache.shardingsphere.sharding.route.hook;
import org.apache.shardingsphere.sql.parser.binder.metadata.schema.SchemaMetaData; import org.apache.shardingsphere.sql.parser.binder.metadata.schema.SchemaMetaData;
import org.apache.shardingsphere.sharding.route.engine.context.ShardingRouteContext; import org.apache.shardingsphere.underlying.route.context.RouteContext;
/** /**
* Routing hook. * Routing hook.
...@@ -35,10 +35,10 @@ public interface RoutingHook { ...@@ -35,10 +35,10 @@ public interface RoutingHook {
/** /**
* Handle when routing finished success. * Handle when routing finished success.
* *
* @param shardingRouteContext sharding route context * @param routeContext route context
* @param schemaMetaData schema meta data * @param schemaMetaData schema meta data
*/ */
void finishSuccess(ShardingRouteContext shardingRouteContext, SchemaMetaData schemaMetaData); void finishSuccess(RouteContext routeContext, SchemaMetaData schemaMetaData);
/** /**
* Handle when routing finished failure. * Handle when routing finished failure.
......
...@@ -17,9 +17,9 @@ ...@@ -17,9 +17,9 @@
package org.apache.shardingsphere.sharding.route.hook; package org.apache.shardingsphere.sharding.route.hook;
import org.apache.shardingsphere.sql.parser.binder.metadata.schema.SchemaMetaData;
import org.apache.shardingsphere.sharding.route.engine.context.ShardingRouteContext;
import org.apache.shardingsphere.spi.NewInstanceServiceLoader; import org.apache.shardingsphere.spi.NewInstanceServiceLoader;
import org.apache.shardingsphere.sql.parser.binder.metadata.schema.SchemaMetaData;
import org.apache.shardingsphere.underlying.route.context.RouteContext;
import java.util.Collection; import java.util.Collection;
...@@ -42,9 +42,9 @@ public final class SPIRoutingHook implements RoutingHook { ...@@ -42,9 +42,9 @@ public final class SPIRoutingHook implements RoutingHook {
} }
@Override @Override
public void finishSuccess(final ShardingRouteContext shardingRouteContext, final SchemaMetaData schemaMetaData) { public void finishSuccess(final RouteContext routeContext, final SchemaMetaData schemaMetaData) {
for (RoutingHook each : routingHooks) { for (RoutingHook each : routingHooks) {
each.finishSuccess(shardingRouteContext, schemaMetaData); each.finishSuccess(routeContext, schemaMetaData);
} }
} }
......
...@@ -24,7 +24,6 @@ import org.apache.shardingsphere.api.config.sharding.strategy.HintShardingStrate ...@@ -24,7 +24,6 @@ import org.apache.shardingsphere.api.config.sharding.strategy.HintShardingStrate
import org.apache.shardingsphere.api.config.sharding.strategy.InlineShardingStrategyConfiguration; import org.apache.shardingsphere.api.config.sharding.strategy.InlineShardingStrategyConfiguration;
import org.apache.shardingsphere.core.rule.ShardingRule; import org.apache.shardingsphere.core.rule.ShardingRule;
import org.apache.shardingsphere.sharding.route.engine.ShardingRouteDecorator; import org.apache.shardingsphere.sharding.route.engine.ShardingRouteDecorator;
import org.apache.shardingsphere.sharding.route.engine.context.ShardingRouteContext;
import org.apache.shardingsphere.sharding.route.fixture.HintShardingAlgorithmFixture; import org.apache.shardingsphere.sharding.route.fixture.HintShardingAlgorithmFixture;
import org.apache.shardingsphere.spi.database.metadata.DataSourceMetaData; import org.apache.shardingsphere.spi.database.metadata.DataSourceMetaData;
import org.apache.shardingsphere.sql.parser.SQLParserEngine; import org.apache.shardingsphere.sql.parser.SQLParserEngine;
...@@ -79,7 +78,7 @@ public final class DatabaseTest { ...@@ -79,7 +78,7 @@ public final class DatabaseTest {
ShardingSphereMetaData metaData = getMetaDataForAllRoutingSQL(); ShardingSphereMetaData metaData = getMetaDataForAllRoutingSQL();
RouteContext routeContext = new DataNodeRouter(metaData, properties, sqlParserEngine).route(originSQL, Collections.emptyList(), false); RouteContext routeContext = new DataNodeRouter(metaData, properties, sqlParserEngine).route(originSQL, Collections.emptyList(), false);
ShardingRouteDecorator shardingRouteDecorator = new ShardingRouteDecorator(); ShardingRouteDecorator shardingRouteDecorator = new ShardingRouteDecorator();
ShardingRouteContext actual = (ShardingRouteContext) shardingRouteDecorator.decorate(routeContext, metaData, shardingRule, properties); RouteContext actual = shardingRouteDecorator.decorate(routeContext, metaData, shardingRule, properties);
assertThat(actual.getRouteResult().getRouteUnits().size(), is(1)); assertThat(actual.getRouteResult().getRouteUnits().size(), is(1));
Collection<String> actualDataSources = actual.getRouteResult().getActualDataSourceNames(); Collection<String> actualDataSources = actual.getRouteResult().getActualDataSourceNames();
assertThat(actualDataSources.size(), is(1)); assertThat(actualDataSources.size(), is(1));
...@@ -103,13 +102,13 @@ public final class DatabaseTest { ...@@ -103,13 +102,13 @@ public final class DatabaseTest {
ShardingSphereMetaData metaData = getMetaDataForPagination(); ShardingSphereMetaData metaData = getMetaDataForPagination();
RouteContext routeContext = new DataNodeRouter(metaData, properties, sqlParserEngine).route(originSQL, Collections.emptyList(), false); RouteContext routeContext = new DataNodeRouter(metaData, properties, sqlParserEngine).route(originSQL, Collections.emptyList(), false);
ShardingRouteDecorator shardingRouteDecorator = new ShardingRouteDecorator(); ShardingRouteDecorator shardingRouteDecorator = new ShardingRouteDecorator();
ShardingRouteContext actual = (ShardingRouteContext) shardingRouteDecorator.decorate(routeContext, metaData, shardingRule, properties); RouteContext actual = shardingRouteDecorator.decorate(routeContext, metaData, shardingRule, properties);
assertThat(((SelectStatementContext) actual.getSqlStatementContext()).getPaginationContext().getActualOffset(), is(0L)); assertThat(((SelectStatementContext) actual.getSqlStatementContext()).getPaginationContext().getActualOffset(), is(0L));
assertThat(((SelectStatementContext) actual.getSqlStatementContext()).getPaginationContext().getActualRowCount().orElse(null), is(5L)); assertThat(((SelectStatementContext) actual.getSqlStatementContext()).getPaginationContext().getActualRowCount().orElse(null), is(5L));
originSQL = "select user_id from tbl_pagination limit 5,5"; originSQL = "select user_id from tbl_pagination limit 5,5";
routeContext = new DataNodeRouter(metaData, properties, sqlParserEngine).route(originSQL, Collections.emptyList(), false); routeContext = new DataNodeRouter(metaData, properties, sqlParserEngine).route(originSQL, Collections.emptyList(), false);
shardingRouteDecorator = new ShardingRouteDecorator(); shardingRouteDecorator = new ShardingRouteDecorator();
actual = (ShardingRouteContext) shardingRouteDecorator.decorate(routeContext, metaData, shardingRule, properties); actual = shardingRouteDecorator.decorate(routeContext, metaData, shardingRule, properties);
assertThat(((SelectStatementContext) actual.getSqlStatementContext()).getPaginationContext().getActualOffset(), is(5L)); assertThat(((SelectStatementContext) actual.getSqlStatementContext()).getPaginationContext().getActualOffset(), is(5L));
assertThat(((SelectStatementContext) actual.getSqlStatementContext()).getPaginationContext().getActualRowCount().orElse(null), is(5L)); assertThat(((SelectStatementContext) actual.getSqlStatementContext()).getPaginationContext().getActualRowCount().orElse(null), is(5L));
} }
...@@ -143,14 +142,14 @@ public final class DatabaseTest { ...@@ -143,14 +142,14 @@ public final class DatabaseTest {
SQLParserEngine sqlParserEngine = SQLParserEngineFactory.getSQLParserEngine("MySQL"); SQLParserEngine sqlParserEngine = SQLParserEngineFactory.getSQLParserEngine("MySQL");
RouteContext routeContext = new DataNodeRouter(metaData, properties, sqlParserEngine).route(originSQL, Lists.newArrayList(13, 173), false); RouteContext routeContext = new DataNodeRouter(metaData, properties, sqlParserEngine).route(originSQL, Lists.newArrayList(13, 173), false);
ShardingRouteDecorator shardingRouteDecorator = new ShardingRouteDecorator(); ShardingRouteDecorator shardingRouteDecorator = new ShardingRouteDecorator();
ShardingRouteContext actual = (ShardingRouteContext) shardingRouteDecorator.decorate(routeContext, metaData, shardingRule, properties); RouteContext actual = shardingRouteDecorator.decorate(routeContext, metaData, shardingRule, properties);
assertThat(((SelectStatementContext) actual.getSqlStatementContext()).getPaginationContext().getActualOffset(), is(5L)); assertThat(((SelectStatementContext) actual.getSqlStatementContext()).getPaginationContext().getActualOffset(), is(5L));
assertThat(((SelectStatementContext) actual.getSqlStatementContext()).getPaginationContext().getActualRowCount().orElse(null), is(10L)); assertThat(((SelectStatementContext) actual.getSqlStatementContext()).getPaginationContext().getActualRowCount().orElse(null), is(10L));
assertThat(actual.getRouteResult().getRouteUnits().size(), is(1)); assertThat(actual.getRouteResult().getRouteUnits().size(), is(1));
originSQL = "select city_id from t_user where city_id in (?,?) limit 5,10"; originSQL = "select city_id from t_user where city_id in (?,?) limit 5,10";
routeContext = new DataNodeRouter(metaData, properties, sqlParserEngine).route(originSQL, Lists.newArrayList(89, 84), false); routeContext = new DataNodeRouter(metaData, properties, sqlParserEngine).route(originSQL, Lists.newArrayList(89, 84), false);
shardingRouteDecorator = new ShardingRouteDecorator(); shardingRouteDecorator = new ShardingRouteDecorator();
actual = (ShardingRouteContext) shardingRouteDecorator.decorate(routeContext, metaData, shardingRule, properties); actual = shardingRouteDecorator.decorate(routeContext, metaData, shardingRule, properties);
assertThat(((SelectStatementContext) actual.getSqlStatementContext()).getPaginationContext().getActualOffset(), is(5L)); assertThat(((SelectStatementContext) actual.getSqlStatementContext()).getPaginationContext().getActualOffset(), is(5L));
assertThat(((SelectStatementContext) actual.getSqlStatementContext()).getPaginationContext().getActualRowCount().orElse(null), is(10L)); assertThat(((SelectStatementContext) actual.getSqlStatementContext()).getPaginationContext().getActualRowCount().orElse(null), is(10L));
} }
......
...@@ -19,7 +19,6 @@ package org.apache.shardingsphere.sharding.route.engine.type.standard; ...@@ -19,7 +19,6 @@ package org.apache.shardingsphere.sharding.route.engine.type.standard;
import org.apache.shardingsphere.core.rule.ShardingRule; import org.apache.shardingsphere.core.rule.ShardingRule;
import org.apache.shardingsphere.sharding.route.engine.ShardingRouteDecorator; import org.apache.shardingsphere.sharding.route.engine.ShardingRouteDecorator;
import org.apache.shardingsphere.sharding.route.engine.context.ShardingRouteContext;
import org.apache.shardingsphere.sharding.route.fixture.AbstractRoutingEngineTest; import org.apache.shardingsphere.sharding.route.fixture.AbstractRoutingEngineTest;
import org.apache.shardingsphere.sql.parser.SQLParserEngine; import org.apache.shardingsphere.sql.parser.SQLParserEngine;
import org.apache.shardingsphere.sql.parser.SQLParserEngineFactory; import org.apache.shardingsphere.sql.parser.SQLParserEngineFactory;
...@@ -53,7 +52,7 @@ public abstract class AbstractSQLRouteTest extends AbstractRoutingEngineTest { ...@@ -53,7 +52,7 @@ public abstract class AbstractSQLRouteTest extends AbstractRoutingEngineTest {
SQLParserEngine sqlParserEngine = SQLParserEngineFactory.getSQLParserEngine("MySQL"); SQLParserEngine sqlParserEngine = SQLParserEngineFactory.getSQLParserEngine("MySQL");
RouteContext routeContext = new DataNodeRouter(metaData, properties, sqlParserEngine).route(sql, parameters, false); RouteContext routeContext = new DataNodeRouter(metaData, properties, sqlParserEngine).route(sql, parameters, false);
ShardingRouteDecorator shardingRouteDecorator = new ShardingRouteDecorator(); ShardingRouteDecorator shardingRouteDecorator = new ShardingRouteDecorator();
ShardingRouteContext result = (ShardingRouteContext) shardingRouteDecorator.decorate(routeContext, metaData, shardingRule, properties); RouteContext result = shardingRouteDecorator.decorate(routeContext, metaData, shardingRule, properties);
assertThat(result.getRouteResult().getRouteUnits().size(), is(1)); assertThat(result.getRouteResult().getRouteUnits().size(), is(1));
return result; return result;
} }
......
...@@ -17,18 +17,17 @@ ...@@ -17,18 +17,17 @@
package org.apache.shardingsphere.sharding.route.fixture; package org.apache.shardingsphere.sharding.route.fixture;
import org.apache.shardingsphere.sql.parser.binder.metadata.schema.SchemaMetaData;
import org.apache.shardingsphere.sharding.route.engine.context.ShardingRouteContext;
import org.apache.shardingsphere.sharding.route.hook.RoutingHook;
import lombok.Getter; import lombok.Getter;
import org.apache.shardingsphere.sharding.route.hook.RoutingHook;
import org.apache.shardingsphere.sql.parser.binder.metadata.schema.SchemaMetaData;
import org.apache.shardingsphere.underlying.route.context.RouteContext;
@Getter @Getter
public final class RoutingHookFixture implements RoutingHook { public final class RoutingHookFixture implements RoutingHook {
private String sql; private String sql;
private ShardingRouteContext routeContext; private RouteContext routeContext;
private SchemaMetaData schemaMetaData; private SchemaMetaData schemaMetaData;
...@@ -40,8 +39,8 @@ public final class RoutingHookFixture implements RoutingHook { ...@@ -40,8 +39,8 @@ public final class RoutingHookFixture implements RoutingHook {
} }
@Override @Override
public void finishSuccess(final ShardingRouteContext shardingRouteContext, final SchemaMetaData schemaMetaData) { public void finishSuccess(final RouteContext routeContext, final SchemaMetaData schemaMetaData) {
this.routeContext = shardingRouteContext; this.routeContext = routeContext;
this.schemaMetaData = schemaMetaData; this.schemaMetaData = schemaMetaData;
} }
......
...@@ -18,15 +18,16 @@ ...@@ -18,15 +18,16 @@
package org.apache.shardingsphere.sharding.route.hook; package org.apache.shardingsphere.sharding.route.hook;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import org.apache.shardingsphere.sql.parser.binder.metadata.schema.SchemaMetaData;
import org.apache.shardingsphere.sharding.route.engine.context.ShardingRouteContext;
import org.apache.shardingsphere.sharding.route.fixture.RoutingHookFixture; import org.apache.shardingsphere.sharding.route.fixture.RoutingHookFixture;
import org.apache.shardingsphere.sql.parser.binder.metadata.schema.SchemaMetaData;
import org.apache.shardingsphere.underlying.route.context.RouteContext;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner; import org.mockito.junit.MockitoJUnitRunner;
import java.util.Collection;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.Collection;
import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.is;
...@@ -38,7 +39,7 @@ public final class SPIRoutingHookTest { ...@@ -38,7 +39,7 @@ public final class SPIRoutingHookTest {
private final SPIRoutingHook spiRoutingHook = new SPIRoutingHook(); private final SPIRoutingHook spiRoutingHook = new SPIRoutingHook();
@Mock @Mock
private ShardingRouteContext routeContext; private RouteContext routeContext;
@Mock @Mock
private SchemaMetaData schemaMetaData; private SchemaMetaData schemaMetaData;
......
...@@ -41,7 +41,7 @@ import static org.junit.Assert.assertThat; ...@@ -41,7 +41,7 @@ import static org.junit.Assert.assertThat;
public final class CuratorZookeeperCenterRepositoryTest { public final class CuratorZookeeperCenterRepositoryTest {
private static CuratorZookeeperCenterRepository centerRepository = new CuratorZookeeperCenterRepository(); private static CuratorZookeeperCenterRepository centerRepository = new CuratorZookeeperCenterRepository();
private static String serverLists; private static String serverLists;
@BeforeClass @BeforeClass
......
...@@ -25,7 +25,7 @@ import static org.hamcrest.CoreMatchers.is; ...@@ -25,7 +25,7 @@ import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat; import static org.junit.Assert.assertThat;
public final class ZookeeperPropertiesTest { public final class ZookeeperPropertiesTest {
@Test @Test
public void assertGetValue() { public void assertGetValue() {
Properties props = new Properties(); Properties props = new Properties();
...@@ -41,7 +41,7 @@ public final class ZookeeperPropertiesTest { ...@@ -41,7 +41,7 @@ public final class ZookeeperPropertiesTest {
assertThat(actual.getValue(ZookeeperPropertyKey.OPERATION_TIMEOUT_MILLISECONDS), is(6000)); assertThat(actual.getValue(ZookeeperPropertyKey.OPERATION_TIMEOUT_MILLISECONDS), is(6000));
assertThat(actual.getValue(ZookeeperPropertyKey.DIGEST), is("any")); assertThat(actual.getValue(ZookeeperPropertyKey.DIGEST), is("any"));
} }
@Test @Test
public void assertGetDefaultValue() { public void assertGetDefaultValue() {
Properties props = new Properties(); Properties props = new Properties();
......
...@@ -28,7 +28,7 @@ import java.util.List; ...@@ -28,7 +28,7 @@ import java.util.List;
*/ */
@RequiredArgsConstructor @RequiredArgsConstructor
@Getter @Getter
public class RouteContext { public final class RouteContext {
private final SQLStatementContext sqlStatementContext; private final SQLStatementContext sqlStatementContext;
......
...@@ -18,11 +18,13 @@ ...@@ -18,11 +18,13 @@
package org.apache.shardingsphere.underlying.route.context; package org.apache.shardingsphere.underlying.route.context;
import lombok.Getter; import lombok.Getter;
import org.apache.shardingsphere.underlying.common.rule.DataNode;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
...@@ -35,6 +37,8 @@ import java.util.stream.Collectors; ...@@ -35,6 +37,8 @@ import java.util.stream.Collectors;
@Getter @Getter
public final class RouteResult { public final class RouteResult {
private final Collection<Collection<DataNode>> originalDataNodes = new LinkedList<>();
private final Collection<RouteUnit> routeUnits = new LinkedHashSet<>(); private final Collection<RouteUnit> routeUnits = new LinkedHashSet<>();
/** /**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册