Skip to content

Commit 41999da

Browse files
committed
for #701: remove parameters count dependency from route API
1 parent 48c51dd commit 41999da

File tree

6 files changed

+18
-24
lines changed

6 files changed

+18
-24
lines changed

sharding-core/src/main/java/io/shardingjdbc/core/parsing/parser/sql/dml/insert/InsertStatement.java

+12-17
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,8 @@ public final class InsertStatement extends DMLStatement {
6767
* Append generate key token.
6868
*
6969
* @param shardingRule databases and tables sharding rule
70-
* @param parametersSize parameters size
7170
*/
72-
public void appendGenerateKeyToken(final ShardingRule shardingRule, final int parametersSize) {
71+
public void appendGenerateKeyToken(final ShardingRule shardingRule) {
7372
if (null != generatedKey) {
7473
return;
7574
}
@@ -82,26 +81,22 @@ public void appendGenerateKeyToken(final ShardingRule shardingRule, final int pa
8281
return;
8382
}
8483
ItemsToken valuesToken = new ItemsToken(generatedKeysToken.get().getBeginPosition());
85-
if (0 == parametersSize) {
86-
appendGenerateKeyToken(shardingRule, tableRule.get(), valuesToken);
87-
} else {
88-
appendGenerateKeyToken(shardingRule, tableRule.get(), valuesToken, parametersSize);
89-
}
84+
appendGenerateKeyToken(shardingRule, tableRule.get(), valuesToken);
9085
getSqlTokens().remove(generatedKeysToken.get());
9186
getSqlTokens().add(valuesToken);
9287
}
9388

9489
private void appendGenerateKeyToken(final ShardingRule shardingRule, final TableRule tableRule, final ItemsToken valuesToken) {
95-
Number generatedKey = shardingRule.generateKey(tableRule.getLogicTable());
96-
valuesToken.getItems().add(generatedKey.toString());
97-
getConditions().add(new Condition(new Column(tableRule.getGenerateKeyColumn(), tableRule.getLogicTable()), new SQLNumberExpression(generatedKey)), shardingRule);
98-
this.generatedKey = new GeneratedKey(tableRule.getLogicTable(), -1, generatedKey);
99-
}
100-
101-
private void appendGenerateKeyToken(final ShardingRule shardingRule, final TableRule tableRule, final ItemsToken valuesToken, final int parametersSize) {
102-
valuesToken.getItems().add(Symbol.QUESTION.getLiterals());
103-
getConditions().add(new Condition(new Column(tableRule.getGenerateKeyColumn(), tableRule.getLogicTable()), new SQLPlaceholderExpression(parametersSize)), shardingRule);
104-
generatedKey = new GeneratedKey(tableRule.getGenerateKeyColumn(), parametersSize, null);
90+
if (0 == getParametersIndex()) {
91+
Number generatedKey = shardingRule.generateKey(tableRule.getLogicTable());
92+
valuesToken.getItems().add(generatedKey.toString());
93+
getConditions().add(new Condition(new Column(tableRule.getGenerateKeyColumn(), tableRule.getLogicTable()), new SQLNumberExpression(generatedKey)), shardingRule);
94+
this.generatedKey = new GeneratedKey(tableRule.getLogicTable(), -1, generatedKey);
95+
} else {
96+
valuesToken.getItems().add(Symbol.QUESTION.getLiterals());
97+
getConditions().add(new Condition(new Column(tableRule.getGenerateKeyColumn(), tableRule.getLogicTable()), new SQLPlaceholderExpression(getParametersIndex())), shardingRule);
98+
generatedKey = new GeneratedKey(tableRule.getGenerateKeyColumn(), getParametersIndex(), null);
99+
}
105100
}
106101

107102
private Optional<GeneratedKeyToken> findGeneratedKeyToken() {

sharding-core/src/main/java/io/shardingjdbc/core/routing/PreparedStatementRoutingEngine.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public PreparedStatementRoutingEngine(final String logicSQL, final ShardingRule
5353
*/
5454
public SQLRouteResult route(final List<Object> parameters) {
5555
if (null == sqlStatement) {
56-
sqlStatement = sqlRouter.parse(logicSQL, parameters.size());
56+
sqlStatement = sqlRouter.parse(logicSQL);
5757
}
5858
return sqlRouter.route(logicSQL, parameters, sqlStatement);
5959
}

sharding-core/src/main/java/io/shardingjdbc/core/routing/StatementRoutingEngine.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public StatementRoutingEngine(final ShardingRule shardingRule, final DatabaseTyp
4545
* @return route result
4646
*/
4747
public SQLRouteResult route(final String logicSQL) {
48-
SQLStatement sqlStatement = sqlRouter.parse(logicSQL, 0);
48+
SQLStatement sqlStatement = sqlRouter.parse(logicSQL);
4949
return sqlRouter.route(logicSQL, Collections.emptyList(), sqlStatement);
5050
}
5151
}

sharding-core/src/main/java/io/shardingjdbc/core/routing/router/DatabaseHintSQLRouter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public final class DatabaseHintSQLRouter implements SQLRouter {
4444
private final boolean showSQL;
4545

4646
@Override
47-
public SQLStatement parse(final String logicSQL, final int parametersSize) {
47+
public SQLStatement parse(final String logicSQL) {
4848
return new SQLJudgeEngine(logicSQL).judge();
4949
}
5050

sharding-core/src/main/java/io/shardingjdbc/core/routing/router/ParsingSQLRouter.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,11 @@ public final class ParsingSQLRouter implements SQLRouter {
6969
private final List<Number> generatedKeys = new LinkedList<>();
7070

7171
@Override
72-
public SQLStatement parse(final String logicSQL, final int parametersSize) {
72+
public SQLStatement parse(final String logicSQL) {
7373
SQLParsingEngine parsingEngine = new SQLParsingEngine(databaseType, logicSQL, shardingRule);
7474
SQLStatement result = parsingEngine.parse();
7575
if (result instanceof InsertStatement) {
76-
((InsertStatement) result).appendGenerateKeyToken(shardingRule, parametersSize);
76+
((InsertStatement) result).appendGenerateKeyToken(shardingRule);
7777
}
7878
return result;
7979
}

sharding-core/src/main/java/io/shardingjdbc/core/routing/router/SQLRouter.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,9 @@ public interface SQLRouter {
3333
* Parse SQL.
3434
*
3535
* @param logicSQL logic SQL
36-
* @param parametersSize parameters size
3736
* @return parse result
3837
*/
39-
SQLStatement parse(String logicSQL, int parametersSize);
38+
SQLStatement parse(String logicSQL);
4039

4140
/**
4241
* Route SQL.

0 commit comments

Comments
 (0)