You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2023/05/17 02:42:46 UTC

[shardingsphere] branch master updated: Support explain delete statement (#25535) (#25718)

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 <zi...@163.com>
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" />