You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by yx...@apache.org on 2023/06/12 04:02:40 UTC
[shardingsphere] branch master updated: Add uniqueParameterIndexes in AbstractSQLStatement to replace stream api (#26272)
This is an automated email from the ASF dual-hosted git repository.
yx9o pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new ef0ee3c2689 Add uniqueParameterIndexes in AbstractSQLStatement to replace stream api (#26272)
ef0ee3c2689 is described below
commit ef0ee3c26896125c342146dfc4b6225ed9d3a7c7
Author: Zhengqiang Duan <du...@apache.org>
AuthorDate: Mon Jun 12 12:02:33 2023 +0800
Add uniqueParameterIndexes in AbstractSQLStatement to replace stream api (#26272)
* Add uniqueParameterIndexes in AbstractSQLStatement to replace stream api
* fix unit test
---
.../segment/insert/values/InsertSelectContext.java | 2 +-
.../visitor/statement/MySQLStatementVisitor.java | 12 +++++-----
.../statement/type/MySQLDALStatementVisitor.java | 26 +++++++++++-----------
.../statement/OpenGaussStatementVisitor.java | 8 +++----
.../statement/type/OracleDMLStatementVisitor.java | 10 ++++-----
.../statement/PostgreSQLStatementVisitor.java | 8 +++----
.../statement/type/SQL92DMLStatementVisitor.java | 8 +++----
.../statement/SQLServerStatementVisitor.java | 8 +++----
.../sql/common/statement/AbstractSQLStatement.java | 17 +++++++++++++-
9 files changed, 57 insertions(+), 42 deletions(-)
diff --git a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/insert/values/InsertSelectContext.java b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/insert/values/InsertSelectContext.java
index 029f40eb61a..5b9ed63c36e 100644
--- a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/insert/values/InsertSelectContext.java
+++ b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/insert/values/InsertSelectContext.java
@@ -39,7 +39,7 @@ public final class InsertSelectContext {
private final SelectStatementContext selectStatementContext;
public InsertSelectContext(final SelectStatementContext selectStatementContext, final List<Object> params, final int parametersOffset) {
- parameterCount = selectStatementContext.getSqlStatement().getParameterMarkerSegments().size();
+ parameterCount = selectStatementContext.getSqlStatement().getParameterCount();
this.selectStatementContext = selectStatementContext;
parameters = getParameters(params, parametersOffset);
}
diff --git a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java
index 14652855d98..0e451c404a1 100644
--- a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java
+++ b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java
@@ -660,7 +660,7 @@ public abstract class MySQLStatementVisitor extends MySQLStatementBaseVisitor<AS
if (null != ctx.lockClauseList()) {
result.setLock((LockSegment) visit(ctx.lockClauseList()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -1263,7 +1263,7 @@ public abstract class MySQLStatementVisitor extends MySQLStatementBaseVisitor<AS
result.setOnDuplicateKeyColumns((OnDuplicateKeyColumnsSegment) visit(ctx.onDuplicateKeyClause()));
}
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -1334,7 +1334,7 @@ public abstract class MySQLStatementVisitor extends MySQLStatementBaseVisitor<AS
result.setSetAssignment((SetAssignmentSegment) visit(ctx.setAssignmentsClause()));
}
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -1398,7 +1398,7 @@ public abstract class MySQLStatementVisitor extends MySQLStatementBaseVisitor<AS
if (null != ctx.limitClause()) {
result.setLimit((LimitSegment) visit(ctx.limitClause()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -1465,7 +1465,7 @@ public abstract class MySQLStatementVisitor extends MySQLStatementBaseVisitor<AS
if (null != ctx.limitClause()) {
result.setLimit((LimitSegment) visit(ctx.limitClause()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -1509,7 +1509,7 @@ public abstract class MySQLStatementVisitor extends MySQLStatementBaseVisitor<AS
} else {
result = (MySQLSelectStatement) visit(ctx.getChild(0));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
diff --git a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDALStatementVisitor.java b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDALStatementVisitor.java
index a257485b302..7708f670eac 100644
--- a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDALStatementVisitor.java
+++ b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDALStatementVisitor.java
@@ -250,7 +250,7 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
if (null != ctx.showFilter()) {
result.setFilter((ShowFilterSegment) visit(ctx.showFilter()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -619,7 +619,7 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
if (null != ctx.showFilter()) {
result.setFilter((ShowFilterSegment) visit(ctx.showFilter()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -632,7 +632,7 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
if (null != ctx.showFilter()) {
result.setFilter((ShowFilterSegment) visit(ctx.showFilter()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -646,7 +646,7 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
result.setFilter((ShowFilterSegment) visit(ctx.showFilter()));
}
result.setContainsFull(null != ctx.FULL());
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -659,7 +659,7 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
if (null != ctx.showFilter()) {
result.setFilter((ShowFilterSegment) visit(ctx.showFilter()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -677,7 +677,7 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
if (null != ctx.showFilter()) {
result.setFilter((ShowFilterSegment) visit(ctx.showFilter()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -693,7 +693,7 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
if (null != ctx.showFilter()) {
result.setFilter((ShowFilterSegment) visit(ctx.showFilter()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -815,7 +815,7 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
if (null != ctx.showFilter()) {
result.setFilter((ShowFilterSegment) visit(ctx.showFilter()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -825,7 +825,7 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
if (null != ctx.showFilter()) {
result.setFilter((ShowFilterSegment) visit(ctx.showFilter()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -835,7 +835,7 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
if (null != ctx.showFilter()) {
result.setFilter((ShowFilterSegment) visit(ctx.showFilter()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -845,7 +845,7 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
if (null != ctx.showFilter()) {
result.setFilter((ShowFilterSegment) visit(ctx.showFilter()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -855,7 +855,7 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
if (null != ctx.showFilter()) {
result.setFilter((ShowFilterSegment) visit(ctx.showFilter()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -868,7 +868,7 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
if (null != ctx.showFilter()) {
result.setFilter((ShowFilterSegment) visit(ctx.showFilter()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
diff --git a/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java b/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java
index 1cb2e3e5c6b..f2df0c2afc3 100644
--- a/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java
+++ b/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java
@@ -690,7 +690,7 @@ public abstract class OpenGaussStatementVisitor extends OpenGaussStatementBaseVi
if (null != ctx.returningClause()) {
result.setReturningSegment((ReturningSegment) visit(ctx.returningClause()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -881,7 +881,7 @@ public abstract class OpenGaussStatementVisitor extends OpenGaussStatementBaseVi
if (null != ctx.whereOrCurrentClause()) {
result.setWhere((WhereSegment) visit(ctx.whereOrCurrentClause()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -899,7 +899,7 @@ public abstract class OpenGaussStatementVisitor extends OpenGaussStatementBaseVi
if (null != ctx.whereOrCurrentClause()) {
result.setWhere((WhereSegment) visit(ctx.whereOrCurrentClause()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -912,7 +912,7 @@ public abstract class OpenGaussStatementVisitor extends OpenGaussStatementBaseVi
public ASTNode visitSelect(final SelectContext ctx) {
// TODO :Unsupported for withClause.
OpenGaussSelectStatement result = (OpenGaussSelectStatement) visit(ctx.selectNoParens());
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
diff --git a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.java b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.java
index 5eee6f69429..74fe5c939fc 100644
--- a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.java
+++ b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.java
@@ -190,7 +190,7 @@ public final class OracleDMLStatementVisitor extends OracleStatementVisitor impl
SubquerySegment subquerySegment = new SubquerySegment(ctx.selectSubquery().start.getStartIndex(), ctx.selectSubquery().stop.getStopIndex(), subquery);
result.setSelectSubquery(subquerySegment);
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -209,7 +209,7 @@ public final class OracleDMLStatementVisitor extends OracleStatementVisitor impl
OracleSelectStatement subquery = (OracleSelectStatement) visit(ctx.selectSubquery());
SubquerySegment subquerySegment = new SubquerySegment(ctx.selectSubquery().start.getStartIndex(), ctx.selectSubquery().stop.getStopIndex(), subquery);
result.setSelectSubquery(subquerySegment);
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -318,7 +318,7 @@ public final class OracleDMLStatementVisitor extends OracleStatementVisitor impl
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -431,7 +431,7 @@ public final class OracleDMLStatementVisitor extends OracleStatementVisitor impl
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -451,7 +451,7 @@ public final class OracleDMLStatementVisitor extends OracleStatementVisitor impl
@Override
public ASTNode visitSelect(final SelectContext ctx) {
OracleSelectStatement result = (OracleSelectStatement) visit(ctx.selectSubquery());
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
if (null != ctx.forUpdateClause()) {
result.setLock((LockSegment) visit(ctx.forUpdateClause()));
}
diff --git a/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java b/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java
index 8992bd03d07..6226534a751 100644
--- a/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java
+++ b/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java
@@ -687,7 +687,7 @@ public abstract class PostgreSQLStatementVisitor extends PostgreSQLStatementPars
if (null != ctx.returningClause()) {
result.setReturningSegment((ReturningSegment) visit(ctx.returningClause()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -848,7 +848,7 @@ public abstract class PostgreSQLStatementVisitor extends PostgreSQLStatementPars
if (null != ctx.whereOrCurrentClause()) {
result.setWhere((WhereSegment) visit(ctx.whereOrCurrentClause()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -866,7 +866,7 @@ public abstract class PostgreSQLStatementVisitor extends PostgreSQLStatementPars
if (null != ctx.whereOrCurrentClause()) {
result.setWhere((WhereSegment) visit(ctx.whereOrCurrentClause()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -879,7 +879,7 @@ public abstract class PostgreSQLStatementVisitor extends PostgreSQLStatementPars
public ASTNode visitSelect(final SelectContext ctx) {
// TODO :Unsupported for withClause.
PostgreSQLSelectStatement result = (PostgreSQLSelectStatement) visit(ctx.selectNoParens());
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
diff --git a/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java b/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java
index 451f38b3924..be82a3f1707 100644
--- a/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java
+++ b/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java
@@ -109,7 +109,7 @@ public final class SQL92DMLStatementVisitor extends SQL92StatementVisitor implem
public ASTNode visitInsert(final InsertContext ctx) {
SQL92InsertStatement result = (SQL92InsertStatement) visit(ctx.insertValuesClause());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -144,7 +144,7 @@ public final class SQL92DMLStatementVisitor extends SQL92StatementVisitor implem
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -193,7 +193,7 @@ public final class SQL92DMLStatementVisitor extends SQL92StatementVisitor implem
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -210,7 +210,7 @@ public final class SQL92DMLStatementVisitor extends SQL92StatementVisitor implem
public ASTNode visitSelect(final SelectContext ctx) {
// TODO :Unsupported for withClause.
SQL92SelectStatement result = (SQL92SelectStatement) visit(ctx.combineClause());
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
diff --git a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java
index 9eede3da434..7b13b4da5e7 100644
--- a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java
+++ b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java
@@ -702,7 +702,7 @@ public abstract class SQLServerStatementVisitor extends SQLServerStatementBaseVi
@Override
public ASTNode visitSelect(final SelectContext ctx) {
SQLServerSelectStatement result = (SQLServerSelectStatement) visit(ctx.aggregationClause());
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -881,7 +881,7 @@ public abstract class SQLServerStatementVisitor extends SQLServerStatementBaseVi
result.setWithSegment((WithSegment) visit(ctx.withClause()));
}
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -988,7 +988,7 @@ public abstract class SQLServerStatementVisitor extends SQLServerStatementBaseVi
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
@@ -1047,7 +1047,7 @@ public abstract class SQLServerStatementVisitor extends SQLServerStatementBaseVi
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
- result.getParameterMarkerSegments().addAll(getParameterMarkerSegments());
+ result.addParameterMarkerSegments(getParameterMarkerSegments());
return result;
}
diff --git a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/AbstractSQLStatement.java b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/AbstractSQLStatement.java
index f5c5cf84503..e92ce219d4d 100644
--- a/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/AbstractSQLStatement.java
+++ b/parser/sql/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/AbstractSQLStatement.java
@@ -22,6 +22,7 @@ import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.CommentSe
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.ParameterMarkerSegment;
import java.util.Collection;
+import java.util.HashSet;
import java.util.LinkedList;
/**
@@ -32,10 +33,24 @@ public abstract class AbstractSQLStatement implements SQLStatement {
private final Collection<ParameterMarkerSegment> parameterMarkerSegments = new LinkedList<>();
+ private final Collection<Integer> uniqueParameterIndexes = new HashSet<>();
+
private final Collection<CommentSegment> commentSegments = new LinkedList<>();
@Override
public int getParameterCount() {
- return (int) parameterMarkerSegments.stream().map(ParameterMarkerSegment::getParameterIndex).distinct().count();
+ return uniqueParameterIndexes.size();
+ }
+
+ /**
+ * Add parameter marker segment.
+ *
+ * @param parameterMarkerSegments parameter marker segment collection
+ */
+ public void addParameterMarkerSegments(final Collection<ParameterMarkerSegment> parameterMarkerSegments) {
+ for (ParameterMarkerSegment each : parameterMarkerSegments) {
+ this.parameterMarkerSegments.add(each);
+ uniqueParameterIndexes.add(each.getParameterIndex());
+ }
}
}