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

Decouple ParameterBuilder and route (#3214)

* remove getter of GroupedParameterBuilder.parameterGroups

* rename GroupedParameterBuilder.parameterGroups to groupedParameters

* add GroupedParameterBuilder.getParameters(count)

* move sharding logic from GroupedParameterBuilder to ShardingSQLRewriteEngine

* remove GroupedParameterBuilder.shardingConditions

* refactor ShardingSQLRewriteEngine

* reuse StandardParameterBuilder on GroupedParameterBuilder

* refactor ParameterRewriterBuilder.getParameterRewriters()
上级 70cc0b8e
......@@ -114,7 +114,8 @@ public abstract class BaseShardingEngine {
new EncryptSQLRewriteContextDecorator(shardingRule.getEncryptRule(), isQueryWithCipherColumn).decorate(sqlRewriteContext);
Collection<RouteUnit> result = new LinkedHashSet<>();
for (RoutingUnit each : sqlRouteResult.getRoutingResult().getRoutingUnits()) {
ShardingSQLRewriteEngine sqlRewriteEngine = new ShardingSQLRewriteEngine(each, getLogicAndActualTables(each, sqlRouteResult.getSqlStatementContext().getTablesContext().getTableNames()));
ShardingSQLRewriteEngine sqlRewriteEngine = new ShardingSQLRewriteEngine(
sqlRouteResult.getShardingConditions(), each, getLogicAndActualTables(each, sqlRouteResult.getSqlStatementContext().getTablesContext().getTableNames()));
SQLRewriteResult sqlRewriteResult = sqlRewriteEngine.rewrite(sqlRewriteContext);
result.add(new RouteUnit(each.getDataSourceName(), new SQLUnit(sqlRewriteResult.getSql(), sqlRewriteResult.getParameters())));
}
......
......@@ -39,8 +39,7 @@ public final class EncryptSQLRewriteContextDecorator implements SQLRewriteContex
@Override
public void decorate(final SQLRewriteContext sqlRewriteContext) {
for (ParameterRewriter each : new EncryptParameterRewriterBuilder(encryptRule, isQueryWithCipherColumn).getParameterRewriters(
sqlRewriteContext.getParameterBuilder(), sqlRewriteContext.getTableMetas())) {
for (ParameterRewriter each : new EncryptParameterRewriterBuilder(encryptRule, isQueryWithCipherColumn).getParameterRewriters(sqlRewriteContext.getTableMetas())) {
each.rewrite(sqlRewriteContext.getParameterBuilder(), sqlRewriteContext.getSqlStatementContext(), sqlRewriteContext.getParameters());
}
sqlRewriteContext.addSQLTokenGenerators(new EncryptTokenGenerateBuilder(encryptRule, isQueryWithCipherColumn).getSQLTokenGenerators());
......
......@@ -22,11 +22,10 @@ import org.apache.shardingsphere.core.metadata.table.TableMetas;
import org.apache.shardingsphere.core.rewrite.feature.encrypt.parameter.impl.EncryptAssignmentParameterRewriter;
import org.apache.shardingsphere.core.rewrite.feature.encrypt.parameter.impl.EncryptInsertValueParameterRewriter;
import org.apache.shardingsphere.core.rewrite.feature.encrypt.parameter.impl.EncryptPredicateParameterRewriter;
import org.apache.shardingsphere.core.rewrite.parameter.builder.ParameterBuilder;
import org.apache.shardingsphere.core.rewrite.parameter.rewriter.ParameterRewriter;
import org.apache.shardingsphere.core.rewrite.parameter.rewriter.ParameterRewriterBuilder;
import org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.EncryptRuleAware;
import org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.QueryWithCipherColumnAware;
import org.apache.shardingsphere.core.rewrite.parameter.rewriter.ParameterRewriter;
import org.apache.shardingsphere.core.rewrite.parameter.rewriter.ParameterRewriterBuilder;
import org.apache.shardingsphere.core.rewrite.sql.token.generator.aware.TableMetasAware;
import org.apache.shardingsphere.core.rule.EncryptRule;
......@@ -46,7 +45,7 @@ public final class EncryptParameterRewriterBuilder implements ParameterRewriterB
private final boolean queryWithCipherColumn;
@Override
public Collection<ParameterRewriter> getParameterRewriters(final ParameterBuilder parameterBuilder, final TableMetas tableMetas) {
public Collection<ParameterRewriter> getParameterRewriters(final TableMetas tableMetas) {
Collection<ParameterRewriter> result = getParameterRewriters();
for (ParameterRewriter each : result) {
setUpParameterRewriters(each, tableMetas);
......
......@@ -23,10 +23,11 @@ import lombok.Setter;
import org.apache.shardingsphere.core.optimize.segment.insert.InsertValueContext;
import org.apache.shardingsphere.core.optimize.statement.SQLStatementContext;
import org.apache.shardingsphere.core.optimize.statement.impl.InsertSQLStatementContext;
import org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.EncryptRuleAware;
import org.apache.shardingsphere.core.rewrite.parameter.builder.ParameterBuilder;
import org.apache.shardingsphere.core.rewrite.parameter.builder.impl.GroupedParameterBuilder;
import org.apache.shardingsphere.core.rewrite.parameter.builder.impl.StandardParameterBuilder;
import org.apache.shardingsphere.core.rewrite.parameter.rewriter.ParameterRewriter;
import org.apache.shardingsphere.core.rewrite.feature.encrypt.token.generator.EncryptRuleAware;
import org.apache.shardingsphere.core.rule.EncryptRule;
import org.apache.shardingsphere.core.strategy.encrypt.EncryptTable;
import org.apache.shardingsphere.spi.encrypt.ShardingEncryptor;
......@@ -34,7 +35,6 @@ import org.apache.shardingsphere.spi.encrypt.ShardingQueryAssistedEncryptor;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* Insert value parameter rewriter for encrypt.
......@@ -64,33 +64,34 @@ public final class EncryptInsertValueParameterRewriter implements ParameterRewri
}
}
private void encryptInsertValues(final GroupedParameterBuilder parameterBuilder, final InsertSQLStatementContext insertSQLStatementContext,
private void encryptInsertValues(final GroupedParameterBuilder parameterBuilder, final InsertSQLStatementContext sqlStatementContext,
final EncryptRule encryptRule, final ShardingEncryptor shardingEncryptor, final String tableName, final String encryptLogicColumnName) {
int columnIndex = insertSQLStatementContext.getColumnNames().indexOf(encryptLogicColumnName);
Iterator<InsertValueContext> insertValueContexts = insertSQLStatementContext.getInsertValueContexts().iterator();
int columnIndex = sqlStatementContext.getColumnNames().indexOf(encryptLogicColumnName);
Iterator<InsertValueContext> insertValueContexts = sqlStatementContext.getInsertValueContexts().iterator();
int count = 0;
for (List<Object> each : parameterBuilder.getParameterGroups()) {
for (List<Object> each : sqlStatementContext.getGroupedParameters()) {
if (!each.isEmpty()) {
encryptInsertValue(encryptRule, shardingEncryptor, tableName, columnIndex, each.size(), insertValueContexts.next().getValue(columnIndex),
parameterBuilder.getAddedIndexAndParameterGroups().get(count), parameterBuilder.getReplacedIndexAndParameterGroups().get(count), encryptLogicColumnName);
encryptInsertValue(encryptRule, shardingEncryptor, tableName, columnIndex, each.size(),
insertValueContexts.next().getValue(columnIndex), parameterBuilder.getParameterBuilders().get(count), encryptLogicColumnName);
}
count++;
}
}
private void encryptInsertValue(final EncryptRule encryptRule, final ShardingEncryptor shardingEncryptor, final String tableName, final int columnIndex, final int parameterSize,
final Object originalValue, final Map<Integer, Object> addedParameters, final Map<Integer, Object> replacedParameters, final String encryptLogicColumnName) {
private void encryptInsertValue(final EncryptRule encryptRule, final ShardingEncryptor shardingEncryptor, final String tableName, final int columnIndex, final int parameterSize,
final Object originalValue, final StandardParameterBuilder parameterBuilder, final String encryptLogicColumnName) {
// FIXME: can process all part of insert value is ? or literal, can not process mix ? and literal
// For example: values (?, ?), (1, 1) can process
// For example: values (?, 1), (?, 2) can not process
replacedParameters.put(columnIndex, shardingEncryptor.encrypt(originalValue));
parameterBuilder.getReplacedIndexAndParameters().put(columnIndex, shardingEncryptor.encrypt(originalValue));
if (shardingEncryptor instanceof ShardingQueryAssistedEncryptor) {
Optional<String> assistedColumnName = encryptRule.findAssistedQueryColumn(tableName, encryptLogicColumnName);
Preconditions.checkArgument(assistedColumnName.isPresent(), "Can not find assisted query Column Name");
addedParameters.put(parameterSize + addedParameters.size(), ((ShardingQueryAssistedEncryptor) shardingEncryptor).queryAssistedEncrypt(originalValue.toString()));
parameterBuilder.getAddedIndexAndParameters().put(parameterSize + parameterBuilder.getAddedIndexAndParameters().size(),
((ShardingQueryAssistedEncryptor) shardingEncryptor).queryAssistedEncrypt(originalValue.toString()));
}
if (encryptRule.findPlainColumn(tableName, encryptLogicColumnName).isPresent()) {
addedParameters.put(parameterSize + addedParameters.size(), originalValue);
parameterBuilder.getAddedIndexAndParameters().put(parameterSize + parameterBuilder.getAddedIndexAndParameters().size(), originalValue);
}
}
}
......@@ -40,8 +40,7 @@ public final class ShardingSQLRewriteContextDecorator implements SQLRewriteConte
@Override
public void decorate(final SQLRewriteContext sqlRewriteContext) {
for (ParameterRewriter each : new ShardingParameterRewriterBuilder(shardingRule, sqlRouteResult).getParameterRewriters(
sqlRewriteContext.getParameterBuilder(), sqlRewriteContext.getTableMetas())) {
for (ParameterRewriter each : new ShardingParameterRewriterBuilder(shardingRule, sqlRouteResult).getParameterRewriters(sqlRewriteContext.getTableMetas())) {
each.rewrite(sqlRewriteContext.getParameterBuilder(), sqlRewriteContext.getSqlStatementContext(), sqlRewriteContext.getParameters());
}
sqlRewriteContext.addSQLTokenGenerators(new ShardingTokenGenerateBuilder(shardingRule, sqlRouteResult).getSQLTokenGenerators());
......
......@@ -21,8 +21,17 @@ import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.core.rewrite.context.SQLRewriteContext;
import org.apache.shardingsphere.core.rewrite.engine.SQLRewriteEngine;
import org.apache.shardingsphere.core.rewrite.engine.SQLRewriteResult;
import org.apache.shardingsphere.core.rewrite.parameter.builder.ParameterBuilder;
import org.apache.shardingsphere.core.rewrite.parameter.builder.impl.GroupedParameterBuilder;
import org.apache.shardingsphere.core.rewrite.parameter.builder.impl.StandardParameterBuilder;
import org.apache.shardingsphere.core.route.router.sharding.condition.ShardingCondition;
import org.apache.shardingsphere.core.route.router.sharding.condition.ShardingConditions;
import org.apache.shardingsphere.core.route.type.RoutingUnit;
import org.apache.shardingsphere.core.rule.DataNode;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
/**
......@@ -33,12 +42,44 @@ import java.util.Map;
@RequiredArgsConstructor
public final class ShardingSQLRewriteEngine implements SQLRewriteEngine {
private final ShardingConditions shardingConditions;
private final RoutingUnit routingUnit;
private final Map<String, String> logicAndActualTables;
@Override
public SQLRewriteResult rewrite(final SQLRewriteContext sqlRewriteContext) {
return new SQLRewriteResult(sqlRewriteContext.getSQLBuilder().toSQL(routingUnit, logicAndActualTables), sqlRewriteContext.getParameterBuilder().getParameters(routingUnit));
return new SQLRewriteResult(sqlRewriteContext.getSQLBuilder().toSQL(routingUnit, logicAndActualTables), getParameters(sqlRewriteContext.getParameterBuilder()));
}
private List<Object> getParameters(final ParameterBuilder parameterBuilder) {
if (parameterBuilder instanceof StandardParameterBuilder || shardingConditions.getConditions().isEmpty()) {
return parameterBuilder.getParameters();
}
if (parameterBuilder.getParameters().isEmpty()) {
return Collections.emptyList();
}
List<Object> result = new LinkedList<>();
int count = 0;
for (ShardingCondition each : shardingConditions.getConditions()) {
if (isInSameDataNode(each)) {
result.addAll(((GroupedParameterBuilder) parameterBuilder).getParameters(count));
}
count++;
}
return result;
}
private boolean isInSameDataNode(final ShardingCondition shardingCondition) {
if (shardingCondition.getDataNodes().isEmpty()) {
return true;
}
for (DataNode each : shardingCondition.getDataNodes()) {
if (routingUnit.getTableUnit(each.getDataSourceName(), each.getTableName()).isPresent()) {
return true;
}
}
return false;
}
}
......@@ -19,14 +19,12 @@ package org.apache.shardingsphere.core.rewrite.feature.sharding.parameter;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.core.metadata.table.TableMetas;
import org.apache.shardingsphere.core.rewrite.feature.sharding.parameter.impl.ShardingPaginationParameterRewriter;
import org.apache.shardingsphere.core.rewrite.parameter.builder.ParameterBuilder;
import org.apache.shardingsphere.core.rewrite.parameter.rewriter.ParameterRewriter;
import org.apache.shardingsphere.core.rewrite.parameter.rewriter.ParameterRewriterBuilder;
import org.apache.shardingsphere.core.rewrite.parameter.builder.impl.GroupedParameterBuilder;
import org.apache.shardingsphere.core.rewrite.feature.sharding.parameter.impl.ShardingGeneratedKeyInsertValueParameterRewriter;
import org.apache.shardingsphere.core.rewrite.feature.sharding.parameter.impl.ShardingPaginationParameterRewriter;
import org.apache.shardingsphere.core.rewrite.feature.sharding.token.generator.SQLRouteResultAware;
import org.apache.shardingsphere.core.rewrite.feature.sharding.token.generator.ShardingRuleAware;
import org.apache.shardingsphere.core.rewrite.parameter.rewriter.ParameterRewriter;
import org.apache.shardingsphere.core.rewrite.parameter.rewriter.ParameterRewriterBuilder;
import org.apache.shardingsphere.core.rewrite.sql.token.generator.aware.TableMetasAware;
import org.apache.shardingsphere.core.route.SQLRouteResult;
import org.apache.shardingsphere.core.rule.ShardingRule;
......@@ -47,10 +45,7 @@ public final class ShardingParameterRewriterBuilder implements ParameterRewriter
private final SQLRouteResult sqlRouteResult;
@Override
public Collection<ParameterRewriter> getParameterRewriters(final ParameterBuilder parameterBuilder, final TableMetas tableMetas) {
if (parameterBuilder instanceof GroupedParameterBuilder) {
((GroupedParameterBuilder) parameterBuilder).setShardingConditions(sqlRouteResult.getShardingConditions());
}
public Collection<ParameterRewriter> getParameterRewriters(final TableMetas tableMetas) {
Collection<ParameterRewriter> result = getParameterRewriters();
for (ParameterRewriter each : result) {
setUpParameterRewriters(each, tableMetas);
......
......@@ -44,10 +44,10 @@ public final class ShardingGeneratedKeyInsertValueParameterRewriter implements P
if (sqlStatementContext instanceof InsertSQLStatementContext && sqlRouteResult.getGeneratedKey().isPresent() && sqlRouteResult.getGeneratedKey().get().isGenerated()) {
Iterator<Comparable<?>> generatedValues = sqlRouteResult.getGeneratedKey().get().getGeneratedValues().descendingIterator();
int count = 0;
for (List<Object> each : ((GroupedParameterBuilder) parameterBuilder).getParameterGroups()) {
for (List<Object> each : ((InsertSQLStatementContext) sqlStatementContext).getGroupedParameters()) {
Comparable<?> generatedValue = generatedValues.next();
if (!each.isEmpty()) {
((GroupedParameterBuilder) parameterBuilder).getAddedIndexAndParameterGroups().get(count).put(each.size(), generatedValue);
((GroupedParameterBuilder) parameterBuilder).getParameterBuilders().get(count).getAddedIndexAndParameters().put(each.size(), generatedValue);
}
count++;
}
......
......@@ -17,8 +17,6 @@
package org.apache.shardingsphere.core.rewrite.parameter.builder;
import org.apache.shardingsphere.core.route.type.RoutingUnit;
import java.util.List;
/**
......@@ -34,12 +32,4 @@ public interface ParameterBuilder {
* @return parameters
*/
List<Object> getParameters();
/**
* Get parameters.
*
* @param routingUnit routing unit
* @return parameters
*/
List<Object> getParameters(RoutingUnit routingUnit);
}
......@@ -18,20 +18,11 @@
package org.apache.shardingsphere.core.rewrite.parameter.builder.impl;
import lombok.Getter;
import lombok.Setter;
import org.apache.shardingsphere.core.rewrite.parameter.builder.ParameterBuilder;
import org.apache.shardingsphere.core.route.router.sharding.condition.ShardingCondition;
import org.apache.shardingsphere.core.route.router.sharding.condition.ShardingConditions;
import org.apache.shardingsphere.core.route.type.RoutingUnit;
import org.apache.shardingsphere.core.rule.DataNode;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
/**
* Grouped Parameter builder.
......@@ -39,85 +30,34 @@ import java.util.Map.Entry;
* @author panjuan
* @author zhangliang
*/
@Getter
public final class GroupedParameterBuilder implements ParameterBuilder {
@Getter
private final List<List<Object>> parameterGroups;
private final List<StandardParameterBuilder> parameterBuilders;
@Setter
private ShardingConditions shardingConditions;
@Getter
private final List<Map<Integer, Object>> addedIndexAndParameterGroups;
@Getter
private final List<Map<Integer, Object>> replacedIndexAndParameterGroups;
public GroupedParameterBuilder(final List<List<Object>> parameterGroups) {
this.parameterGroups = parameterGroups;
addedIndexAndParameterGroups = createAdditionalParameterGroups();
replacedIndexAndParameterGroups = createAdditionalParameterGroups();
}
private List<Map<Integer, Object>> createAdditionalParameterGroups() {
List<Map<Integer, Object>> result = new ArrayList<>(parameterGroups.size());
for (int i = 0; i < parameterGroups.size(); i++) {
result.add(new HashMap<Integer, Object>());
public GroupedParameterBuilder(final List<List<Object>> groupedParameters) {
parameterBuilders = new ArrayList<>(groupedParameters.size());
for (List<Object> each : groupedParameters) {
parameterBuilders.add(new StandardParameterBuilder(each));
}
return result;
}
@Override
public List<Object> getParameters() {
List<Object> result = new LinkedList<>();
int count = 0;
for (List<Object> each : parameterGroups) {
result.addAll(getParameters(each, count));
count++;
}
return result;
}
@Override
public List<Object> getParameters(final RoutingUnit routingUnit) {
List<Object> result = new LinkedList<>();
Iterator<ShardingCondition> shardingConditionIterator = shardingConditions.getConditions().iterator();
int count = 0;
for (List<Object> each : parameterGroups) {
if (!shardingConditionIterator.hasNext() || isInSameDataNode(shardingConditionIterator.next(), routingUnit)) {
result.addAll(getParameters(each, count));
}
count++;
}
return result;
}
private List<Object> getParameters(final List<Object> parameterGroup, final int count) {
List<Object> result = new LinkedList<>();
result.addAll(parameterGroup);
for (Entry<Integer, Object> entry : replacedIndexAndParameterGroups.get(count).entrySet()) {
result.set(entry.getKey(), entry.getValue());
}
for (Entry<Integer, Object> entry : addedIndexAndParameterGroups.get(count).entrySet()) {
int index = entry.getKey();
if (index < result.size()) {
result.add(index, entry.getValue());
} else {
result.add(entry.getValue());
}
for (int i = 0; i < parameterBuilders.size(); i++) {
result.addAll(getParameters(i));
}
return result;
}
private boolean isInSameDataNode(final ShardingCondition shardingCondition, final RoutingUnit routingUnit) {
if (shardingCondition.getDataNodes().isEmpty()) {
return true;
}
for (DataNode each : shardingCondition.getDataNodes()) {
if (routingUnit.getTableUnit(each.getDataSourceName(), each.getTableName()).isPresent()) {
return true;
}
}
return false;
/**
* Get parameters.
*
* @param count parameters group count
* @return parameters
*/
public List<Object> getParameters(final int count) {
return parameterBuilders.get(count).getParameters();
}
}
......@@ -20,7 +20,6 @@ package org.apache.shardingsphere.core.rewrite.parameter.builder.impl;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.core.rewrite.parameter.builder.ParameterBuilder;
import org.apache.shardingsphere.core.route.type.RoutingUnit;
import java.util.LinkedHashMap;
import java.util.LinkedList;
......@@ -51,13 +50,13 @@ public final class StandardParameterBuilder implements ParameterBuilder {
result.set(entry.getKey(), entry.getValue());
}
for (Entry<Integer, Object> entry : addedIndexAndParameters.entrySet()) {
result.add(entry.getKey(), entry.getValue());
int index = entry.getKey();
if (index < result.size()) {
result.add(index, entry.getValue());
} else {
result.add(entry.getValue());
}
}
return result;
}
@Override
public List<Object> getParameters(final RoutingUnit routingUnit) {
return getParameters();
}
}
......@@ -18,7 +18,6 @@
package org.apache.shardingsphere.core.rewrite.parameter.rewriter;
import org.apache.shardingsphere.core.metadata.table.TableMetas;
import org.apache.shardingsphere.core.rewrite.parameter.builder.ParameterBuilder;
import java.util.Collection;
......@@ -32,9 +31,8 @@ public interface ParameterRewriterBuilder {
/**
* Get parameter rewriters.
*
* @param parameterBuilder parameter builder
* @param tableMetas table metas
* @return parameter rewriters
*/
Collection<ParameterRewriter> getParameterRewriters(ParameterBuilder parameterBuilder, TableMetas tableMetas);
Collection<ParameterRewriter> getParameterRewriters(TableMetas tableMetas);
}
......@@ -17,12 +17,6 @@
package org.apache.shardingsphere.core.rewrite.parameter.builder.impl;
import org.apache.shardingsphere.core.route.router.sharding.condition.ShardingCondition;
import org.apache.shardingsphere.core.route.router.sharding.condition.ShardingConditions;
import org.apache.shardingsphere.core.route.type.RoutingUnit;
import org.apache.shardingsphere.core.route.type.TableUnit;
import org.apache.shardingsphere.core.rule.DataNode;
import org.junit.Before;
import org.junit.Test;
import java.util.Arrays;
......@@ -34,12 +28,10 @@ import static org.junit.Assert.assertThat;
public final class GroupedParameterBuilderTest {
private GroupedParameterBuilder parameterBuilder;
@Before
public void setUp() {
parameterBuilder = new GroupedParameterBuilder(createGroupedParameters());
parameterBuilder.setShardingConditions(createShardingConditions());
@Test
public void assertGetParameters() {
GroupedParameterBuilder actual = new GroupedParameterBuilder(createGroupedParameters());
assertThat(actual.getParameters(), is(Arrays.<Object>asList(3, 4, 5, 6)));
}
private List<List<Object>> createGroupedParameters() {
......@@ -48,24 +40,4 @@ public final class GroupedParameterBuilderTest {
result.add(Arrays.<Object>asList(5, 6));
return result;
}
private ShardingConditions createShardingConditions() {
ShardingCondition shardingCondition1 = new ShardingCondition();
shardingCondition1.getDataNodes().add(new DataNode("db1.tb1"));
ShardingCondition shardingCondition2 = new ShardingCondition();
shardingCondition2.getDataNodes().add(new DataNode("db2.tb2"));
return new ShardingConditions(Arrays.asList(shardingCondition1, shardingCondition2));
}
@Test
public void assertGetParameters() {
assertThat(parameterBuilder.getParameters(), is(Arrays.<Object>asList(3, 4, 5, 6)));
}
@Test
public void assertGetParametersWithRoutingUnit() {
RoutingUnit routingUnit = new RoutingUnit("db1");
routingUnit.getTableUnits().add(new TableUnit("tb1", "tb1"));
assertThat(parameterBuilder.getParameters(routingUnit), is(Arrays.<Object>asList(3, 4)));
}
}
......@@ -35,7 +35,7 @@ import java.util.Set;
* @author zhangliang
*/
@Getter
public class RoutingResult {
public final class RoutingResult {
private final Collection<RoutingUnit> routingUnits = new LinkedHashSet<>();
......
......@@ -117,8 +117,7 @@ public final class PreparedStatementExecutor extends AbstractStatementExecutor {
ShardingRule shardingRule = getConnection().getRuntimeContext().getRule();
ShardingProperties properties = getConnection().getRuntimeContext().getProps();
getResultSets().add(resultSet);
return ConnectionMode.MEMORY_STRICTLY == connectionMode ? new StreamQueryResult(resultSet, shardingRule, properties)
: new MemoryQueryResult(resultSet, shardingRule, properties);
return ConnectionMode.MEMORY_STRICTLY == connectionMode ? new StreamQueryResult(resultSet, shardingRule, properties) : new MemoryQueryResult(resultSet, shardingRule, properties);
}
/**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册