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); + } }
