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 <[email protected]>
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 > = 1 or name < = 2" db-types="Oracle"/>
<sql-case id="select_with_not_equal_comparison_with_space" value="select *
from test where id < > 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>