This is an automated email from the ASF dual-hosted git repository.

hui pushed a commit to branch query_plan_visualization
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit ee75739fa927ab3bf3f8ad2a6fd38530858be248
Author: Minghui Liu <[email protected]>
AuthorDate: Mon May 30 14:29:15 2022 +0800

    analyze ExplainStatement
---
 .../main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java  | 8 ++++++++
 .../org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java  | 5 +++++
 .../apache/iotdb/db/mpp/plan/statement/sys/ExplainStatement.java  | 6 ++++++
 3 files changed, 19 insertions(+)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
index eb7810e57b..50c29c3ecd 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
@@ -75,6 +75,7 @@ import 
org.apache.iotdb.db.mpp.plan.statement.metadata.ShowDevicesStatement;
 import 
org.apache.iotdb.db.mpp.plan.statement.metadata.ShowStorageGroupStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowTTLStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowTimeSeriesStatement;
+import org.apache.iotdb.db.mpp.plan.statement.sys.ExplainStatement;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.read.filter.GroupByFilter;
 import org.apache.iotdb.tsfile.read.filter.basic.Filter;
@@ -133,6 +134,13 @@ public class Analyzer {
           "Unsupported statement type: " + node.getClass().getName());
     }
 
+    @Override
+    public Analysis visitExplain(ExplainStatement explainStatement, 
MPPQueryContext context) {
+      Analysis analysis = visitQuery(explainStatement.getQueryStatement(), 
context);
+      analysis.setFinishQueryAfterAnalyze(true);
+      return analysis;
+    }
+
     @Override
     public Analysis visitQuery(QueryStatement queryStatement, MPPQueryContext 
context) {
       Analysis analysis = new Analysis();
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
index 80a1111a02..724609ef7b 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/StatementVisitor.java
@@ -51,6 +51,7 @@ import 
org.apache.iotdb.db.mpp.plan.statement.metadata.ShowTTLStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowTimeSeriesStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.UnSetTTLStatement;
 import org.apache.iotdb.db.mpp.plan.statement.sys.AuthorStatement;
+import org.apache.iotdb.db.mpp.plan.statement.sys.ExplainStatement;
 
 /**
  * This class provides a visitor of {@link 
org.apache.iotdb.db.mpp.plan.statement.StatementNode},
@@ -221,4 +222,8 @@ public abstract class StatementVisitor<R, C> {
   public R visitShowChildNodes(ShowChildNodesStatement 
showChildNodesStatement, C context) {
     return visitStatement(showChildNodesStatement, context);
   }
+
+  public R visitExplain(ExplainStatement explainStatement, C context) {
+    return visitStatement(explainStatement, context);
+  }
 }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/ExplainStatement.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/ExplainStatement.java
index cf8b06b84b..6c2b294741 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/ExplainStatement.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/sys/ExplainStatement.java
@@ -21,6 +21,7 @@ package org.apache.iotdb.db.mpp.plan.statement.sys;
 
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.mpp.plan.statement.Statement;
+import org.apache.iotdb.db.mpp.plan.statement.StatementVisitor;
 import org.apache.iotdb.db.mpp.plan.statement.crud.QueryStatement;
 
 import java.util.List;
@@ -41,4 +42,9 @@ public class ExplainStatement extends Statement {
   public List<? extends PartialPath> getPaths() {
     return queryStatement.getPaths();
   }
+
+  @Override
+  public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
+    return visitor.visitExplain(this, context);
+  }
 }

Reply via email to