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 2638c11077c Support for OR sign (#25773)
2638c11077c is described below
commit 2638c11077c515cd2d3d3564bd974b719f3a978b
Author: kanha gupta <[email protected]>
AuthorDate: Fri May 19 05:31:49 2023 +0530
Support for OR sign (#25773)
---
.../expression/impl/BinaryOperationExpressionConverter.java | 1 +
.../mysql/visitor/statement/MySQLStatementVisitor.java | 6 ++++++
.../test/it/optimize/SQLNodeConverterEngineIT.java | 1 +
.../parser/src/main/resources/case/dml/select-expression.xml | 12 +++++++++++-
4 files changed, 19 insertions(+), 1 deletion(-)
diff --git
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/converter/segment/expression/impl/BinaryOperationExpressionConverter.java
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/converter/segment/expression/impl/BinaryOperationExpressionConverter.java
index 7a623155dfe..0eac48482f7 100644
---
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/converter/segment/expression/impl/BinaryOperationExpressionConverter.java
+++
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/converter/segment/expression/impl/BinaryOperationExpressionConverter.java
@@ -69,6 +69,7 @@ public final class BinaryOperationExpressionConverter
implements SQLSegmentConve
register(SqlStdOperatorTable.ALL_GT);
register(SqlStdOperatorTable.IS_FALSE);
register(SqlStdOperatorTable.IS_NOT_FALSE);
+ register(SqlStdOperatorTable.CONCAT);
}
private static void register(final SqlOperator sqlOperator) {
diff --git
a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java
b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java
index 729b166a727..9e36bdb2c15 100644
---
a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java
+++
b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java
@@ -617,6 +617,12 @@ public abstract class MySQLStatementVisitor extends
MySQLStatementBaseVisitor<AS
if (null != ctx.LP_() && 1 == ctx.expr().size()) {
return visit(ctx.expr(0));
}
+ if (null != ctx.OR_()) {
+ ExpressionSegment left = (ExpressionSegment)
visit(ctx.simpleExpr(0));
+ ExpressionSegment right = (ExpressionSegment)
visit(ctx.simpleExpr(1));
+ String text = ctx.start.getInputStream().getText(new
Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
+ return new BinaryOperationExpression(ctx.start.getStartIndex(),
ctx.stop.getStopIndex(), left, right, ctx.OR_().getText(), text);
+ }
return visitRemainSimpleExpr(ctx);
}
diff --git
a/test/it/optimizer/src/test/java/org/apache/shardingsphere/test/it/optimize/SQLNodeConverterEngineIT.java
b/test/it/optimizer/src/test/java/org/apache/shardingsphere/test/it/optimize/SQLNodeConverterEngineIT.java
index 3a6d42b49d3..5f97301cd94 100644
---
a/test/it/optimizer/src/test/java/org/apache/shardingsphere/test/it/optimize/SQLNodeConverterEngineIT.java
+++
b/test/it/optimizer/src/test/java/org/apache/shardingsphere/test/it/optimize/SQLNodeConverterEngineIT.java
@@ -214,6 +214,7 @@ class SQLNodeConverterEngineIT {
result.add("select_where_with_expr_with_is");
result.add("select_where_with_expr_with_is_not");
result.add("select_where_with_expr_with_not");
+ result.add("select_where_with_expr_with_or_sign");
return result;
}
// CHECKSTYLE:ON
diff --git a/test/it/parser/src/main/resources/case/dml/select-expression.xml
b/test/it/parser/src/main/resources/case/dml/select-expression.xml
index 61ba5571fd4..e0006fbad88 100644
--- a/test/it/parser/src/main/resources/case/dml/select-expression.xml
+++ b/test/it/parser/src/main/resources/case/dml/select-expression.xml
@@ -276,7 +276,17 @@
</left>
<operator>=</operator>
<right>
- <common-expression text="? || ?"
literal-text="1 || 2" start-index="47" stop-index="52" />
+ <binary-operation-expression start-index="47"
stop-index="52">
+ <left>
+ <parameter-marker-expression
parameter-index="0" start-index="47" stop-index="47" />
+ <literal-expression value="1"
start-index="47" stop-index="47" />
+ </left>
+ <operator>||</operator>
+ <right>
+ <parameter-marker-expression
parameter-index="1" start-index="52" stop-index="52" />
+ <literal-expression value="2"
start-index="52" stop-index="52" />
+ </right>
+ </binary-operation-expression>
</right>
</binary-operation-expression>
</left>