You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2024/03/14 23:45:20 UTC

(shardingsphere) branch master updated: Fix SQLServer parameter index binding error (#30486)

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 <ch...@aliyun.com>
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>