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 dbfe047714f support odbc escape syntax (#28321)
dbfe047714f is described below

commit dbfe047714fc9f58b02d0b203db0be4d3787c7fb
Author: Yunbo Ni <[email protected]>
AuthorDate: Fri Sep 1 14:10:38 2023 +0800

    support odbc escape syntax (#28321)
    
    * feat: odbc esacpe -> datatime ({ts param})
    
    * feat: odbc escape
    
    * feat: test cases
---
 .../sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java      | 3 +++
 test/it/optimizer/src/test/resources/converter/select-expression.xml   | 2 ++
 test/it/parser/src/main/resources/case/dml/select-expression.xml       | 3 ++-
 3 files changed, 7 insertions(+), 1 deletion(-)

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 796e02f53e6..fcde225efc5 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
@@ -1171,6 +1171,9 @@ public abstract class MySQLStatementVisitor extends 
MySQLStatementBaseVisitor<AS
         if (null != ctx.variable()) {
             return visit(ctx.variable());
         }
+        if (null != ctx.LBE_()) {
+            return visit(ctx.expr(0));
+        }
         for (ExprContext each : ctx.expr()) {
             visit(each);
         }
diff --git 
a/test/it/optimizer/src/test/resources/converter/select-expression.xml 
b/test/it/optimizer/src/test/resources/converter/select-expression.xml
index 61c1b190c6c..49de1f6ad52 100644
--- a/test/it/optimizer/src/test/resources/converter/select-expression.xml
+++ b/test/it/optimizer/src/test/resources/converter/select-expression.xml
@@ -49,4 +49,6 @@
     <test-cases sql-case-id="select_where_with_predicate_with_in_subquery" 
expected-sql="SELECT * FROM &quot;t_order&quot; WHERE 
&quot;t_order&quot;.&quot;order_id&quot; NOT IN (SELECT &quot;order_id&quot; 
FROM &quot;t_order_item&quot; WHERE &quot;status&quot; &gt; 1)" 
db-types="PostgreSQL, openGauss" sql-case-types="LITERAL" />
     <test-cases sql-case-id="select_where_with_predicate_with_in_subquery" 
expected-sql="SELECT * FROM &quot;t_order&quot; WHERE 
&quot;t_order&quot;.&quot;order_id&quot; NOT IN (SELECT &quot;order_id&quot; 
FROM &quot;t_order_item&quot; WHERE &quot;status&quot; &gt; ?)" 
db-types="PostgreSQL, openGauss" sql-case-types="PLACEHOLDER" />
     <test-cases sql-case-id="select_where_with_simple_expr_with_collate" 
expected-sql="SELECT * FROM `t_order` WHERE `order_id` COLLATE 
'utf8mb4_0900_ai_ci'" db-types="MySQL" sql-case-types="LITERAL" />
+    <test-cases 
sql-case-id="select_where_with_simple_expr_with_odbc_escape_syntax" 
expected-sql="SELECT * FROM `t_order` WHERE ?" db-types="MySQL" 
sql-case-types="PLACEHOLDER" />
+    <test-cases 
sql-case-id="select_where_with_simple_expr_with_odbc_escape_syntax" 
expected-sql="SELECT * FROM `t_order` WHERE '1994-02-04 12:23:00'" 
db-types="MySQL" sql-case-types="LITERAL" />
 </sql-node-converter-test-cases>
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 df35a1534b0..fe252ad7926 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
@@ -1983,7 +1983,8 @@
         </projections>
         <where start-index="22" stop-index="33" literal-stop-index="53">
             <expr>
-                <common-expression text="{ts ?}" literal-text="{ts '1994-02-04 
12:23:00'}" start-index="28" stop-index="33" literal-stop-index="53" />
+                <parameter-marker-expression start-index="32" stop-index="32" 
parameter-index="0" />
+                <literal-expression start-index="32" stop-index="52" 
value="1994-02-04 12:23:00" />
             </expr>
         </where>
     </select>

Reply via email to