This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 0c082aaa8f4 Use set to deduplicate parameterMarkers (#36032)
0c082aaa8f4 is described below
commit 0c082aaa8f42c85bce5dd2926a45fd06f4a2d812
Author: ZhangCheng <[email protected]>
AuthorDate: Thu Jul 17 18:07:44 2025 +0800
Use set to deduplicate parameterMarkers (#36032)
* Use set to deduplicate parameterMarkers
* Use set to deduplicate parameterMarkers
---
.../statement/type/dml/InsertStatementContextTest.java | 14 ++++++++++++++
.../sql/parser/statement/core/statement/SQLStatement.java | 2 +-
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/dml/InsertStatementContextTest.java
b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/dml/InsertStatementContextTest.java
index 8f09690672b..c5c0b927078 100644
---
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/dml/InsertStatementContextTest.java
+++
b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/dml/InsertStatementContextTest.java
@@ -34,6 +34,7 @@ import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.simp
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.subquery.SubquerySegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.item.ProjectionsSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.OwnerSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.ParameterMarkerSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.bound.TableSegmentBoundInfo;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.TableNameSegment;
@@ -44,6 +45,7 @@ import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;
@@ -150,6 +152,18 @@ class InsertStatementContextTest {
assertThat(actual.getGroupedParameters().iterator().next(),
is(Collections.singletonList("param")));
}
+ @Test
+ void assertAddParameterMarkersWithDuplicates() {
+ Collection<ParameterMarkerSegment> segments = new ArrayList<>();
+ ParameterMarkerExpressionSegment parameterMarkerExpressionSegment =
new ParameterMarkerExpressionSegment(1, 0, 1);
+ segments.add(parameterMarkerExpressionSegment);
+ segments.add(parameterMarkerExpressionSegment);
+ SelectStatement selectStatement = new SelectStatement(databaseType);
+ selectStatement.addParameterMarkers(segments);
+ assertThat(selectStatement.getParameterCount(), is(1));
+ assertThat(selectStatement.getParameterMarkers().size(), is(1));
+ }
+
private void setUpInsertValues(final InsertStatement insertStatement) {
when(insertStatement.getValues()).thenReturn(Arrays.asList(
new InsertValuesSegment(0, 0, Arrays.asList(
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/SQLStatement.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/SQLStatement.java
index fd0bed87dd9..75b5d2b08c6 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/SQLStatement.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/SQLStatement.java
@@ -39,7 +39,7 @@ public class SQLStatement implements ASTNode {
private final Collection<Integer> uniqueParameterIndexes = new
LinkedHashSet<>();
- private final Collection<ParameterMarkerSegment> parameterMarkers = new
LinkedList<>();
+ private final Collection<ParameterMarkerSegment> parameterMarkers = new
LinkedHashSet<>();
private final Collection<String> variableNames = new
CaseInsensitiveSet<>();