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 > = 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>