Skip to content

Commit

Permalink
Merge 9183e46 into 6f98a56
Browse files Browse the repository at this point in the history
  • Loading branch information
wgy8283335 committed Jul 24, 2019
2 parents 6f98a56 + 9183e46 commit fa34d75
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 15 deletions.
Expand Up @@ -66,7 +66,8 @@ public ShardingInsertOptimizedStatement optimize(final ShardingRule shardingRule
int derivedColumnsCount = getDerivedColumnsCount(shardingRule, tableName, isGeneratedValue);
int parametersCount = 0;
for (InsertValue each : result.getValues()) {
InsertOptimizeResultUnit unit = result.addUnit(each.getValues(derivedColumnsCount), each.getParameters(parameters, parametersCount, derivedColumnsCount), each.getParametersCount());
InsertOptimizeResultUnit unit = result.createUnit(each.getValues(derivedColumnsCount), each.getParameters(parameters, parametersCount, derivedColumnsCount), each.getParametersCount());
result.addUnit(unit);
if (isGeneratedValue) {
unit.addInsertValue(generatedValues.next(), parameters);
}
Expand Down
Expand Up @@ -63,21 +63,29 @@ public ShardingInsertOptimizedStatement(final SQLStatement sqlStatement, final L
this.values = values;
this.generatedKey = generatedKey;
}

/**
* Add insert optimize result uint.
* Create insert optimize unit.
*
* @param insertValues insert values
* @param parameters SQL parameters
* @param startIndexOfAppendedParameters start index of appended parameters
* @return insert optimize result unit
*/
public InsertOptimizeResultUnit addUnit(final ExpressionSegment[] insertValues, final Object[] parameters, final int startIndexOfAppendedParameters) {
public InsertOptimizeResultUnit createUnit(final ExpressionSegment[] insertValues, final Object[] parameters, final int startIndexOfAppendedParameters) {
InsertOptimizeResultUnit result = new InsertOptimizeResultUnit(insertColumns.getAllColumnNames(), insertValues, parameters, startIndexOfAppendedParameters);
units.add(result);
return result;
}


/**
* Add insert optimize result unit into units.
*
* @param insertOptimizeResultUnit one insertOptimizeResultUnit object
*/
public void addUnit(final InsertOptimizeResultUnit insertOptimizeResultUnit) {
units.add(insertOptimizeResultUnit);
}

/**
* Get generated key.
*
Expand Down
Expand Up @@ -45,7 +45,8 @@ public void assertAddUnitWithSet() {
new InsertStatement(), Collections.<ShardingCondition>emptyList(), insertColumns, Collections.<InsertValue>emptyList(), null);
ExpressionSegment[] expressions = {new LiteralExpressionSegment(0, 0, 1), new ParameterMarkerExpressionSegment(0, 0, 1), new LiteralExpressionSegment(0, 0, "test")};
Object[] parameters = {"parameter"};
insertClauseOptimizedStatement.addUnit(expressions, parameters, 1);
InsertOptimizeResultUnit unit = insertClauseOptimizedStatement.createUnit(expressions, parameters, 1);
insertClauseOptimizedStatement.addUnit(unit);
assertThat(insertClauseOptimizedStatement.getInsertColumns().getAllColumnNames().size(), is(3));
assertThat(insertClauseOptimizedStatement.getUnits().get(0).getValues(), is(expressions));
assertThat(insertClauseOptimizedStatement.getUnits().get(0).getParameters()[0], is((Object) "parameter"));
Expand Down
Expand Up @@ -25,6 +25,7 @@
import org.apache.shardingsphere.core.optimize.encrypt.segment.condition.EncryptConditions;
import org.apache.shardingsphere.core.optimize.sharding.segment.condition.ShardingCondition;
import org.apache.shardingsphere.core.optimize.sharding.segment.condition.ShardingConditions;
import org.apache.shardingsphere.core.optimize.sharding.segment.insert.InsertOptimizeResultUnit;
import org.apache.shardingsphere.core.optimize.sharding.segment.insert.ShardingInsertColumns;
import org.apache.shardingsphere.core.optimize.sharding.segment.select.groupby.GroupBy;
import org.apache.shardingsphere.core.optimize.sharding.segment.select.item.AggregationSelectItem;
Expand Down Expand Up @@ -219,7 +220,8 @@ private SQLRouteResult createRouteResultForAutoGeneratedKeyColumn() {
ShardingInsertOptimizedStatement optimizedStatement = new ShardingInsertOptimizedStatement(
insertStatement, Collections.<ShardingCondition>emptyList(), insertColumns, Collections.singletonList(new InsertValue(Collections.<ExpressionSegment>emptyList())), null);
ExpressionSegment[] expressionSegments = {new ParameterMarkerExpressionSegment(0, 0, 0), new ParameterMarkerExpressionSegment(0, 0, 1), new ParameterMarkerExpressionSegment(0, 0, 2)};
optimizedStatement.addUnit(expressionSegments, new Object[] {"x", 1, 1}, 3);
InsertOptimizeResultUnit unit = optimizedStatement.createUnit(expressionSegments, new Object[] {"x", 1, 1}, 3);
optimizedStatement.addUnit(unit);
optimizedStatement.getUnits().get(0).getDataNodes().add(new DataNode("db0.table_1"));
SQLRouteResult result = new SQLRouteResult(optimizedStatement);
result.setRoutingResult(new RoutingResult());
Expand All @@ -246,7 +248,8 @@ private SQLRouteResult createRouteResultForAutoGeneratedKeyColumnWithoutColumnsW
ShardingInsertOptimizedStatement optimizedStatement = new ShardingInsertOptimizedStatement(
insertStatement, Collections.<ShardingCondition>emptyList(), insertColumns, Collections.singletonList(new InsertValue(Collections.<ExpressionSegment>emptyList())), null);
ExpressionSegment[] expressionSegments = {new ParameterMarkerExpressionSegment(0, 0, 0), new ParameterMarkerExpressionSegment(0, 0, 1)};
optimizedStatement.addUnit(expressionSegments, new Object[] {"Bill", 1}, 2);
InsertOptimizeResultUnit unit = optimizedStatement.createUnit(expressionSegments, new Object[] {"Bill", 1}, 2);
optimizedStatement.addUnit(unit);
optimizedStatement.getUnits().get(0).getDataNodes().add(new DataNode("db0.table_1"));
SQLRouteResult result = new SQLRouteResult(optimizedStatement);
result.setRoutingResult(new RoutingResult());
Expand All @@ -273,7 +276,8 @@ private SQLRouteResult createRouteResultForAutoGeneratedKeyColumnWithoutColumnsW
ShardingInsertOptimizedStatement optimizedStatement = new ShardingInsertOptimizedStatement(
insertStatement, Collections.<ShardingCondition>emptyList(), insertColumns, Collections.singletonList(new InsertValue(Collections.<ExpressionSegment>emptyList())), null);
ExpressionSegment[] expressionSegments = {new LiteralExpressionSegment(0, 0, 10), new LiteralExpressionSegment(0, 0, 1)};
optimizedStatement.addUnit(expressionSegments, new Object[0], 0);
InsertOptimizeResultUnit unit = optimizedStatement.createUnit(expressionSegments, new Object[0], 0);
optimizedStatement.addUnit(unit);
optimizedStatement.getUnits().get(0).getDataNodes().add(new DataNode("db0.table_1"));
SQLRouteResult result = new SQLRouteResult(optimizedStatement);
result.setRoutingResult(new RoutingResult());
Expand All @@ -300,7 +304,8 @@ private SQLRouteResult createRouteResultForDuplicateKeyWithoutColumnsWithoutPara
ShardingInsertOptimizedStatement optimizedStatement = new ShardingInsertOptimizedStatement(
insertStatement, Collections.<ShardingCondition>emptyList(), insertColumns, Collections.singletonList(new InsertValue(Collections.<ExpressionSegment>emptyList())), null);
ExpressionSegment[] expressionSegments = {new LiteralExpressionSegment(0, 0, 10), new LiteralExpressionSegment(0, 0, 1)};
optimizedStatement.addUnit(expressionSegments, new Object[0], 0);
InsertOptimizeResultUnit unit = optimizedStatement.createUnit(expressionSegments, new Object[0], 0);
optimizedStatement.addUnit(unit);
optimizedStatement.getUnits().get(0).getDataNodes().add(new DataNode("db0.table_1"));
SQLRouteResult result = new SQLRouteResult(optimizedStatement);
result.setRoutingResult(new RoutingResult());
Expand All @@ -326,7 +331,8 @@ private SQLRouteResult createRouteResultForDuplicateKeyWithSetWithoutParameter()
ShardingInsertOptimizedStatement optimizedStatement = new ShardingInsertOptimizedStatement(
insertStatement, Collections.<ShardingCondition>emptyList(), insertColumns, Collections.singletonList(new InsertValue(Collections.<ExpressionSegment>emptyList())), null);
ExpressionSegment[] expressionSegments = {new LiteralExpressionSegment(0, 0, 10), new LiteralExpressionSegment(0, 0, 1)};
optimizedStatement.addUnit(expressionSegments, new Object[0], 0);
InsertOptimizeResultUnit unit = optimizedStatement.createUnit(expressionSegments, new Object[0], 0);
optimizedStatement.addUnit(unit);
optimizedStatement.getUnits().get(0).getDataNodes().add(new DataNode("db0.table_1"));
SQLRouteResult result = new SQLRouteResult(optimizedStatement);
result.setRoutingResult(new RoutingResult());
Expand All @@ -353,7 +359,8 @@ private SQLRouteResult createRouteResultForColumnWithoutColumnsWithoutParameter(
ShardingInsertOptimizedStatement optimizedStatement = new ShardingInsertOptimizedStatement(
insertStatement, Collections.<ShardingCondition>emptyList(), insertColumns, Collections.singletonList(new InsertValue(Collections.<ExpressionSegment>emptyList())), null);
ExpressionSegment[] expressionSegments = {new LiteralExpressionSegment(0, 0, 10), new LiteralExpressionSegment(0, 0, 1)};
optimizedStatement.addUnit(expressionSegments, new Object[0], 0);
InsertOptimizeResultUnit unit = optimizedStatement.createUnit(expressionSegments, new Object[0], 0);
optimizedStatement.addUnit(unit);
optimizedStatement.getUnits().get(0).getDataNodes().add(new DataNode("db0.table_1"));
SQLRouteResult result = new SQLRouteResult(optimizedStatement);
result.setRoutingResult(new RoutingResult());
Expand All @@ -379,7 +386,8 @@ private SQLRouteResult createRouteResultForColumnWithoutColumnsWithParameter() {
ShardingInsertOptimizedStatement optimizedStatement = new ShardingInsertOptimizedStatement(
insertStatement, Collections.<ShardingCondition>emptyList(), insertColumns, Collections.singletonList(new InsertValue(Collections.<ExpressionSegment>emptyList())), null);
ExpressionSegment[] expressionSegments = {new ParameterMarkerExpressionSegment(0, 0, 0), new ParameterMarkerExpressionSegment(0, 0, 1)};
optimizedStatement.addUnit(expressionSegments, new Object[] {"x", 1}, 2);
InsertOptimizeResultUnit unit = optimizedStatement.createUnit(expressionSegments, new Object[] {"x", 1}, 2);
optimizedStatement.addUnit(unit);
optimizedStatement.getUnits().get(0).getDataNodes().add(new DataNode("db0.table_1"));
SQLRouteResult result = new SQLRouteResult(optimizedStatement);
result.setRoutingResult(new RoutingResult());
Expand Down Expand Up @@ -962,7 +970,8 @@ private SQLRouteResult createSQLRouteResultForInsertWithQueryAssistedShardingEnc
ShardingInsertOptimizedStatement optimizedStatement = new ShardingInsertOptimizedStatement(insertStatement, Collections.<ShardingCondition>emptyList(), insertColumns,
Collections.singletonList(new InsertValue(Collections.<ExpressionSegment>singletonList(new LiteralExpressionSegment(33, 34, 10)))), null);
ExpressionSegment[] expressionSegments = {new LiteralExpressionSegment(0, 0, 10), new LiteralExpressionSegment(0, 0, 1), new LiteralExpressionSegment(0, 0, 10)};
optimizedStatement.addUnit(expressionSegments, new Object[0], 0);
InsertOptimizeResultUnit unit = optimizedStatement.createUnit(expressionSegments, new Object[0], 0);
optimizedStatement.addUnit(unit);
optimizedStatement.getUnits().get(0).getDataNodes().add(new DataNode("db0.table_1"));
SQLRouteResult result = new SQLRouteResult(optimizedStatement);
result.setRoutingResult(new RoutingResult());
Expand Down

0 comments on commit fa34d75

Please sign in to comment.