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 6edee9b3a2c Fix mysql match against statement visit (#35277)
6edee9b3a2c is described below

commit 6edee9b3a2c949f20958e1033754124c3ee174d9
Author: ZhangCheng <chengzh...@apache.org>
AuthorDate: Mon Apr 28 09:35:37 2025 +0800

    Fix mysql match against statement visit (#35277)
---
 .../visitor/statement/MySQLStatementVisitor.java     |  2 +-
 .../it/parser/src/main/resources/case/dml/select.xml | 20 ++++++++++++++++++++
 .../src/main/resources/sql/supported/dml/select.xml  |  1 +
 3 files changed, 22 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 0693c682b14..1bcbdef2767 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
@@ -2046,6 +2046,6 @@ public abstract class MySQLStatementVisitor extends 
MySQLStatementBaseVisitor<AS
     }
     
     protected String getOriginalText(final ParserRuleContext ctx) {
-        return ctx.start.getInputStream().getText(new 
Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
+        return null == ctx ? "" : ctx.start.getInputStream().getText(new 
Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
     }
 }
diff --git a/test/it/parser/src/main/resources/case/dml/select.xml 
b/test/it/parser/src/main/resources/case/dml/select.xml
index d274064a877..6964b56f5ea 100644
--- a/test/it/parser/src/main/resources/case/dml/select.xml
+++ b/test/it/parser/src/main/resources/case/dml/select.xml
@@ -10160,4 +10160,24 @@
             </expr>
         </where>
     </select>
+    
+    <select sql-case-id="select_match_against">
+        <projections start-index="7" stop-index="7">
+            <shorthand-projection start-index="7" stop-index="7">
+                <actual-projections start-index="0" stop-index="0"/>
+            </shorthand-projection>
+        </projections>
+        <from start-index="14" stop-index="20">
+            <simple-table name="t_order" start-index="14" stop-index="20"/>
+        </from>
+        <where start-index="22" stop-index="62">
+            <expr start-index="28" stop-index="62">
+                <match-expression start-index="28" stop-index="62">
+                    <expr start-index="49" stop-index="61">
+                        <literal-expression value="15111111111" 
start-index="49" stop-index="61"/>
+                    </expr>
+                </match-expression>
+            </expr>
+        </where>
+    </select>
 </sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/sql/supported/dml/select.xml 
b/test/it/parser/src/main/resources/sql/supported/dml/select.xml
index b9064bc1f99..9bbea5e8b5d 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/select.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/select.xml
@@ -317,4 +317,5 @@
     <sql-case id="select_is_not_nan" value="SELECT COUNT(*) FROM employees 
WHERE commission_pct IS NOT NAN" db-types="Oracle"/>
     <sql-case id="select_with_comparison_with_space" value="select * from test 
where id &gt; = 1 or name &lt;   = 2" db-types="Oracle"/>
     <sql-case id="select_with_not_equal_comparison_with_space" value="select * 
from test where id &lt;  &gt; 1 and name !  = 1 and id ^ = 3 " 
db-types="Oracle"/>
+    <sql-case id="select_match_against" value="SELECT * FROM t_order WHERE 
MATCH(phone) AGAINST('15111111111')" db-types="MySQL"/>
 </sql-cases>

Reply via email to