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 2cbe62127c2 Support explain delete statement (#25535) (#25718)
2cbe62127c2 is described below

commit 2cbe62127c2b5e93324a0079cb666ec25f9e4c03
Author: niu giao giao <[email protected]>
AuthorDate: Wed May 17 10:42:35 2023 +0800

    Support explain delete statement (#25535) (#25718)
---
 .../sql/dialect/mysql/src/main/antlr4/imports/mysql/DALStatement.g4  | 2 +-
 .../mysql/visitor/statement/type/MySQLDALStatementVisitor.java       | 2 ++
 test/it/parser/src/main/resources/case/dal/explain.xml               | 5 +++++
 test/it/parser/src/main/resources/sql/supported/dal/explain.xml      | 1 +
 4 files changed, 9 insertions(+), 1 deletion(-)

diff --git 
a/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/DALStatement.g4 
b/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/DALStatement.g4
index 7f9775edf86..5d34293ef23 100644
--- a/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/DALStatement.g4
+++ b/parser/sql/dialect/mysql/src/main/antlr4/imports/mysql/DALStatement.g4
@@ -31,7 +31,7 @@ explain
     : (DESC | DESCRIBE | EXPLAIN)
     (tableName (columnRef | textString)?
     | explainType? (explainableStatement | FOR CONNECTION connectionId)
-    | ANALYZE (FORMAT EQ_ TREE)? select)
+    | ANALYZE (FORMAT EQ_ TREE)? (select | delete))
     ;
     
 fromSchema
diff --git 
a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDALStatementVisitor.java
 
b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDALStatementVisitor.java
index 472413a9c95..e988ca5c1b8 100644
--- 
a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDALStatementVisitor.java
+++ 
b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDALStatementVisitor.java
@@ -561,6 +561,8 @@ public final class MySQLDALStatementVisitor extends 
MySQLStatementVisitor implem
             result.setStatement((SQLStatement) 
visit(ctx.explainableStatement()));
         } else if (null != ctx.select()) {
             result.setStatement((SQLStatement) visit(ctx.select()));
+        } else if (null != ctx.delete()) {
+            result.setStatement((SQLStatement) visit(ctx.delete()));
         }
         return result;
     }
diff --git a/test/it/parser/src/main/resources/case/dal/explain.xml 
b/test/it/parser/src/main/resources/case/dal/explain.xml
index 906adebe7a6..ef69f9009d2 100644
--- a/test/it/parser/src/main/resources/case/dal/explain.xml
+++ b/test/it/parser/src/main/resources/case/dal/explain.xml
@@ -238,6 +238,11 @@
             </where>
         </select>
     </describe>
+    <describe sql-case-id="explain_with_analyze_delete">
+        <delete>
+            <table name="t_order" start-index="28" stop-index="34" />
+        </delete>
+    </describe>
     <describe sql-case-id="desc_table">
         <simple-table name="tableName" start-index="5" stop-index="13" />
     </describe>
diff --git a/test/it/parser/src/main/resources/sql/supported/dal/explain.xml 
b/test/it/parser/src/main/resources/sql/supported/dal/explain.xml
index e76683442f6..ebca3c4387a 100644
--- a/test/it/parser/src/main/resources/sql/supported/dal/explain.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dal/explain.xml
@@ -27,6 +27,7 @@
     <sql-case id="explain_create_remote_table_as_select" value="EXPLAIN CREATE 
REMOTE TABLE t_order_new AT ('Data Source = ds_0, 3306; User ID = ROOT; 
Password = 123456;') AS SELECT i.* FROM t_order_item i JOIN t_order o ON 
i.order_id = o.order_id" db-types="SQLServer" />
     <sql-case id="explain_with_analyze" value="EXPLAIN ANALYZE SELECT * FROM 
t_order WHERE order_id > 8" db-types="MySQL" />
     <sql-case id="explain_with_analyze_format" value="EXPLAIN ANALYZE FORMAT = 
TREE SELECT * FROM t_order WHERE order_id > 8" db-types="MySQL" />
+    <sql-case id="explain_with_analyze_delete" value="EXPLAIN ANALYZE DELETE 
FROM t_order" db-types="MySQL" />
     <sql-case id="explain_table" value="EXPLAIN TABLE t_order ORDER BY 
order_id LIMIT 1 OFFSET 2" db-types="MySQL" />
     <sql-case id="desc_table" value="DESC tableName" db-types="MySQL" />
     <sql-case id="desc_table_with_col_name" value="DESC tableName colName" 
db-types="MySQL" />

Reply via email to