You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2023/04/12 08:05:15 UTC
[shardingsphere] branch master updated: Add InExpression for extractParameterMarkerExpressions in ExpressionExtractUtils (#25139)
This is an automated email from the ASF dual-hosted git repository.
zhaojinchao 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 eb6c161acc9 Add InExpression for extractParameterMarkerExpressions in ExpressionExtractUtils (#25139)
eb6c161acc9 is described below
commit eb6c161acc910980908da2f385abdaf53abc5b24
Author: Zhengqiang Duan <du...@apache.org>
AuthorDate: Wed Apr 12 16:05:04 2023 +0800
Add InExpression for extractParameterMarkerExpressions in ExpressionExtractUtils (#25139)
---
.../sql/parser/sql/common/util/ExpressionExtractUtils.java | 4 ++++
.../parser/sql/common/util/ExpressionExtractUtilsTest.java | 12 ++++++++++++
2 files changed, 16 insertions(+)
diff --git a/sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/util/ExpressionExtractUtils.java b/sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/util/ExpressionExtractUtils.java
index 517d7e57590..1b0bb4fd696 100644
--- a/sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/util/ExpressionExtractUtils.java
+++ b/sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/util/ExpressionExtractUtils.java
@@ -23,6 +23,7 @@ import org.apache.shardingsphere.sql.parser.sql.common.enums.LogicalOperator;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.BinaryOperationExpression;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.FunctionSegment;
+import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.InExpression;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.TypeCastExpression;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.ParameterMarkerExpressionSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.predicate.AndPredicate;
@@ -115,6 +116,9 @@ public final class ExpressionExtractUtils {
if (each instanceof TypeCastExpression) {
extractParameterMarkerExpressions(result, Collections.singletonList(((TypeCastExpression) each).getExpression()));
}
+ if (each instanceof InExpression) {
+ extractParameterMarkerExpressions(result, ((InExpression) each).getExpressionList());
+ }
}
}
}
diff --git a/sql-parser/statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/common/util/ExpressionExtractUtilsTest.java b/sql-parser/statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/common/util/ExpressionExtractUtilsTest.java
index 1009419bcef..d89cca0e5be 100644
--- a/sql-parser/statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/common/util/ExpressionExtractUtilsTest.java
+++ b/sql-parser/statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/common/util/ExpressionExtractUtilsTest.java
@@ -22,6 +22,8 @@ import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.Column
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.BinaryOperationExpression;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.FunctionSegment;
+import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.InExpression;
+import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ListExpression;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.TypeCastExpression;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.complex.CommonExpressionSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.LiteralExpressionSegment;
@@ -129,4 +131,14 @@ class ExpressionExtractUtilsTest {
assertThat(actual.size(), is(1));
assertThat(actual.get(0), is(expected));
}
+
+ @Test
+ void assertGetParameterMarkerExpressionsFromInExpression() {
+ ListExpression listExpression = new ListExpression(0, 0);
+ listExpression.getItems().add(new ParameterMarkerExpressionSegment(0, 0, 1, ParameterMarkerType.QUESTION));
+ listExpression.getItems().add(new ParameterMarkerExpressionSegment(0, 0, 2, ParameterMarkerType.QUESTION));
+ List<ExpressionSegment> inExpressions = Collections.singletonList(new InExpression(0, 0, new ColumnSegment(0, 0, new IdentifierValue("order_id")), listExpression, false));
+ List<ParameterMarkerExpressionSegment> actual = ExpressionExtractUtils.getParameterMarkerExpressions(inExpressions);
+ assertThat(actual.size(), is(2));
+ }
}