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

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


The following commit(s) were added to refs/heads/master by this push:
     new c461f65  [IOTDB-2195] Control the concurrent query execution thread - 
Part 1 (#4660)
c461f65 is described below

commit c461f65edcb9f47a305cf0e16517c1001e6b0f54
Author: Xiangwei Wei <[email protected]>
AuthorDate: Thu Dec 30 11:35:38 2021 +0800

    [IOTDB-2195] Control the concurrent query execution thread - Part 1 (#4660)
---
 .../apache/iotdb/db/qp/physical/PhysicalPlan.java  |  13 +-
 .../iotdb/db/qp/physical/crud/AggregationPlan.java |   2 +-
 .../db/qp/physical/crud/DeletePartitionPlan.java   |   2 +-
 .../iotdb/db/qp/physical/crud/DeletePlan.java      |   6 +-
 .../iotdb/db/qp/physical/crud/InsertPlan.java      |   2 +-
 .../iotdb/db/qp/physical/crud/LastQueryPlan.java   |   8 +-
 .../iotdb/db/qp/physical/crud/QueryIndexPlan.java  |   2 +-
 .../iotdb/db/qp/physical/crud/QueryPlan.java       |  18 +-
 .../db/qp/physical/crud/RawDataQueryPlan.java      |   5 -
 .../iotdb/db/qp/physical/crud/SelectIntoPlan.java  |   4 +-
 .../apache/iotdb/db/qp/physical/crud/UDTFPlan.java |   2 +-
 .../db/qp/physical/sys/ActivateTemplatePlan.java   |   4 +-
 .../db/qp/physical/sys/AlterTimeSeriesPlan.java    |   4 +-
 .../db/qp/physical/sys/AppendTemplatePlan.java     |   6 +-
 .../iotdb/db/qp/physical/sys/AuthorPlan.java       |   4 +-
 .../qp/physical/sys/AutoCreateDeviceMNodePlan.java |   8 +-
 .../iotdb/db/qp/physical/sys/ChangeAliasPlan.java  |   4 +-
 .../db/qp/physical/sys/ChangeTagOffsetPlan.java    |   4 +-
 .../iotdb/db/qp/physical/sys/ClearCachePlan.java   |   2 +-
 .../physical/sys/CreateAlignedTimeSeriesPlan.java  |   4 +-
 .../qp/physical/sys/CreateContinuousQueryPlan.java |   7 +-
 .../db/qp/physical/sys/CreateFunctionPlan.java     |   4 +-
 .../iotdb/db/qp/physical/sys/CreateIndexPlan.java  |   4 +-
 .../qp/physical/sys/CreateMultiTimeSeriesPlan.java |   2 +-
 .../db/qp/physical/sys/CreateSnapshotPlan.java     |   2 +-
 .../db/qp/physical/sys/CreateTemplatePlan.java     |   6 +-
 .../db/qp/physical/sys/CreateTimeSeriesPlan.java   |   4 +-
 .../db/qp/physical/sys/CreateTriggerPlan.java      |   4 +-
 .../iotdb/db/qp/physical/sys/DataAuthPlan.java     |   4 +-
 .../db/qp/physical/sys/DeleteStorageGroupPlan.java |   4 +-
 .../db/qp/physical/sys/DeleteTimeSeriesPlan.java   |   4 +-
 .../qp/physical/sys/DropContinuousQueryPlan.java   |   4 +-
 .../iotdb/db/qp/physical/sys/DropFunctionPlan.java |   4 +-
 .../iotdb/db/qp/physical/sys/DropIndexPlan.java    |   4 +-
 .../iotdb/db/qp/physical/sys/DropTriggerPlan.java  |   4 +-
 .../apache/iotdb/db/qp/physical/sys/FlushPlan.java |   6 +-
 .../iotdb/db/qp/physical/sys/KillQueryPlan.java    |   2 +-
 .../db/qp/physical/sys/LoadConfigurationPlan.java  |   6 +-
 .../iotdb/db/qp/physical/sys/LoadDataPlan.java     |   2 +-
 .../apache/iotdb/db/qp/physical/sys/LogPlan.java   |   6 +-
 .../apache/iotdb/db/qp/physical/sys/MNodePlan.java |  12 +-
 .../db/qp/physical/sys/MeasurementMNodePlan.java   |   4 +-
 .../apache/iotdb/db/qp/physical/sys/MergePlan.java |   4 +-
 .../iotdb/db/qp/physical/sys/OperateFilePlan.java  |   6 +-
 .../db/qp/physical/sys/PruneTemplatePlan.java      |   4 +-
 .../db/qp/physical/sys/SetStorageGroupPlan.java    |   4 +-
 .../db/qp/physical/sys/SetSystemModePlan.java      |   4 +-
 .../iotdb/db/qp/physical/sys/SetTTLPlan.java       |   4 +-
 .../iotdb/db/qp/physical/sys/SetTemplatePlan.java  |   4 +-
 .../iotdb/db/qp/physical/sys/SettlePlan.java       |   4 +-
 .../apache/iotdb/db/qp/physical/sys/ShowPlan.java  |   4 +-
 .../iotdb/db/qp/physical/sys/StartTriggerPlan.java |   4 +-
 .../iotdb/db/qp/physical/sys/StopTriggerPlan.java  |   4 +-
 .../db/qp/physical/sys/StorageGroupMNodePlan.java  |   4 +-
 .../iotdb/db/qp/physical/sys/TracingPlan.java      |   2 +-
 .../db/qp/physical/sys/UnsetTemplatePlan.java      |   4 +-
 .../db/query/control/tracing/TracingManager.java   |   4 +-
 .../db/service/thrift/impl/TSServiceImpl.java      | 245 +++++++++++----------
 58 files changed, 255 insertions(+), 253 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/PhysicalPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/PhysicalPlan.java
index f77021a..52244ba 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/PhysicalPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/PhysicalPlan.java
@@ -90,7 +90,7 @@ public abstract class PhysicalPlan {
 
   private static final String SERIALIZATION_UNIMPLEMENTED = "serialization 
unimplemented";
 
-  private boolean isQuery;
+  private boolean isQuery = false;
   private Operator.OperatorType operatorType;
   private static final int NULL_VALUE_LEN = -1;
 
@@ -110,19 +110,12 @@ public abstract class PhysicalPlan {
     return canBeSplit;
   }
 
-  protected PhysicalPlan(boolean isQuery) {
-    this.isQuery = isQuery;
-  }
+  protected PhysicalPlan() {}
 
-  protected PhysicalPlan(boolean isQuery, Operator.OperatorType operatorType) {
-    this.isQuery = isQuery;
+  protected PhysicalPlan(Operator.OperatorType operatorType) {
     this.operatorType = operatorType;
   }
 
-  public String printQueryPlan() {
-    return "abstract plan";
-  }
-
   public abstract List<? extends PartialPath> getPaths();
 
   public void setPaths(List<PartialPath> paths) {}
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/AggregationPlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/AggregationPlan.java
index 6083605..c81e12e 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/AggregationPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/AggregationPlan.java
@@ -81,7 +81,7 @@ public class AggregationPlan extends RawDataQueryPlan {
 
   @Override
   public List<TSDataType> getWideQueryHeaders(
-      List<String> respColumns, List<String> respSgColumns, Boolean 
isJdbcQuery, BitSet aliasList)
+      List<String> respColumns, List<String> respSgColumns, boolean 
isJdbcQuery, BitSet aliasList)
       throws MetadataException {
     List<TSDataType> seriesTypes = new ArrayList<>();
     List<String> aggregations = getAggregations();
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/DeletePartitionPlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/DeletePartitionPlan.java
index 55d2832..14107d1 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/DeletePartitionPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/DeletePartitionPlan.java
@@ -33,7 +33,7 @@ public class DeletePartitionPlan extends PhysicalPlan {
   private Set<Long> partitionId;
 
   public DeletePartitionPlan(PartialPath storageGroupName, Set<Long> 
partitionId) {
-    super(false, OperatorType.DELETE_PARTITION);
+    super(OperatorType.DELETE_PARTITION);
     this.storageGroupName = storageGroupName;
     this.partitionId = partitionId;
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/DeletePlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/DeletePlan.java
index a3005c5..0a6cae9 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/DeletePlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/DeletePlan.java
@@ -44,7 +44,7 @@ public class DeletePlan extends PhysicalPlan {
   private TimePartitionFilter partitionFilter;
 
   public DeletePlan() {
-    super(false, Operator.OperatorType.DELETE);
+    super(Operator.OperatorType.DELETE);
   }
 
   /**
@@ -55,7 +55,7 @@ public class DeletePlan extends PhysicalPlan {
    * @param path time series path
    */
   public DeletePlan(long startTime, long endTime, PartialPath path) {
-    super(false, Operator.OperatorType.DELETE);
+    super(Operator.OperatorType.DELETE);
     this.deleteStartTime = startTime;
     this.deleteEndTime = endTime;
     this.paths.add(path);
@@ -69,7 +69,7 @@ public class DeletePlan extends PhysicalPlan {
    * @param paths time series paths in List structure
    */
   public DeletePlan(long startTime, long endTime, List<PartialPath> paths) {
-    super(false, Operator.OperatorType.DELETE);
+    super(Operator.OperatorType.DELETE);
     this.deleteStartTime = startTime;
     this.deleteEndTime = endTime;
     this.paths = paths;
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertPlan.java
index 1d0f5af..34e9c0a 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertPlan.java
@@ -46,7 +46,7 @@ public abstract class InsertPlan extends PhysicalPlan {
   List<Integer> failedIndices;
 
   public InsertPlan(Operator.OperatorType operatorType) {
-    super(false, operatorType);
+    super(operatorType);
     super.canBeSplit = false;
   }
 
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/LastQueryPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/LastQueryPlan.java
index b2028bf..9ddcaae 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/LastQueryPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/LastQueryPlan.java
@@ -35,7 +35,11 @@ import org.apache.iotdb.tsfile.read.filter.basic.Filter;
 
 import org.apache.thrift.TException;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 
 public class LastQueryPlan extends RawDataQueryPlan {
 
@@ -66,7 +70,7 @@ public class LastQueryPlan extends RawDataQueryPlan {
 
   @Override
   public List<TSDataType> getWideQueryHeaders(
-      List<String> respColumns, List<String> respSgColumns, Boolean 
isJdbcQuery, BitSet aliasList)
+      List<String> respColumns, List<String> respSgColumns, boolean 
isJdbcQuery, BitSet aliasList)
       throws TException {
     throw new TException("unsupported query type: " + getOperatorType());
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryIndexPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryIndexPlan.java
index 8ff816f..9d37dc0 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryIndexPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryIndexPlan.java
@@ -41,7 +41,7 @@ public class QueryIndexPlan extends RawDataQueryPlan {
 
   @Override
   public List<TSDataType> getWideQueryHeaders(
-      List<String> respColumns, List<String> respSgColumns, Boolean 
isJdbcQuery, BitSet aliasList)
+      List<String> respColumns, List<String> respSgColumns, boolean 
isJdbcQuery, BitSet aliasList)
       throws TException {
     throw new TException("unsupported query type: " + getOperatorType());
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java
index d8dd931..6b46014 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java
@@ -35,7 +35,11 @@ import 
org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import com.google.common.primitives.Bytes;
 import org.apache.thrift.TException;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 public abstract class QueryPlan extends PhysicalPlan {
 
@@ -61,16 +65,13 @@ public abstract class QueryPlan extends PhysicalPlan {
   private boolean withoutAllNull;
 
   public QueryPlan() {
-    super(true);
-    setOperatorType(Operator.OperatorType.QUERY);
-  }
-
-  public QueryPlan(boolean isQuery, Operator.OperatorType operatorType) {
-    super(isQuery, operatorType);
+    super(Operator.OperatorType.QUERY);
+    setQuery(true);
   }
 
   public abstract void deduplicate(PhysicalGenerator physicalGenerator) throws 
MetadataException;
 
+  /** Construct the header of result set. Return TSExecuteStatementResp. */
   public TSExecuteStatementResp getTSExecuteStatementResp(boolean isJdbcQuery)
       throws TException, MetadataException {
     List<String> respColumns = new ArrayList<>();
@@ -97,11 +98,12 @@ public abstract class QueryPlan extends PhysicalPlan {
   }
 
   public List<TSDataType> getWideQueryHeaders(
-      List<String> respColumns, List<String> respSgColumns, Boolean 
isJdbcQuery, BitSet aliasList)
+      List<String> respColumns, List<String> respSgColumns, boolean 
isJdbcQuery, BitSet aliasList)
       throws TException, MetadataException {
     List<TSDataType> seriesTypes = new ArrayList<>();
     for (int i = 0; i < resultColumns.size(); ++i) {
       if (isJdbcQuery) {
+        // Separate sgName from the name of resultColumn to reduce the network 
IO
         String sgName = 
IoTDB.metaManager.getBelongedStorageGroup(getPaths().get(i)).getFullPath();
         respSgColumns.add(sgName);
         if (resultColumns.get(i).getAlias() == null) {
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/RawDataQueryPlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/RawDataQueryPlan.java
index 0f63271..2d1aa1d 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/RawDataQueryPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/RawDataQueryPlan.java
@@ -22,7 +22,6 @@ import 
org.apache.iotdb.db.exception.metadata.MetadataException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.metadata.path.AlignedPath;
 import org.apache.iotdb.db.metadata.path.PartialPath;
-import org.apache.iotdb.db.qp.logical.Operator;
 import org.apache.iotdb.db.qp.strategy.PhysicalGenerator;
 import org.apache.iotdb.db.utils.SchemaUtils;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
@@ -53,10 +52,6 @@ public class RawDataQueryPlan extends QueryPlan {
     super();
   }
 
-  public RawDataQueryPlan(boolean isQuery, Operator.OperatorType operatorType) 
{
-    super(isQuery, operatorType);
-  }
-
   @Override
   public void deduplicate(PhysicalGenerator physicalGenerator) throws 
MetadataException {
     // sort paths by device, to accelerate the metadata read process
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/SelectIntoPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/SelectIntoPlan.java
index 2530e97..2221e6c 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/SelectIntoPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/SelectIntoPlan.java
@@ -38,11 +38,11 @@ public class SelectIntoPlan extends PhysicalPlan {
   private List<PartialPath> intoPaths;
 
   public SelectIntoPlan() {
-    super(false, OperatorType.SELECT_INTO);
+    super(OperatorType.SELECT_INTO);
   }
 
   public SelectIntoPlan(QueryPlan queryPlan, PartialPath fromPath, 
List<PartialPath> intoPaths) {
-    super(false, OperatorType.SELECT_INTO);
+    super(OperatorType.SELECT_INTO);
     this.queryPlan = queryPlan;
     this.fromPath = fromPath;
     this.intoPaths = intoPaths;
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/UDTFPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/UDTFPlan.java
index 37c46e3..401512a 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/UDTFPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/UDTFPlan.java
@@ -91,7 +91,7 @@ public class UDTFPlan extends RawDataQueryPlan implements 
UDFPlan {
 
   @Override
   public List<TSDataType> getWideQueryHeaders(
-      List<String> respColumns, List<String> respSgColumns, Boolean 
isJdbcQuery, BitSet aliasList) {
+      List<String> respColumns, List<String> respSgColumns, boolean 
isJdbcQuery, BitSet aliasList) {
     List<TSDataType> seriesTypes = new ArrayList<>();
     for (int i = 0; i < paths.size(); i++) {
       respColumns.add(resultColumns.get(i).getResultColumnName());
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ActivateTemplatePlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ActivateTemplatePlan.java
index 89bba22..92878f2 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ActivateTemplatePlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ActivateTemplatePlan.java
@@ -39,11 +39,11 @@ public class ActivateTemplatePlan extends PhysicalPlan {
   PartialPath prefixPath;
 
   public ActivateTemplatePlan() {
-    super(false, OperatorType.ACTIVATE_TEMPLATE);
+    super(OperatorType.ACTIVATE_TEMPLATE);
   }
 
   public ActivateTemplatePlan(PartialPath prefixPath) {
-    super(false, OperatorType.ACTIVATE_TEMPLATE);
+    super(OperatorType.ACTIVATE_TEMPLATE);
     this.prefixPath = prefixPath;
   }
 
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/AlterTimeSeriesPlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/AlterTimeSeriesPlan.java
index 66cc2bb..5580d95 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/AlterTimeSeriesPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/AlterTimeSeriesPlan.java
@@ -62,7 +62,7 @@ public class AlterTimeSeriesPlan extends PhysicalPlan {
 
   /** used only for deserialize */
   public AlterTimeSeriesPlan() {
-    super(false, OperatorType.ALTER_TIMESERIES);
+    super(OperatorType.ALTER_TIMESERIES);
   }
 
   public AlterTimeSeriesPlan(
@@ -72,7 +72,7 @@ public class AlterTimeSeriesPlan extends PhysicalPlan {
       String alias,
       Map<String, String> tagsMap,
       Map<String, String> attributesMap) {
-    super(false, Operator.OperatorType.ALTER_TIMESERIES);
+    super(Operator.OperatorType.ALTER_TIMESERIES);
     this.path = path;
     this.alterType = alterType;
     this.alterMap = alterMap;
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/AppendTemplatePlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/AppendTemplatePlan.java
index aa6bf80..5e9287d 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/AppendTemplatePlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/AppendTemplatePlan.java
@@ -43,7 +43,7 @@ public class AppendTemplatePlan extends PhysicalPlan {
   CompressionType[] compressors;
 
   public AppendTemplatePlan() {
-    super(false, OperatorType.APPEND_TEMPLATE);
+    super(OperatorType.APPEND_TEMPLATE);
   }
 
   public AppendTemplatePlan(
@@ -53,7 +53,7 @@ public class AppendTemplatePlan extends PhysicalPlan {
       List<TSDataType> dataTypes,
       List<TSEncoding> encodings,
       List<CompressionType> compressors) {
-    super(false, OperatorType.APPEND_TEMPLATE);
+    super(OperatorType.APPEND_TEMPLATE);
     this.name = name;
     this.isAligned = isAligned;
     this.measurements = measurements.toArray(new String[0]);
@@ -69,7 +69,7 @@ public class AppendTemplatePlan extends PhysicalPlan {
       TSDataType[] dataTypes,
       TSEncoding[] encodings,
       CompressionType[] compressors) {
-    super(false, OperatorType.APPEND_TEMPLATE);
+    super(OperatorType.APPEND_TEMPLATE);
     this.name = name;
     this.isAligned = isAligned;
     this.measurements = measurements;
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/AuthorPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/AuthorPlan.java
index e70ae88..4d22d4e 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/AuthorPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/AuthorPlan.java
@@ -68,7 +68,7 @@ public class AuthorPlan extends PhysicalPlan {
       String[] authorizationList,
       PartialPath nodeName)
       throws AuthException {
-    super(false, Operator.OperatorType.AUTHOR);
+    super(Operator.OperatorType.AUTHOR);
     this.authorType = authorType;
     this.userName = userName;
     this.roleName = roleName;
@@ -139,7 +139,7 @@ public class AuthorPlan extends PhysicalPlan {
   }
 
   public AuthorPlan(OperatorType operatorType) throws IOException {
-    super(false, operatorType);
+    super(operatorType);
     setAuthorType(transformOperatorTypeToAuthorType(operatorType));
   }
 
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/AutoCreateDeviceMNodePlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/AutoCreateDeviceMNodePlan.java
index 8b434c9..24d0724 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/AutoCreateDeviceMNodePlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/AutoCreateDeviceMNodePlan.java
@@ -39,18 +39,14 @@ public class AutoCreateDeviceMNodePlan extends PhysicalPlan 
{
   protected PartialPath path;
 
   public AutoCreateDeviceMNodePlan() {
-    super(false, Operator.OperatorType.AUTO_CREATE_DEVICE_MNODE);
+    super(Operator.OperatorType.AUTO_CREATE_DEVICE_MNODE);
   }
 
   public AutoCreateDeviceMNodePlan(PartialPath path) {
-    super(false, Operator.OperatorType.AUTO_CREATE_DEVICE_MNODE);
+    super(Operator.OperatorType.AUTO_CREATE_DEVICE_MNODE);
     this.path = path;
   }
 
-  public AutoCreateDeviceMNodePlan(boolean isQuery, Operator.OperatorType 
operatorType) {
-    super(isQuery, operatorType);
-  }
-
   @Override
   public List<PartialPath> getPaths() {
     return Collections.singletonList(path);
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ChangeAliasPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ChangeAliasPlan.java
index 426131e..8cfdb02 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ChangeAliasPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ChangeAliasPlan.java
@@ -36,11 +36,11 @@ public class ChangeAliasPlan extends PhysicalPlan {
   private String alias;
 
   public ChangeAliasPlan() {
-    super(false, Operator.OperatorType.CHANGE_ALIAS);
+    super(Operator.OperatorType.CHANGE_ALIAS);
   }
 
   public ChangeAliasPlan(PartialPath path, String alias) {
-    super(false, Operator.OperatorType.CHANGE_ALIAS);
+    super(Operator.OperatorType.CHANGE_ALIAS);
     this.path = path;
     this.alias = alias;
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ChangeTagOffsetPlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ChangeTagOffsetPlan.java
index f00743a..a0c1872 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ChangeTagOffsetPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ChangeTagOffsetPlan.java
@@ -36,11 +36,11 @@ public class ChangeTagOffsetPlan extends PhysicalPlan {
   private long offset;
 
   public ChangeTagOffsetPlan() {
-    super(false, Operator.OperatorType.CHANGE_TAG_OFFSET);
+    super(Operator.OperatorType.CHANGE_TAG_OFFSET);
   }
 
   public ChangeTagOffsetPlan(PartialPath partialPath, long offset) {
-    super(false, Operator.OperatorType.CHANGE_TAG_OFFSET);
+    super(Operator.OperatorType.CHANGE_TAG_OFFSET);
     path = partialPath;
     this.offset = offset;
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ClearCachePlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ClearCachePlan.java
index 9cfa70c..b9d018d 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ClearCachePlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ClearCachePlan.java
@@ -32,7 +32,7 @@ import java.util.List;
 public class ClearCachePlan extends PhysicalPlan {
 
   public ClearCachePlan() {
-    super(false, OperatorType.CLEAR_CACHE);
+    super(OperatorType.CLEAR_CACHE);
   }
 
   @Override
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateAlignedTimeSeriesPlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateAlignedTimeSeriesPlan.java
index 238abd9..b02a98e 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateAlignedTimeSeriesPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateAlignedTimeSeriesPlan.java
@@ -50,7 +50,7 @@ public class CreateAlignedTimeSeriesPlan extends PhysicalPlan 
{
   private List<String> aliasList;
 
   public CreateAlignedTimeSeriesPlan() {
-    super(false, Operator.OperatorType.CREATE_ALIGNED_TIMESERIES);
+    super(Operator.OperatorType.CREATE_ALIGNED_TIMESERIES);
     canBeSplit = false;
   }
 
@@ -61,7 +61,7 @@ public class CreateAlignedTimeSeriesPlan extends PhysicalPlan 
{
       List<TSEncoding> encodings,
       List<CompressionType> compressors,
       List<String> aliasList) {
-    super(false, Operator.OperatorType.CREATE_ALIGNED_TIMESERIES);
+    super(Operator.OperatorType.CREATE_ALIGNED_TIMESERIES);
     this.prefixPath = prefixPath;
     this.measurements = measurements;
     this.dataTypes = dataTypes;
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateContinuousQueryPlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateContinuousQueryPlan.java
index 2a30b2e..42dcc9e 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateContinuousQueryPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateContinuousQueryPlan.java
@@ -28,7 +28,8 @@ import org.apache.iotdb.db.qp.utils.DatetimeUtils;
 import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 import java.nio.ByteBuffer;
-import java.util.*;
+import java.util.Collections;
+import java.util.List;
 
 public class CreateContinuousQueryPlan extends PhysicalPlan {
 
@@ -41,7 +42,7 @@ public class CreateContinuousQueryPlan extends PhysicalPlan {
   private long creationTimestamp;
 
   public CreateContinuousQueryPlan() {
-    super(false, Operator.OperatorType.CREATE_CONTINUOUS_QUERY);
+    super(Operator.OperatorType.CREATE_CONTINUOUS_QUERY);
   }
 
   public CreateContinuousQueryPlan(
@@ -51,7 +52,7 @@ public class CreateContinuousQueryPlan extends PhysicalPlan {
       long everyInterval,
       long forInterval,
       QueryOperator queryOperator) {
-    super(false, Operator.OperatorType.CREATE_CONTINUOUS_QUERY);
+    super(Operator.OperatorType.CREATE_CONTINUOUS_QUERY);
     this.querySql = querySql;
     this.continuousQueryName = continuousQueryName;
     this.targetPath = targetPath;
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateFunctionPlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateFunctionPlan.java
index dadb89e..0a0cd6a 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateFunctionPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateFunctionPlan.java
@@ -36,11 +36,11 @@ public class CreateFunctionPlan extends PhysicalPlan {
   private String className;
 
   public CreateFunctionPlan() {
-    super(false, OperatorType.CREATE_FUNCTION);
+    super(OperatorType.CREATE_FUNCTION);
   }
 
   public CreateFunctionPlan(String udfName, String className) {
-    super(false, OperatorType.CREATE_FUNCTION);
+    super(OperatorType.CREATE_FUNCTION);
     this.udfName = udfName;
     this.className = className;
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateIndexPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateIndexPlan.java
index 0e6beab..4d60934 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateIndexPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateIndexPlan.java
@@ -41,13 +41,13 @@ public class CreateIndexPlan extends PhysicalPlan {
   private IndexType indexType;
 
   public CreateIndexPlan() {
-    super(false, OperatorType.CREATE_INDEX);
+    super(OperatorType.CREATE_INDEX);
     canBeSplit = false;
   }
 
   public CreateIndexPlan(
       List<PartialPath> paths, Map<String, String> props, long startTime, 
IndexType indexType) {
-    super(false, OperatorType.CREATE_INDEX);
+    super(OperatorType.CREATE_INDEX);
     this.paths = paths;
     this.props = props;
     time = startTime;
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateMultiTimeSeriesPlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateMultiTimeSeriesPlan.java
index 1c734d8..38c323c 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateMultiTimeSeriesPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateMultiTimeSeriesPlan.java
@@ -65,7 +65,7 @@ public class CreateMultiTimeSeriesPlan extends PhysicalPlan 
implements BatchPlan
   private List<Integer> indexes;
 
   public CreateMultiTimeSeriesPlan() {
-    super(false, Operator.OperatorType.CREATE_MULTI_TIMESERIES);
+    super(Operator.OperatorType.CREATE_MULTI_TIMESERIES);
   }
 
   @Override
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateSnapshotPlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateSnapshotPlan.java
index b2e51ca..5e950be 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateSnapshotPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateSnapshotPlan.java
@@ -33,7 +33,7 @@ import java.util.List;
 public class CreateSnapshotPlan extends PhysicalPlan {
 
   public CreateSnapshotPlan() {
-    super(false, OperatorType.CREATE_SCHEMA_SNAPSHOT);
+    super(OperatorType.CREATE_SCHEMA_SNAPSHOT);
   }
 
   @Override
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTemplatePlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTemplatePlan.java
index 49804e8..b05030b 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTemplatePlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTemplatePlan.java
@@ -55,7 +55,7 @@ public class CreateTemplatePlan extends PhysicalPlan {
   private static final int NEW_PLAN = -1;
 
   public CreateTemplatePlan() {
-    super(false, OperatorType.CREATE_TEMPLATE);
+    super(OperatorType.CREATE_TEMPLATE);
   }
 
   public CreateTemplatePlan(
@@ -66,7 +66,7 @@ public class CreateTemplatePlan extends PhysicalPlan {
       List<List<CompressionType>> compressors) {
     // New constructor for tree-structured template where aligned measurements 
get individual
     // compressors
-    super(false, OperatorType.CREATE_TEMPLATE);
+    super(OperatorType.CREATE_TEMPLATE);
 
     this.name = name;
     schemaNames = null;
@@ -134,7 +134,7 @@ public class CreateTemplatePlan extends PhysicalPlan {
       TSDataType[][] dataTypes,
       TSEncoding[][] encodings,
       CompressionType[][] compressors) {
-    super(false, OperatorType.CREATE_TEMPLATE);
+    super(OperatorType.CREATE_TEMPLATE);
     this.name = name;
     this.schemaNames = null;
     this.measurements = measurements;
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTimeSeriesPlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTimeSeriesPlan.java
index 8bfd44e..aceae26 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTimeSeriesPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTimeSeriesPlan.java
@@ -49,7 +49,7 @@ public class CreateTimeSeriesPlan extends PhysicalPlan {
   private long tagOffset = -1;
 
   public CreateTimeSeriesPlan() {
-    super(false, Operator.OperatorType.CREATE_TIMESERIES);
+    super(Operator.OperatorType.CREATE_TIMESERIES);
     canBeSplit = false;
   }
 
@@ -62,7 +62,7 @@ public class CreateTimeSeriesPlan extends PhysicalPlan {
       Map<String, String> tags,
       Map<String, String> attributes,
       String alias) {
-    super(false, Operator.OperatorType.CREATE_TIMESERIES);
+    super(Operator.OperatorType.CREATE_TIMESERIES);
     this.path = path;
     this.dataType = dataType;
     this.encoding = encoding;
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTriggerPlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTriggerPlan.java
index 8cc5bf2..2b34d85 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTriggerPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTriggerPlan.java
@@ -55,7 +55,7 @@ public class CreateTriggerPlan extends PhysicalPlan {
   private boolean isStopped = false;
 
   public CreateTriggerPlan() {
-    super(false, OperatorType.CREATE_TRIGGER);
+    super(OperatorType.CREATE_TRIGGER);
     canBeSplit = false;
   }
 
@@ -65,7 +65,7 @@ public class CreateTriggerPlan extends PhysicalPlan {
       PartialPath fullPath,
       String className,
       Map<String, String> attributes) {
-    super(false, OperatorType.CREATE_TRIGGER);
+    super(OperatorType.CREATE_TRIGGER);
     this.triggerName = triggerName;
     this.event = event;
     this.fullPath = fullPath;
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DataAuthPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DataAuthPlan.java
index 0e0d474..8f1cc93 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DataAuthPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DataAuthPlan.java
@@ -34,11 +34,11 @@ public class DataAuthPlan extends PhysicalPlan {
   private List<String> users;
 
   public DataAuthPlan(OperatorType operatorType) {
-    super(false, operatorType);
+    super(operatorType);
   }
 
   public DataAuthPlan(OperatorType operatorType, List<String> users) {
-    super(false, operatorType);
+    super(operatorType);
     this.users = users;
   }
 
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DeleteStorageGroupPlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DeleteStorageGroupPlan.java
index 4ba3a3f..f6ac296 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DeleteStorageGroupPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DeleteStorageGroupPlan.java
@@ -34,12 +34,12 @@ public class DeleteStorageGroupPlan extends PhysicalPlan {
   private List<PartialPath> deletePathList;
 
   public DeleteStorageGroupPlan(List<PartialPath> deletePathList) {
-    super(false, Operator.OperatorType.DELETE_STORAGE_GROUP);
+    super(Operator.OperatorType.DELETE_STORAGE_GROUP);
     this.deletePathList = deletePathList;
   }
 
   public DeleteStorageGroupPlan() {
-    super(false, Operator.OperatorType.DELETE_STORAGE_GROUP);
+    super(Operator.OperatorType.DELETE_STORAGE_GROUP);
   }
 
   @Override
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DeleteTimeSeriesPlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DeleteTimeSeriesPlan.java
index 6289709..a6e8237 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DeleteTimeSeriesPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DeleteTimeSeriesPlan.java
@@ -46,12 +46,12 @@ public class DeleteTimeSeriesPlan extends PhysicalPlan {
   private TimePartitionFilter partitionFilter;
 
   public DeleteTimeSeriesPlan(List<PartialPath> deletePathList) {
-    super(false, Operator.OperatorType.DELETE_TIMESERIES);
+    super(Operator.OperatorType.DELETE_TIMESERIES);
     this.deletePathList = deletePathList;
   }
 
   public DeleteTimeSeriesPlan() {
-    super(false, Operator.OperatorType.DELETE_TIMESERIES);
+    super(Operator.OperatorType.DELETE_TIMESERIES);
   }
 
   @Override
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DropContinuousQueryPlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DropContinuousQueryPlan.java
index 7d60f26..463b03c 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DropContinuousQueryPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DropContinuousQueryPlan.java
@@ -33,11 +33,11 @@ public class DropContinuousQueryPlan extends PhysicalPlan {
   private String continuousQueryName;
 
   public DropContinuousQueryPlan() {
-    super(false, Operator.OperatorType.DROP_CONTINUOUS_QUERY);
+    super(Operator.OperatorType.DROP_CONTINUOUS_QUERY);
   }
 
   public DropContinuousQueryPlan(String continuousQueryName) {
-    super(false, Operator.OperatorType.DROP_CONTINUOUS_QUERY);
+    super(Operator.OperatorType.DROP_CONTINUOUS_QUERY);
     this.continuousQueryName = continuousQueryName;
   }
 
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DropFunctionPlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DropFunctionPlan.java
index 436b7e7..8a60fb5 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DropFunctionPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DropFunctionPlan.java
@@ -35,11 +35,11 @@ public class DropFunctionPlan extends PhysicalPlan {
   private String udfName;
 
   public DropFunctionPlan() {
-    super(false, OperatorType.DROP_FUNCTION);
+    super(OperatorType.DROP_FUNCTION);
   }
 
   public DropFunctionPlan(String udfName) {
-    super(false, OperatorType.DROP_FUNCTION);
+    super(OperatorType.DROP_FUNCTION);
     this.udfName = udfName;
   }
 
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DropIndexPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DropIndexPlan.java
index d49ec29..a40697d 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DropIndexPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DropIndexPlan.java
@@ -38,11 +38,11 @@ public class DropIndexPlan extends PhysicalPlan {
   private IndexType indexType;
 
   public DropIndexPlan() {
-    super(false, Operator.OperatorType.DROP_INDEX);
+    super(Operator.OperatorType.DROP_INDEX);
   }
 
   public DropIndexPlan(List<PartialPath> paths, IndexType indexType) {
-    super(false, OperatorType.DROP_INDEX);
+    super(OperatorType.DROP_INDEX);
     this.paths = paths;
     this.indexType = indexType;
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DropTriggerPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DropTriggerPlan.java
index f4cc22a..8f19a36 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DropTriggerPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DropTriggerPlan.java
@@ -35,12 +35,12 @@ public class DropTriggerPlan extends PhysicalPlan {
   private String triggerName;
 
   public DropTriggerPlan() {
-    super(false, OperatorType.DROP_TRIGGER);
+    super(OperatorType.DROP_TRIGGER);
     canBeSplit = false;
   }
 
   public DropTriggerPlan(String triggerName) {
-    super(false, OperatorType.DROP_TRIGGER);
+    super(OperatorType.DROP_TRIGGER);
     this.triggerName = triggerName;
     canBeSplit = false;
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/FlushPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/FlushPlan.java
index acd9354..12f8e14 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/FlushPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/FlushPlan.java
@@ -57,11 +57,11 @@ public class FlushPlan extends PhysicalPlan {
 
   /** only for deserialize */
   public FlushPlan() {
-    super(false, OperatorType.FLUSH);
+    super(OperatorType.FLUSH);
   }
 
   public FlushPlan(Boolean isSeq, List<PartialPath> storageGroups) {
-    super(false, OperatorType.FLUSH);
+    super(OperatorType.FLUSH);
     if (storageGroups == null) {
       this.storageGroupPartitionIds = null;
     } else {
@@ -78,7 +78,7 @@ public class FlushPlan extends PhysicalPlan {
       Boolean isSeq,
       boolean isSync,
       Map<PartialPath, List<Pair<Long, Boolean>>> storageGroupPartitionIds) {
-    super(false, OperatorType.FLUSH);
+    super(OperatorType.FLUSH);
     this.storageGroupPartitionIds = storageGroupPartitionIds;
     this.isSeq = isSeq;
     this.isSync = isSync;
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/KillQueryPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/KillQueryPlan.java
index 583c96a..b9f2f2a 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/KillQueryPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/KillQueryPlan.java
@@ -30,7 +30,7 @@ public class KillQueryPlan extends PhysicalPlan {
   private long queryId = -1;
 
   public KillQueryPlan(long queryId) {
-    super(false, OperatorType.KILL);
+    super(OperatorType.KILL);
     this.queryId = queryId;
   }
 
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/LoadConfigurationPlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/LoadConfigurationPlan.java
index 2ebcba0..c6f6c8b 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/LoadConfigurationPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/LoadConfigurationPlan.java
@@ -45,7 +45,7 @@ public class LoadConfigurationPlan extends PhysicalPlan {
   public LoadConfigurationPlan(
       LoadConfigurationPlanType loadConfigurationPlanType, Properties[] 
propertiesArray)
       throws QueryProcessException {
-    super(false, OperatorType.LOAD_CONFIGURATION);
+    super(OperatorType.LOAD_CONFIGURATION);
     if (loadConfigurationPlanType != LoadConfigurationPlanType.GLOBAL) {
       throw new QueryProcessException(
           "The constructor with 2 parameters is for load global 
configuration");
@@ -59,7 +59,7 @@ public class LoadConfigurationPlan extends PhysicalPlan {
 
   public LoadConfigurationPlan(LoadConfigurationPlanType 
loadConfigurationPlanType)
       throws QueryProcessException {
-    super(false, OperatorType.LOAD_CONFIGURATION);
+    super(OperatorType.LOAD_CONFIGURATION);
     if (loadConfigurationPlanType != LoadConfigurationPlanType.LOCAL) {
       throw new QueryProcessException(
           "The constructor with 1 parameters is for load local configuration");
@@ -69,7 +69,7 @@ public class LoadConfigurationPlan extends PhysicalPlan {
 
   // only for deserialize
   public LoadConfigurationPlan() {
-    super(false, OperatorType.LOAD_CONFIGURATION);
+    super(OperatorType.LOAD_CONFIGURATION);
   }
 
   @Override
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/LoadDataPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/LoadDataPlan.java
index 8300804..8b9d293 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/LoadDataPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/LoadDataPlan.java
@@ -33,7 +33,7 @@ public class LoadDataPlan extends PhysicalPlan {
 
   /** Constructor of LoadDataPlan. */
   public LoadDataPlan(String inputFilePath, String measureType) {
-    super(false, Operator.OperatorType.LOAD_DATA);
+    super(Operator.OperatorType.LOAD_DATA);
     this.inputFilePath = inputFilePath;
     this.measureType = measureType;
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/LogPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/LogPlan.java
index 55d9368..e6912ed 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/LogPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/LogPlan.java
@@ -34,17 +34,13 @@ public class LogPlan extends PhysicalPlan {
 
   private ByteBuffer log;
 
-  public LogPlan() {
-    super(false);
-  }
+  public LogPlan() {}
 
   public LogPlan(ByteBuffer log) {
-    super(false);
     this.log = log;
   }
 
   public LogPlan(LogPlan plan) {
-    super(false);
     this.log = IOUtils.clone(plan.log);
   }
 
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/MNodePlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/MNodePlan.java
index 6425b79..2bba63c 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/MNodePlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/MNodePlan.java
@@ -35,19 +35,19 @@ public class MNodePlan extends PhysicalPlan {
   protected int childSize;
 
   public MNodePlan() {
-    super(false, Operator.OperatorType.MNODE);
+    super(Operator.OperatorType.MNODE);
+  }
+
+  public MNodePlan(Operator.OperatorType operatorType) {
+    super(operatorType);
   }
 
   public MNodePlan(String name, int childSize) {
-    super(false, Operator.OperatorType.MNODE);
+    super(Operator.OperatorType.MNODE);
     this.name = name;
     this.childSize = childSize;
   }
 
-  public MNodePlan(boolean isQuery, Operator.OperatorType operatorType) {
-    super(isQuery, operatorType);
-  }
-
   @Override
   public List<PartialPath> getPaths() {
     return new ArrayList<>();
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/MeasurementMNodePlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/MeasurementMNodePlan.java
index efa98de..0671926 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/MeasurementMNodePlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/MeasurementMNodePlan.java
@@ -37,12 +37,12 @@ public class MeasurementMNodePlan extends MNodePlan {
   private long offset;
 
   public MeasurementMNodePlan() {
-    super(false, Operator.OperatorType.MEASUREMENT_MNODE);
+    super(Operator.OperatorType.MEASUREMENT_MNODE);
   }
 
   public MeasurementMNodePlan(
       String name, String alias, long offset, int childSize, 
IMeasurementSchema schema) {
-    super(false, Operator.OperatorType.MEASUREMENT_MNODE);
+    super(Operator.OperatorType.MEASUREMENT_MNODE);
     this.name = name;
     this.alias = alias;
     this.offset = offset;
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/MergePlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/MergePlan.java
index b219209..07a5b49 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/MergePlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/MergePlan.java
@@ -32,11 +32,11 @@ import java.util.List;
 public class MergePlan extends PhysicalPlan {
 
   public MergePlan(OperatorType operatorType) {
-    super(false, operatorType);
+    super(operatorType);
   }
 
   public MergePlan() {
-    super(false, OperatorType.MERGE);
+    super(OperatorType.MERGE);
   }
 
   @Override
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/OperateFilePlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/OperateFilePlan.java
index 100aef1..aff6be9 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/OperateFilePlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/OperateFilePlan.java
@@ -35,7 +35,7 @@ public class OperateFilePlan extends PhysicalPlan {
   private boolean verifyMetadata;
 
   public OperateFilePlan(File file, OperatorType operatorType) {
-    super(false, operatorType);
+    super(operatorType);
     this.file = file;
   }
 
@@ -54,7 +54,7 @@ public class OperateFilePlan extends PhysicalPlan {
       boolean autoCreateSchema,
       int sgLevel,
       boolean verifyMetadata) {
-    super(false, operatorType);
+    super(operatorType);
     this.file = file;
     this.autoCreateSchema = autoCreateSchema;
     this.sgLevel = sgLevel;
@@ -62,7 +62,7 @@ public class OperateFilePlan extends PhysicalPlan {
   }
 
   public OperateFilePlan(File file, File targetDir, OperatorType operatorType) 
{
-    super(false, operatorType);
+    super(operatorType);
     this.file = file;
     this.targetDir = targetDir;
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/PruneTemplatePlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/PruneTemplatePlan.java
index 1902908..ea6b878 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/PruneTemplatePlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/PruneTemplatePlan.java
@@ -36,11 +36,11 @@ public class PruneTemplatePlan extends PhysicalPlan {
   String[] prunedMeasurements;
 
   public PruneTemplatePlan() {
-    super(false, OperatorType.PRUNE_TEMPLATE);
+    super(OperatorType.PRUNE_TEMPLATE);
   }
 
   public PruneTemplatePlan(String name, List<String> prunedMeasurements) {
-    super(false, OperatorType.PRUNE_TEMPLATE);
+    super(OperatorType.PRUNE_TEMPLATE);
 
     this.name = name;
     this.prunedMeasurements = prunedMeasurements.toArray(new String[0]);
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SetStorageGroupPlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SetStorageGroupPlan.java
index 5f6f24c..a9e85d3 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SetStorageGroupPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SetStorageGroupPlan.java
@@ -35,11 +35,11 @@ public class SetStorageGroupPlan extends PhysicalPlan {
   private PartialPath path;
 
   public SetStorageGroupPlan() {
-    super(false, Operator.OperatorType.SET_STORAGE_GROUP);
+    super(Operator.OperatorType.SET_STORAGE_GROUP);
   }
 
   public SetStorageGroupPlan(PartialPath path) {
-    super(false, Operator.OperatorType.SET_STORAGE_GROUP);
+    super(Operator.OperatorType.SET_STORAGE_GROUP);
     this.path = path;
   }
 
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SetSystemModePlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SetSystemModePlan.java
index c435b6f..e8fecaa 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SetSystemModePlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SetSystemModePlan.java
@@ -36,11 +36,11 @@ public class SetSystemModePlan extends PhysicalPlan {
   private boolean isReadOnly;
 
   public SetSystemModePlan() {
-    super(false, OperatorType.SET_SYSTEM_MODE);
+    super(OperatorType.SET_SYSTEM_MODE);
   }
 
   public SetSystemModePlan(boolean isReadOnly) {
-    super(false, OperatorType.SET_SYSTEM_MODE);
+    super(OperatorType.SET_SYSTEM_MODE);
     this.isReadOnly = isReadOnly;
   }
 
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SetTTLPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SetTTLPlan.java
index 4c09325..5247a73 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SetTTLPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SetTTLPlan.java
@@ -36,12 +36,12 @@ public class SetTTLPlan extends PhysicalPlan {
   private long dataTTL;
 
   public SetTTLPlan() {
-    super(false, OperatorType.TTL);
+    super(OperatorType.TTL);
   }
 
   public SetTTLPlan(PartialPath storageGroup, long dataTTL) {
     // set TTL
-    super(false, OperatorType.TTL);
+    super(OperatorType.TTL);
     this.storageGroup = storageGroup;
     this.dataTTL = dataTTL;
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SetTemplatePlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SetTemplatePlan.java
index c1db1fe..2026b0d 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SetTemplatePlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SetTemplatePlan.java
@@ -34,11 +34,11 @@ public class SetTemplatePlan extends PhysicalPlan {
   String prefixPath;
 
   public SetTemplatePlan() {
-    super(false, OperatorType.SET_TEMPLATE);
+    super(OperatorType.SET_TEMPLATE);
   }
 
   public SetTemplatePlan(String templateName, String prefixPath) {
-    super(false, OperatorType.SET_TEMPLATE);
+    super(OperatorType.SET_TEMPLATE);
     this.templateName = templateName;
     this.prefixPath = prefixPath;
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SettlePlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SettlePlan.java
index 99ccf78..52c9e74 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SettlePlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/SettlePlan.java
@@ -31,13 +31,13 @@ public class SettlePlan extends PhysicalPlan {
   boolean isSgPath;
 
   public SettlePlan(PartialPath sgPath) {
-    super(false, OperatorType.SETTLE);
+    super(OperatorType.SETTLE);
     this.sgPath = sgPath;
     setIsSgPath(true);
   }
 
   public SettlePlan(String tsFilePath) {
-    super(false, OperatorType.SETTLE);
+    super(OperatorType.SETTLE);
     this.tsFilePath = tsFilePath;
     setIsSgPath(false);
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ShowPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ShowPlan.java
index 72abda1..9ee494f 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ShowPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/ShowPlan.java
@@ -35,9 +35,9 @@ public class ShowPlan extends PhysicalPlan {
   private boolean hasLimit;
 
   public ShowPlan(ShowContentType showContentType) {
-    super(true);
+    super(OperatorType.SHOW);
+    setQuery(true);
     this.showContentType = showContentType;
-    setOperatorType(OperatorType.SHOW);
   }
 
   public ShowPlan(ShowContentType showContentType, PartialPath path) {
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/StartTriggerPlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/StartTriggerPlan.java
index bf6ecf6..5a16b88 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/StartTriggerPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/StartTriggerPlan.java
@@ -35,12 +35,12 @@ public class StartTriggerPlan extends PhysicalPlan {
   private String triggerName;
 
   public StartTriggerPlan() {
-    super(false, OperatorType.START_TRIGGER);
+    super(OperatorType.START_TRIGGER);
     canBeSplit = false;
   }
 
   public StartTriggerPlan(String triggerName) {
-    super(false, OperatorType.START_TRIGGER);
+    super(OperatorType.START_TRIGGER);
     this.triggerName = triggerName;
     canBeSplit = false;
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/StopTriggerPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/StopTriggerPlan.java
index 78b44e9..f6008ca 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/StopTriggerPlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/StopTriggerPlan.java
@@ -35,12 +35,12 @@ public class StopTriggerPlan extends PhysicalPlan {
   private String triggerName;
 
   public StopTriggerPlan() {
-    super(false, OperatorType.STOP_TRIGGER);
+    super(OperatorType.STOP_TRIGGER);
     canBeSplit = false;
   }
 
   public StopTriggerPlan(String triggerName) {
-    super(false, OperatorType.STOP_TRIGGER);
+    super(OperatorType.STOP_TRIGGER);
     this.triggerName = triggerName;
     canBeSplit = false;
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/StorageGroupMNodePlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/StorageGroupMNodePlan.java
index 95a138c..03dde8c 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/StorageGroupMNodePlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/StorageGroupMNodePlan.java
@@ -35,11 +35,11 @@ public class StorageGroupMNodePlan extends MNodePlan {
   private int alignedTimeseriesIndex;
 
   public StorageGroupMNodePlan() {
-    super(false, Operator.OperatorType.STORAGE_GROUP_MNODE);
+    super(Operator.OperatorType.STORAGE_GROUP_MNODE);
   }
 
   public StorageGroupMNodePlan(String name, long dataTTL, int childSize) {
-    super(false, Operator.OperatorType.STORAGE_GROUP_MNODE);
+    super(Operator.OperatorType.STORAGE_GROUP_MNODE);
     this.name = name;
     this.dataTTL = dataTTL;
     this.childSize = childSize;
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/TracingPlan.java 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/TracingPlan.java
index 485f235..0e0f9fc 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/TracingPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/TracingPlan.java
@@ -30,7 +30,7 @@ public class TracingPlan extends PhysicalPlan {
   private boolean isTracingOn;
 
   public TracingPlan(boolean isTracingOn) {
-    super(false, OperatorType.TRACING);
+    super(OperatorType.TRACING);
     this.isTracingOn = isTracingOn;
   }
 
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/UnsetTemplatePlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/UnsetTemplatePlan.java
index ca77ced..10ef156 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/UnsetTemplatePlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/UnsetTemplatePlan.java
@@ -36,11 +36,11 @@ public class UnsetTemplatePlan extends PhysicalPlan {
   String templateName;
 
   public UnsetTemplatePlan() {
-    super(false, Operator.OperatorType.UNSET_TEMPLATE);
+    super(Operator.OperatorType.UNSET_TEMPLATE);
   }
 
   public UnsetTemplatePlan(String prefixPath, String templateName) {
-    super(false, Operator.OperatorType.UNSET_TEMPLATE);
+    super(Operator.OperatorType.UNSET_TEMPLATE);
     this.prefixPath = prefixPath;
     this.templateName = templateName;
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/query/control/tracing/TracingManager.java
 
b/server/src/main/java/org/apache/iotdb/db/query/control/tracing/TracingManager.java
index cbc76cf..68c62c9 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/query/control/tracing/TracingManager.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/query/control/tracing/TracingManager.java
@@ -61,8 +61,10 @@ public class TracingManager {
     getTracingInfo(queryId).addOverlappedPageNum();
   }
 
-  public void setStartTime(long queryId, long startTime) {
+  public void setStartTime(long queryId, long startTime, String statement) {
     getTracingInfo(queryId).setStartTime(startTime);
+    registerActivity(
+        queryId, String.format(TracingConstant.ACTIVITY_START_EXECUTE, 
statement), startTime);
   }
 
   public void registerActivity(long queryId, String activity, long startTime) {
diff --git 
a/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/TSServiceImpl.java
 
b/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/TSServiceImpl.java
index 1762ad6..24a103b 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/TSServiceImpl.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/TSServiceImpl.java
@@ -37,7 +37,6 @@ import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.metadata.template.TemplateQueryType;
 import org.apache.iotdb.db.qp.logical.Operator.OperatorType;
 import org.apache.iotdb.db.qp.physical.PhysicalPlan;
-import org.apache.iotdb.db.qp.physical.crud.AlignByDevicePlan;
 import org.apache.iotdb.db.qp.physical.crud.DeletePlan;
 import org.apache.iotdb.db.qp.physical.crud.InsertMultiTabletPlan;
 import org.apache.iotdb.db.qp.physical.crud.InsertRowPlan;
@@ -48,7 +47,6 @@ import org.apache.iotdb.db.qp.physical.crud.QueryPlan;
 import org.apache.iotdb.db.qp.physical.crud.SelectIntoPlan;
 import org.apache.iotdb.db.qp.physical.crud.UDFPlan;
 import org.apache.iotdb.db.qp.physical.sys.AppendTemplatePlan;
-import org.apache.iotdb.db.qp.physical.sys.AuthorPlan;
 import org.apache.iotdb.db.qp.physical.sys.CreateAlignedTimeSeriesPlan;
 import org.apache.iotdb.db.qp.physical.sys.CreateMultiTimeSeriesPlan;
 import org.apache.iotdb.db.qp.physical.sys.CreateTemplatePlan;
@@ -58,12 +56,10 @@ import 
org.apache.iotdb.db.qp.physical.sys.DeleteTimeSeriesPlan;
 import org.apache.iotdb.db.qp.physical.sys.PruneTemplatePlan;
 import org.apache.iotdb.db.qp.physical.sys.SetStorageGroupPlan;
 import org.apache.iotdb.db.qp.physical.sys.SetTemplatePlan;
-import org.apache.iotdb.db.qp.physical.sys.ShowPlan;
 import org.apache.iotdb.db.qp.physical.sys.ShowQueryProcesslistPlan;
 import org.apache.iotdb.db.qp.physical.sys.UnsetTemplatePlan;
 import org.apache.iotdb.db.query.context.QueryContext;
 import org.apache.iotdb.db.query.control.tracing.TracingConstant;
-import org.apache.iotdb.db.query.dataset.AlignByDeviceDataSet;
 import org.apache.iotdb.db.query.dataset.DirectAlignByTimeDataSet;
 import org.apache.iotdb.db.query.dataset.DirectNonAlignDataSet;
 import org.apache.iotdb.db.service.IoTDB;
@@ -158,8 +154,6 @@ public class TSServiceImpl extends BasicServiceProvider 
implements TSIService.If
   private static final String INFO_INTERRUPT_ERROR =
       "Current Thread interrupted when dealing with request {}";
 
-  private long startTime = -1L;
-
   public TSServiceImpl() throws QueryProcessException {
     super();
   }
@@ -452,13 +446,12 @@ public class TSServiceImpl extends BasicServiceProvider 
implements TSIService.If
   @Override
   public TSExecuteStatementResp executeStatement(TSExecuteStatementReq req) {
     String statement = req.getStatement();
-    startTime = System.currentTimeMillis();
-
     try {
       if (!checkLogin(req.getSessionId())) {
         return RpcUtils.getTSExecuteStatementResp(getNotLoggedInStatus());
       }
 
+      long startTime = System.currentTimeMillis();
       PhysicalPlan physicalPlan =
           processor.parseSQLToPhysicalPlan(statement, 
sessionManager.getZoneId(req.getSessionId()));
 
@@ -468,6 +461,7 @@ public class TSServiceImpl extends BasicServiceProvider 
implements TSIService.If
               req.statementId,
               physicalPlan,
               req.fetchSize,
+              startTime,
               req.timeout,
               req.getSessionId(),
               req.isEnableRedirectQuery(),
@@ -497,6 +491,7 @@ public class TSServiceImpl extends BasicServiceProvider 
implements TSIService.If
         return RpcUtils.getTSExecuteStatementResp(getNotLoggedInStatus());
       }
 
+      long startTime = System.currentTimeMillis();
       String statement = req.getStatement();
       PhysicalPlan physicalPlan =
           processor.parseSQLToPhysicalPlan(statement, 
sessionManager.getZoneId(req.sessionId));
@@ -507,6 +502,7 @@ public class TSServiceImpl extends BasicServiceProvider 
implements TSIService.If
               req.statementId,
               physicalPlan,
               req.fetchSize,
+              startTime,
               req.timeout,
               req.getSessionId(),
               req.isEnableRedirectQuery(),
@@ -533,6 +529,7 @@ public class TSServiceImpl extends BasicServiceProvider 
implements TSIService.If
         return RpcUtils.getTSExecuteStatementResp(getNotLoggedInStatus());
       }
 
+      long startTime = System.currentTimeMillis();
       PhysicalPlan physicalPlan =
           processor.rawDataQueryReqToPhysicalPlan(req, 
sessionManager.getZoneId(req.sessionId));
       return physicalPlan.isQuery()
@@ -541,6 +538,7 @@ public class TSServiceImpl extends BasicServiceProvider 
implements TSIService.If
               req.statementId,
               physicalPlan,
               req.fetchSize,
+              startTime,
               CONFIG.getQueryTimeoutThreshold(),
               req.sessionId,
               req.isEnableRedirectQuery(),
@@ -565,6 +563,7 @@ public class TSServiceImpl extends BasicServiceProvider 
implements TSIService.If
         return RpcUtils.getTSExecuteStatementResp(getNotLoggedInStatus());
       }
 
+      long startTime = System.currentTimeMillis();
       PhysicalPlan physicalPlan =
           processor.lastDataQueryReqToPhysicalPlan(req, 
sessionManager.getZoneId(req.sessionId));
       return physicalPlan.isQuery()
@@ -573,6 +572,7 @@ public class TSServiceImpl extends BasicServiceProvider 
implements TSIService.If
               req.statementId,
               physicalPlan,
               req.fetchSize,
+              startTime,
               CONFIG.getQueryTimeoutThreshold(),
               req.sessionId,
               req.isEnableRedirectQuery(),
@@ -591,8 +591,9 @@ public class TSServiceImpl extends BasicServiceProvider 
implements TSIService.If
   }
 
   /**
-   * @param plan must be a plan for Query: FillQueryPlan, AggregationPlan, 
GroupByTimePlan, UDFPlan,
-   *     some AuthorPlan
+   * Execute query statement, return TSExecuteStatementResp with dataset.
+   *
+   * @param plan must be a plan for Query: QueryPlan, ShowPlan, and some 
AuthorPlan
    */
   @SuppressWarnings({"squid:S3776", "squid:S1141"}) // Suppress high Cognitive 
Complexity warning
   private TSExecuteStatementResp internalExecuteQueryStatement(
@@ -600,6 +601,7 @@ public class TSServiceImpl extends BasicServiceProvider 
implements TSIService.If
       long statementId,
       PhysicalPlan plan,
       int fetchSize,
+      long queryStartTime,
       long timeout,
       long sessionId,
       boolean enableRedirect,
@@ -607,111 +609,28 @@ public class TSServiceImpl extends BasicServiceProvider 
implements TSIService.If
       throws QueryProcessException, SQLException, StorageEngineException,
           QueryFilterOptimizationException, MetadataException, IOException, 
InterruptedException,
           TException, AuthException {
+    String username = sessionManager.getUsername(sessionId);
+    plan.setLoginUserName(username);
+
     queryFrequencyRecorder.incrementAndGet();
     AUDIT_LOGGER.debug(
         "Session {} execute Query: {}", sessionManager.getCurrSessionId(), 
statement);
 
-    final long queryStartTime = System.currentTimeMillis();
     final long queryId = sessionManager.requestQueryId(statementId, true);
     QueryContext context =
         genQueryContext(queryId, plan.isDebug(), queryStartTime, statement, 
timeout);
 
-    if (plan instanceof QueryPlan && ((QueryPlan) plan).isEnableTracing()) {
-      context.setEnableTracing(true);
-      tracingManager.setStartTime(queryId, this.startTime);
-      tracingManager.registerActivity(
-          queryId,
-          String.format(TracingConstant.ACTIVITY_START_EXECUTE, statement),
-          this.startTime);
-      tracingManager.registerActivity(queryId, 
TracingConstant.ACTIVITY_PARSE_SQL, queryStartTime);
-      if (!(plan instanceof AlignByDevicePlan)) {
-        tracingManager.setSeriesPathNum(queryId, plan.getPaths().size());
-      }
-    }
-
+    TSExecuteStatementResp resp;
     try {
-      String username = sessionManager.getUsername(sessionId);
-      plan.setLoginUserName(username);
-
-      TSExecuteStatementResp resp = null;
-      // execute it before createDataSet since it may change the content of 
query plan
-      if (plan instanceof QueryPlan && !(plan instanceof UDFPlan)) {
-        resp = getQueryColumnHeaders(plan, username, isJdbcQuery);
-      }
       if (plan instanceof QueryPlan) {
-        ((QueryPlan) plan).setEnableRedirect(enableRedirect);
-      }
-      // create and cache dataset
-      QueryDataSet newDataSet = createQueryDataSet(context, plan, fetchSize);
-      if (plan instanceof QueryPlan && ((QueryPlan) plan).isEnableTracing()) {
-        tracingManager.registerActivity(
-            queryId, TracingConstant.ACTIVITY_CREATE_DATASET, 
System.currentTimeMillis());
-      }
-
-      if (newDataSet.getEndPoint() != null && enableRedirect) {
-        // redirect query
-        LOGGER.debug(
-            "need to redirect {} {} to node {}", statement, queryId, 
newDataSet.getEndPoint());
-        TSStatus status = new TSStatus();
-        status.setRedirectNode(
-            new EndPoint(newDataSet.getEndPoint().getIp(), 
newDataSet.getEndPoint().getPort()));
-        status.setCode(TSStatusCode.NEED_REDIRECTION.getStatusCode());
-        resp.setStatus(status);
-        resp.setQueryId(queryId);
-        return resp;
-      }
-
-      if (plan instanceof ShowPlan || plan instanceof AuthorPlan) {
-        resp = getListDataSetHeaders(plan, newDataSet);
-      } else if (plan instanceof UDFPlan
-          || (plan instanceof QueryPlan && ((QueryPlan) 
plan).isGroupByLevel())) {
-        resp = getQueryColumnHeaders(plan, username, isJdbcQuery);
-      }
-
-      resp.setOperationType(plan.getOperatorType().toString());
-      if (newDataSet instanceof DirectNonAlignDataSet) {
-        resp.setNonAlignQueryDataSet(fillRpcNonAlignReturnData(fetchSize, 
newDataSet, username));
+        QueryPlan queryPlan = (QueryPlan) plan;
+        queryPlan.setEnableRedirect(enableRedirect);
+        resp = executeQueryPlan(queryPlan, context, isJdbcQuery, fetchSize, 
username);
       } else {
-        try {
-          TSQueryDataSet tsQueryDataSet = fillRpcReturnData(fetchSize, 
newDataSet, username);
-          resp.setQueryDataSet(tsQueryDataSet);
-        } catch (RedirectException e) {
-          LOGGER.debug("need to redirect {} {} to {}", statement, queryId, 
e.getEndPoint());
-          if (enableRedirect) {
-            // redirect query
-            TSStatus status = new TSStatus();
-            status.setRedirectNode(e.getEndPoint());
-            status.setCode(TSStatusCode.NEED_REDIRECTION.getStatusCode());
-            resp.setStatus(status);
-            resp.setQueryId(queryId);
-            return resp;
-          } else {
-            LOGGER.error(
-                "execute {} error, if session does not support redirect,"
-                    + " should not throw redirection exception.",
-                statement,
-                e);
-          }
-        }
+        resp = executeShowOrAuthorPlan(plan, context, fetchSize, username);
       }
-
       resp.setQueryId(queryId);
-
-      if (plan instanceof AlignByDevicePlan && ((QueryPlan) 
plan).isEnableTracing()) {
-        tracingManager.setSeriesPathNum(queryId, ((AlignByDeviceDataSet) 
newDataSet).getPathsNum());
-      }
-
-      queryTimeManager.unRegisterQuery(queryId, false);
-
-      if (plan instanceof QueryPlan && ((QueryPlan) plan).isEnableTracing()) {
-        tracingManager.registerActivity(
-            queryId, TracingConstant.ACTIVITY_REQUEST_COMPLETE, 
System.currentTimeMillis());
-
-        TSTracingInfo tsTracingInfo = fillRpcReturnTracingInfo(queryId);
-        resp.setTracingInfo(tsTracingInfo);
-      }
-
-      return resp;
+      resp.setOperationType(plan.getOperatorType().toString());
     } catch (Exception e) {
       sessionManager.releaseQueryResourceNoExceptions(queryId);
       throw e;
@@ -722,9 +641,101 @@ public class TSServiceImpl extends BasicServiceProvider 
implements TSIService.If
         SLOW_SQL_LOGGER.info("Cost: {} ms, sql is {}", costTime, statement);
       }
     }
+    return resp;
+  }
+
+  private TSExecuteStatementResp executeQueryPlan(
+      QueryPlan plan, QueryContext context, boolean isJdbcQuery, int 
fetchSize, String username)
+      throws TException, MetadataException, QueryProcessException, 
StorageEngineException,
+          SQLException, IOException, InterruptedException, 
QueryFilterOptimizationException,
+          AuthException {
+    // check permissions
+    if (!checkAuthorization(plan.getAuthPaths(), plan, username)) {
+      return RpcUtils.getTSExecuteStatementResp(
+          RpcUtils.getStatus(
+              TSStatusCode.NO_PERMISSION_ERROR,
+              "No permissions for this operation " + plan.getOperatorType()));
+    }
+
+    long queryId = context.getQueryId();
+    if (plan.isEnableTracing()) {
+      context.setEnableTracing(true);
+      tracingManager.setStartTime(queryId, context.getStartTime(), 
context.getStatement());
+      tracingManager.registerActivity(
+          queryId, TracingConstant.ACTIVITY_PARSE_SQL, 
System.currentTimeMillis());
+      tracingManager.setSeriesPathNum(queryId, plan.getPaths().size());
+    }
+
+    TSExecuteStatementResp resp = null;
+    // execute it before createDataSet since it may change the content of 
query plan
+    if (!(plan instanceof UDFPlan)) {
+      resp = plan.getTSExecuteStatementResp(isJdbcQuery);
+    }
+    // create and cache dataset
+    QueryDataSet newDataSet = createQueryDataSet(context, plan, fetchSize);
+
+    if (plan.isEnableTracing()) {
+      tracingManager.registerActivity(
+          queryId, TracingConstant.ACTIVITY_CREATE_DATASET, 
System.currentTimeMillis());
+    }
+
+    if (newDataSet.getEndPoint() != null && plan.isEnableRedirect()) {
+      QueryDataSet.EndPoint endPoint = newDataSet.getEndPoint();
+      return redirectQueryToAnotherNode(resp, context, endPoint.getIp(), 
endPoint.getPort());
+    }
+
+    if (plan instanceof UDFPlan || plan.isGroupByLevel()) {
+      resp = plan.getTSExecuteStatementResp(isJdbcQuery);
+    }
+
+    if (newDataSet instanceof DirectNonAlignDataSet) {
+      resp.setNonAlignQueryDataSet(fillRpcNonAlignReturnData(fetchSize, 
newDataSet, username));
+    } else {
+      try {
+        TSQueryDataSet tsQueryDataSet = fillRpcReturnData(fetchSize, 
newDataSet, username);
+        resp.setQueryDataSet(tsQueryDataSet);
+      } catch (RedirectException e) {
+        if (plan.isEnableRedirect()) {
+          EndPoint endPoint = e.getEndPoint();
+          return redirectQueryToAnotherNode(resp, context, endPoint.ip, 
endPoint.port);
+        } else {
+          LOGGER.error(
+              "execute {} error, if session does not support redirect, should 
not throw redirection exception.",
+              context.getStatement(),
+              e);
+        }
+      }
+    }
+    queryTimeManager.unRegisterQuery(context.getQueryId(), false);
+
+    if (plan.isEnableTracing()) {
+      tracingManager.registerActivity(
+          queryId, TracingConstant.ACTIVITY_REQUEST_COMPLETE, 
System.currentTimeMillis());
+      TSTracingInfo tsTracingInfo = fillRpcReturnTracingInfo(queryId);
+      resp.setTracingInfo(tsTracingInfo);
+    }
+    return resp;
+  }
+
+  private TSExecuteStatementResp executeShowOrAuthorPlan(
+      PhysicalPlan plan, QueryContext context, int fetchSize, String username)
+      throws QueryProcessException, TException, StorageEngineException, 
SQLException, IOException,
+          InterruptedException, QueryFilterOptimizationException, 
MetadataException, AuthException {
+    // create and cache dataset
+    QueryDataSet newDataSet = createQueryDataSet(context, plan, fetchSize);
+    TSExecuteStatementResp resp = getListDataSetResp(plan, newDataSet);
+
+    resp.setQueryDataSet(fillRpcReturnData(fetchSize, newDataSet, username));
+    queryTimeManager.unRegisterQuery(context.getQueryId(), false);
+    return resp;
   }
 
-  private TSExecuteStatementResp getListDataSetHeaders(PhysicalPlan plan, 
QueryDataSet dataSet) {
+  /**
+   * Construct TSExecuteStatementResp and the header of list result set.
+   *
+   * @param plan maybe ShowPlan or AuthorPlan
+   */
+  private TSExecuteStatementResp getListDataSetResp(PhysicalPlan plan, 
QueryDataSet dataSet) {
     TSExecuteStatementResp resp =
         StaticResps.getNoTimeExecuteResp(
             
dataSet.getPaths().stream().map(Path::getFullPath).collect(Collectors.toList()),
@@ -735,19 +746,21 @@ public class TSServiceImpl extends BasicServiceProvider 
implements TSIService.If
     return resp;
   }
 
-  /** get ResultSet schema */
-  private TSExecuteStatementResp getQueryColumnHeaders(
-      PhysicalPlan physicalPlan, String username, boolean isJdbcQuery)
-      throws AuthException, TException, MetadataException {
-    // check permissions
-    if (!checkAuthorization(physicalPlan.getAuthPaths(), physicalPlan, 
username)) {
-      return RpcUtils.getTSExecuteStatementResp(
-          RpcUtils.getStatus(
-              TSStatusCode.NO_PERMISSION_ERROR,
-              "No permissions for this operation " + 
physicalPlan.getOperatorType()));
-    }
-
-    return ((QueryPlan) physicalPlan).getTSExecuteStatementResp(isJdbcQuery);
+  /** Redirect query */
+  private TSExecuteStatementResp redirectQueryToAnotherNode(
+      TSExecuteStatementResp resp, QueryContext context, String ip, int port) {
+    LOGGER.debug(
+        "need to redirect {} {} to node {}:{}",
+        context.getStatement(),
+        context.getQueryId(),
+        ip,
+        port);
+    TSStatus status = new TSStatus();
+    status.setRedirectNode(new EndPoint(ip, port));
+    status.setCode(TSStatusCode.NEED_REDIRECTION.getStatusCode());
+    resp.setStatus(status);
+    resp.setQueryId(context.getQueryId());
+    return resp;
   }
 
   private TSExecuteStatementResp executeSelectIntoStatement(

Reply via email to