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<>();
     

Reply via email to