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 91a8e972f44 Fix SQLServer parameter index binding error (#30486)
91a8e972f44 is described below

commit 91a8e972f44b9995ca1db92083e023cf67e9ec9a
Author: LotusMoon <[email protected]>
AuthorDate: Fri Mar 15 07:45:14 2024 +0800

    Fix SQLServer parameter index binding error (#30486)
---
 .../parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java | 4 ++--
 test/it/parser/src/main/resources/case/dml/select-pagination.xml      | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

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 488d1ce266b..56480589074 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
@@ -1038,7 +1038,7 @@ public abstract class SQLServerStatementVisitor extends 
SQLServerStatementBaseVi
                 offset = new 
NumberLiteralLimitValueSegment(ctx.expr(0).start.getStartIndex(), 
ctx.expr(0).stop.getStopIndex(),
                         ((Number) ((LiteralExpressionSegment) 
astNode).getLiterals()).longValue());
             } else if (astNode instanceof ParameterMarkerExpressionSegment) {
-                offset = new 
ParameterMarkerLimitValueSegment(ctx.expr(0).start.getStartIndex(), 
ctx.expr(0).stop.getStopIndex(), parameterMarkerSegments.size());
+                offset = new 
ParameterMarkerLimitValueSegment(ctx.expr(0).start.getStartIndex(), 
ctx.expr(0).stop.getStopIndex(), parameterMarkerSegments.size() - 1);
             }
         }
         if (null != ctx.FETCH()) {
@@ -1047,7 +1047,7 @@ public abstract class SQLServerStatementVisitor extends 
SQLServerStatementBaseVi
                 rowcount = new 
NumberLiteralLimitValueSegment(ctx.expr(1).start.getStartIndex(), 
ctx.expr(1).stop.getStopIndex(),
                         ((Number) ((LiteralExpressionSegment) 
astNode).getLiterals()).longValue());
             } else if (astNode instanceof ParameterMarkerExpressionSegment) {
-                rowcount = new 
ParameterMarkerLimitValueSegment(ctx.expr(1).start.getStartIndex(), 
ctx.expr(1).stop.getStopIndex(), parameterMarkerSegments.size());
+                rowcount = new 
ParameterMarkerLimitValueSegment(ctx.expr(1).start.getStartIndex(), 
ctx.expr(1).stop.getStopIndex(), parameterMarkerSegments.size() - 1);
             }
         }
         if (null != offset) {
diff --git a/test/it/parser/src/main/resources/case/dml/select-pagination.xml 
b/test/it/parser/src/main/resources/case/dml/select-pagination.xml
index 46ae6047b18..9ee682f8c27 100644
--- a/test/it/parser/src/main/resources/case/dml/select-pagination.xml
+++ b/test/it/parser/src/main/resources/case/dml/select-pagination.xml
@@ -2004,7 +2004,7 @@
         </order-by>
         <limit literal-start-index="40" literal-stop-index="75" 
start-index="40" stop-index="74">
             <offset value="0" start-index="47" stop-index="47" 
literal-start-index="47" literal-stop-index="47" />
-            <row-count value="20" parameter-index="1" literal-start-index="64" 
literal-stop-index="65" start-index="64" stop-index="64" />
+            <row-count value="20" parameter-index="0" literal-start-index="64" 
literal-stop-index="65" start-index="64" stop-index="64" />
         </limit>
     </select>
 

Reply via email to