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>