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 6d74bf990e1 Support sql federation explain update (#28219)
6d74bf990e1 is described below

commit 6d74bf990e1cbcd7e6c4bef5b7b581e6ccca3d1c
Author: niu niu <[email protected]>
AuthorDate: Tue Aug 22 16:54:31 2023 +0800

    Support sql federation explain update (#28219)
---
 .../converter/statement/explain/ExplainStatementConverter.java     | 4 ++++
 test/it/optimizer/src/test/resources/converter/explain.xml         | 7 +++++++
 2 files changed, 11 insertions(+)

diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/statement/explain/ExplainStatementConverter.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/statement/explain/ExplainStatementConverter.java
index e5401a53c7a..6bdd4e2d1b7 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/statement/explain/ExplainStatementConverter.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/converter/statement/explain/ExplainStatementConverter.java
@@ -26,9 +26,11 @@ import 
org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.ExplainStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.DeleteStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.SelectStatement;
+import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.UpdateStatement;
 import 
org.apache.shardingsphere.sqlfederation.compiler.converter.statement.SQLStatementConverter;
 import 
org.apache.shardingsphere.sqlfederation.compiler.converter.statement.delete.DeleteStatementConverter;
 import 
org.apache.shardingsphere.sqlfederation.compiler.converter.statement.select.SelectStatementConverter;
+import 
org.apache.shardingsphere.sqlfederation.compiler.converter.statement.update.UpdateStatementConverter;
 
 /**
  * Explain statement converter.
@@ -50,6 +52,8 @@ public final class ExplainStatementConverter implements 
SQLStatementConverter<Ex
             return new SelectStatementConverter().convert((SelectStatement) 
sqlStatement);
         } else if (sqlStatement instanceof DeleteStatement) {
             return new DeleteStatementConverter().convert((DeleteStatement) 
sqlStatement);
+        } else if (sqlStatement instanceof UpdateStatement) {
+            return new UpdateStatementConverter().convert((UpdateStatement) 
sqlStatement);
         }
         // TODO other statement converter.
         return null;
diff --git a/test/it/optimizer/src/test/resources/converter/explain.xml 
b/test/it/optimizer/src/test/resources/converter/explain.xml
index 4264bfe9975..043298d0311 100644
--- a/test/it/optimizer/src/test/resources/converter/explain.xml
+++ b/test/it/optimizer/src/test/resources/converter/explain.xml
@@ -52,4 +52,11 @@
     <test-cases sql-case-id="explain_for_delete_condition" 
expected-sql="EXPLAIN PLAN INCLUDING ALL ATTRIBUTES WITH TYPE FOR DELETE FROM 
&quot;t_order&quot; WHERE &quot;t_order&quot;.&quot;x&quot; = ?" 
db-types="Oracle" sql-case-types="PLACEHOLDER" />
     <test-cases sql-case-id="explain_for_delete_statement" 
expected-sql="EXPLAIN PLAN INCLUDING ALL ATTRIBUTES WITH TYPE FOR DELETE FROM 
&quot;t_order&quot; WHERE &quot;t_order&quot;.&quot;x&quot; = 1" 
db-types="Oracle" sql-case-types="LITERAL" />
     <test-cases sql-case-id="explain_for_delete_statement" 
expected-sql="EXPLAIN PLAN INCLUDING ALL ATTRIBUTES WITH TYPE FOR DELETE FROM 
&quot;t_order&quot; WHERE &quot;t_order&quot;.&quot;x&quot; = ?" 
db-types="Oracle" sql-case-types="PLACEHOLDER" />
+    <test-cases sql-case-id="explain_update_without_condition" 
expected-sql="EXPLAIN PLAN INCLUDING ALL ATTRIBUTES WITH TYPE FOR UPDATE 
`t_order` SET `status` = 'finished'" db-types="MySQL" />
+    <test-cases sql-case-id="explain_update_without_condition" 
expected-sql="EXPLAIN PLAN INCLUDING ALL ATTRIBUTES WITH TYPE FOR UPDATE 
&quot;t_order&quot; SET &quot;status&quot; = 'finished'" db-types="PostgreSQL, 
openGauss" />
+    <test-cases sql-case-id="explain_with_analyze_update" 
expected-sql="EXPLAIN PLAN INCLUDING ALL ATTRIBUTES WITH TYPE FOR UPDATE 
`t_order` SET `id` = 1" db-types="MySQL" />
+    <test-cases sql-case-id="explain_for_update_without_condition" 
expected-sql="EXPLAIN PLAN INCLUDING ALL ATTRIBUTES WITH TYPE FOR UPDATE 
&quot;t_order&quot; SET &quot;status&quot; = 'finished'" db-types="Oracle" />
+    <test-cases sql-case-id="explain_for_update" expected-sql="EXPLAIN PLAN 
INCLUDING ALL ATTRIBUTES WITH TYPE FOR UPDATE &quot;t_order&quot; SET 
&quot;id&quot; = 1" db-types="Oracle" />
+    <test-cases sql-case-id="explain_for_update_with_statement" 
expected-sql="EXPLAIN PLAN INCLUDING ALL ATTRIBUTES WITH TYPE FOR UPDATE 
&quot;t_order&quot; SET &quot;id&quot; = 1" db-types="Oracle" />
+    <test-cases sql-case-id="explain_for_update_with_into" 
expected-sql="EXPLAIN PLAN INCLUDING ALL ATTRIBUTES WITH TYPE FOR UPDATE 
&quot;t_order&quot; SET &quot;id&quot; = 1" db-types="Oracle" />
 </sql-node-converter-test-cases>

Reply via email to