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>