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>

Reply via email to