@Override
  public PlanNode visitExplainAnalyze(
      ExplainAnalyzeStatement explainAnalyzeStatement, MPPQueryContext context) {
    PlanNode root = visitQuery(explainAnalyzeStatement.getQueryStatement(), context);
    root =
        new ExplainAnalyzeNode(
            context.getQueryId().genPlanNodeId(),
            root,
            explainAnalyzeStatement.isVerbose(),
            context.getLocalQueryId(),
            context.getTimeOut());
    context
        .getTypeProvider()
        .setTreeModelType(ColumnHeaderConstant.EXPLAIN_ANALYZE, TSDataType.TEXT);
    return root;
  }
This visitor is used to generate a logical plan for the statement and returns the {@link
PlanNode}.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanVisitor.java