You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ji...@apache.org on 2022/01/04 02:48:30 UTC

[iotdb] 01/01: Merge branch 'master' into expr

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

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

commit 1a4365c591101eaf69dcb3196c8f4869231649af
Merge: abcf608 8759fa4
Author: jt <jt...@163.com>
AuthorDate: Tue Jan 4 10:47:46 2022 +0800

    Merge branch 'master' into expr
    
    # Conflicts:
    #	cluster/src/main/java/org/apache/iotdb/cluster/ClusterFileFlushPolicy.java
    #	cluster/src/main/java/org/apache/iotdb/cluster/server/handlers/caller/ElectionHandler.java
    #	cluster/src/main/java/org/apache/iotdb/cluster/server/member/RaftMember.java
    #	cluster/src/test/java/org/apache/iotdb/cluster/server/member/MetaGroupMemberTest.java

 .github/workflows/grafana-plugin.yml               |    47 +
 Jenkinsfile                                        |     2 +-
 LICENSE-binary                                     |     4 +-
 RELEASE_NOTES.md                                   |     2 +-
 .../main/java/org/apache/iotdb/tool/ImportCsv.java |    18 +-
 cluster/src/assembly/cluster.xml                   |     4 +
 .../cluster/log/applier/AsyncDataLogApplier.java   |     2 +-
 .../iotdb/cluster/log/applier/BaseApplier.java     |     2 +-
 .../iotdb/cluster/log/applier/DataLogApplier.java  |     6 +-
 .../log/manage/PartitionedSnapshotLogManager.java  |    15 +
 .../log/sequencing/SynchronousSequencer.java       |     8 +
 .../apache/iotdb/cluster/metadata/CMManager.java   |    76 +-
 .../partition/slot/SlotTimePartitionFilter.java    |     2 +-
 .../iotdb/cluster/query/ClusterPlanExecutor.java   |    30 +-
 .../iotdb/cluster/query/ClusterPlanRouter.java     |    14 +-
 .../iotdb/cluster/query/ClusterQueryRouter.java    |    19 -
 .../iotdb/cluster/query/LocalQueryExecutor.java    |    26 +-
 .../ClusterGroupByFillNoVFilterDataSet.java        |    54 -
 .../groupby/ClusterGroupByFillVFilterDataSet.java  |    67 -
 .../iotdb/cluster/server/ClusterRPCService.java    |     8 +-
 .../server/handlers/caller/ElectionHandler.java    |    17 +
 .../handlers/caller/ShowTimeSeriesHandler.java     |    20 +-
 .../cluster/server/member/DataGroupMember.java     |     2 +-
 .../iotdb/cluster/server/member/RaftMember.java    |    12 +-
 .../apache/iotdb/cluster/utils/PartitionUtils.java |     2 +-
 .../cluster/utils/nodetool/ClusterMonitor.java     |    83 +
 .../org/apache/iotdb/cluster/common/IoTDBTest.java |     2 +-
 .../org/apache/iotdb/cluster/common/TestUtils.java |     4 +-
 .../cluster/log/applier/DataLogApplierTest.java    |    26 +-
 .../cluster/log/logtypes/SerializeLogTest.java     |     3 +-
 .../cluster/log/snapshot/FileSnapshotTest.java     |    14 +-
 .../log/snapshot/PartitionedSnapshotTest.java      |     4 +-
 .../cluster/log/snapshot/PullSnapshotTaskTest.java |     4 +-
 .../mult/AssignPathManagedMergeReaderTest.java     |     3 +-
 .../reader/mult/RemoteMultSeriesReaderTest.java    |     3 +-
 .../iotdb/cluster/server/member/BaseMember.java    |     2 +
 .../cluster/server/member/DataGroupMemberTest.java |    19 +-
 .../cluster/server/member/MetaGroupMemberTest.java |     5 +-
 .../resources/node1conf/iotdb-engine.properties    |     1 +
 .../src/test/resources/node1conf}/iotdb-metric.yml |    22 +-
 .../resources/node2conf/iotdb-engine.properties    |     1 +
 .../src/test/resources/node2conf}/iotdb-metric.yml |    22 +-
 .../resources/node3conf/iotdb-engine.properties    |     1 +
 .../src/test/resources/node3conf}/iotdb-metric.yml |    22 +-
 code-coverage/pom.xml                              |     1 +
 compile-tools/thrift/pom.xml                       |    33 -
 distribution/pom.xml                               |    14 +-
 distribution/src/assembly/all.xml                  |     4 +-
 .../{grafana.xml => grafana-connector.xml}         |     8 +-
 .../assembly/{grafana.xml => grafana-plugin.xml}   |    26 +-
 docker/ReadMe.md                                   |     2 +-
 docs/Download/README.md                            |    45 +-
 docs/SystemDesign/StorageEngine/Recover.md         |     2 +-
 docs/SystemDesign/StorageEngine/StorageEngine.md   |     2 +-
 docs/SystemDesign/TsFile/Format.md                 |     1 -
 docs/UserGuide/API/Programming-Cpp-Native-API.md   |    62 +-
 docs/UserGuide/Appendix/Config-Manual.md           |    38 +-
 docs/UserGuide/Cluster/Cluster-Setup-Example.md    |   107 +-
 docs/UserGuide/Cluster/Cluster-Setup.md            |     4 +-
 docs/UserGuide/Data-Concept/Encoding.md            |     4 +-
 .../UserGuide/Data-Modeling/VirtualStorageGroup.md |    55 +
 .../{Grafana.md => Grafana Connector.md}           |    22 +-
 .../DML-Data-Manipulation-Language.md              |   492 +-
 docs/UserGuide/Library-UDF/Data-Quality.md         |   520 +
 docs/UserGuide/Library-UDF/Data-Repair.md          |   349 +
 docs/UserGuide/Library-UDF/Get-Started.md          |    61 +
 docs/UserGuide/System-Tools/Metric-Tool.md         |   288 +-
 docs/zh/Download/README.md                         |    45 +-
 docs/zh/SystemDesign/StorageEngine/Recover.md      |     4 +-
 .../zh/SystemDesign/StorageEngine/StorageEngine.md |     2 +-
 docs/zh/SystemDesign/TsFile/Format.md              |     1 -
 .../zh/UserGuide/API/Programming-Cpp-Native-API.md |    80 +-
 docs/zh/UserGuide/Appendix/Config-Manual.md        |    37 +
 docs/zh/UserGuide/Cluster/Cluster-Setup-Example.md |   108 +-
 docs/zh/UserGuide/Cluster/Cluster-Setup.md         |     4 +-
 docs/zh/UserGuide/Data-Concept/Encoding.md         |     3 +-
 .../UserGuide/Data-Modeling/VirtualStorageGroup.md |    53 +
 .../{Grafana.md => Grafana Connector.md}           |    20 +-
 .../Ecosystem Integration/Grafana Plugin.md        |   250 +
 .../DML-Data-Manipulation-Language.md              |   494 +-
 docs/zh/UserGuide/Library-UDF/Data-Quality.md      |   509 +
 docs/zh/UserGuide/Library-UDF/Data-Repair.md       |   341 +
 docs/zh/UserGuide/Library-UDF/Get-Started.md       |    58 +
 docs/zh/UserGuide/System-Tools/Metric-Tool.md      |   280 +-
 .../img/add_data_source.png                        |   Bin
 {grafana => grafana-connector}/img/add_graph.png   |   Bin
 .../img/edit_data_source.png                       |   Bin
 {grafana => grafana-connector}/pom.xml             |     4 +-
 {grafana => grafana-connector}/readme.md           |    22 +-
 {grafana => grafana-connector}/readme_zh.md        |    20 +-
 .../web/grafana/TsfileWebDemoApplication.java      |     0
 .../apache/iotdb/web/grafana/bean/TimeValues.java  |     0
 .../iotdb/web/grafana/conf/MyConfiguration.java    |     0
 .../controller/DatabaseConnectController.java      |     0
 .../org/apache/iotdb/web/grafana/dao/BasicDao.java |     0
 .../iotdb/web/grafana/dao/impl/BasicDaoImpl.java   |     0
 .../grafana/service/DatabaseConnectService.java    |     0
 .../service/impl/DatabaseConnectServiceImpl.java   |     0
 .../src/main/resources/application.properties      |     0
 .../web/grafana/dao/impl/BasicDaoImplTest.java     |     0
 grafana-plugin/.gitignore                          |    32 +
 .../.prettierrc.js                                 |    23 +-
 grafana-plugin/CHANGELOG.md                        |    24 +
 LICENSE-binary => grafana-plugin/LICENSE           |   105 +-
 grafana-plugin/README.md                           |    63 +
 .../jest.config.js                                 |    25 +-
 grafana-plugin/package.json                        |    31 +
 grafana-plugin/pom.xml                             |    96 +
 grafana-plugin/src/ConfigEditor.tsx                |   101 +
 grafana-plugin/src/QueryEditor.tsx                 |   114 +
 .../src/componments/ControlValue.tsx               |    40 +-
 .../src/componments/Form.tsx                       |    39 +-
 grafana-plugin/src/componments/FromValue.tsx       |   110 +
 grafana-plugin/src/componments/SelectValue.tsx     |   109 +
 .../src/componments/WhereValue.tsx                 |    40 +-
 grafana-plugin/src/datasource.ts                   |   164 +
 .../src/functions.ts                               |    22 +-
 grafana-plugin/src/img/logo.svg                    |   271 +
 .../src/module.ts                                  |    28 +-
 grafana-plugin/src/plugin.json                     |    47 +
 .../src/types.ts                                   |    41 +-
 grafana-plugin/tsconfig.json                       |     9 +
 grafana-plugin/yarn.lock                           | 14427 +++++++++++++++++++
 .../org/apache/iotdb/influxdb/IoTDBInfluxDB.java   |    18 +-
 .../iotdb/integration/env/ClusterEnvBase.java      |     6 +-
 .../iotdb/integration/env/ClusterEnvConfig.java    |    72 +-
 .../apache/iotdb/integration/env/ClusterNode.java  |     6 +-
 .../org/apache/iotdb/itbase/env/BaseConfig.java    |    24 +-
 .../iotdb/db/integration/IoTDBAlignByDeviceIT.java |     5 +-
 .../iotdb/db/integration/IoTDBDeletionIT.java      |     6 +-
 .../iotdb/db/integration/IoTDBGroupByFillIT.java   |   275 +-
 .../db/integration/IoTDBGroupByFillMixPathsIT.java |   759 +-
 .../integration/IoTDBGroupByFillWithRangeIT.java   |    14 +-
 .../db/integration/IoTDBGroupByMonthFillIT.java    |    55 +-
 .../apache/iotdb/db/integration/IoTDBMergeIT.java  |    24 +-
 .../iotdb/db/integration/IoTDBMultiDeviceIT.java   |    75 +-
 .../db/integration/IoTDBNewTsFileCompactionIT.java |     6 +-
 .../db/integration/IoTDBPartialInsertionIT.java    |    69 +
 .../db/integration/IoTDBQueryWithIDTableIT.java    |   289 +
 .../iotdb/db/integration/IoTDBRestartIT.java       |    55 -
 .../iotdb/db/integration/IoTDBSimpleQueryIT.java   |    38 +-
 .../aggregation/IoTDBAggregationByLevelIT.java     |    12 +-
 .../aligned/IoTDBAggregationGroupByLevelIT.java    |    12 +-
 .../IoTDBAggregationWithoutValueFilterIT.java      |    18 +-
 .../integration/aligned/IoTDBAlignByDevice2IT.java |    68 +
 .../integration/aligned/IoTDBAlignByDeviceIT.java  |  1349 ++
 .../db/integration/aligned/IoTDBDeletionIT.java    |    88 +-
 .../aligned/IoTDBGroupByFillQueryBigDataIT.java    |   192 +
 .../aligned/IoTDBGroupByFillQueryIT.java           |   989 ++
 .../db/integration/env/StandaloneEnvConfig.java    |    17 +
 .../apache/iotdb/session/IoTDBSessionSimpleIT.java |     2 +-
 library-udf/pom.xml                                |   159 +
 .../dropwizard/DropwizardMetricManagerTest.java    |     1 +
 .../main/assembly/resources/conf/iotdb-metric.yml  |     1 +
 .../org/apache/iotdb/metrics/MetricService.java    |     6 +-
 .../apache/iotdb/metrics/config/MetricConfig.java  |     3 +-
 .../metrics/config/MetricConfigDescriptor.java     |    12 +-
 .../iotdb/metrics/utils/PredefinedMetric.java      |     3 +-
 .../micrometer/MicrometerMetricManager.java        |    11 +
 .../reporter/MicrometerPrometheusReporter.java     |    27 +-
 .../micrometer/MicrometerMetricManagerTest.java    |     1 +
 openapi/src/main/openapi3/iotdb-rest.yaml          |    61 +
 pom.xml                                            |     9 +-
 .../resources/conf/iotdb-engine.properties         |    31 +-
 .../db/concurrent/IoTDBThreadPoolFactory.java      |    10 +-
 .../org/apache/iotdb/db/concurrent/ThreadName.java |     1 +
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java |    76 +-
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  |    35 +
 .../org/apache/iotdb/db/engine/StorageEngine.java  |   218 +-
 .../apache/iotdb/db/engine/cache/ChunkCache.java   |    16 +
 .../db/engine/cache/TimeSeriesMetadataCache.java   |    46 +-
 .../engine/compaction/CompactionTaskManager.java   |    51 +
 .../inplace/manage/CrossSpaceMergeResource.java    |    25 +-
 .../cross/inplace/task/CrossSpaceMergeTask.java    |    19 +-
 .../cross/inplace/task/MergeMultiChunkTask.java    |    46 +-
 .../InnerSpaceCompactionExceptionHandler.java      |     6 +-
 .../SizeTieredCompactionRecoverTask.java           |     2 +-
 .../inner/sizetiered/SizeTieredCompactionTask.java |    80 +-
 .../compaction/task/AbstractCompactionTask.java    |    18 +
 .../compaction/task/CompactionRecoverTask.java     |     2 +-
 .../apache/iotdb/db/engine/flush/FlushManager.java |    28 +
 .../iotdb/db/engine/flush/MemTableFlushTask.java   |    21 +-
 .../iotdb/db/engine/flush/TsFileFlushPolicy.java   |    11 +-
 .../iotdb/db/engine/memtable/AbstractMemTable.java |   120 +-
 .../apache/iotdb/db/engine/memtable/IMemTable.java |    17 +-
 .../db/engine/memtable/PrimitiveMemTable.java      |     6 +-
 .../engine/storagegroup/ILastFlushTimeManager.java |    89 +
 .../engine/storagegroup/LastFlushTimeManager.java  |   268 +
 .../db/engine/storagegroup/StorageGroupInfo.java   |    18 +-
 .../db/engine/storagegroup/TsFileProcessor.java    |    82 +-
 .../engine/storagegroup/TsFileProcessorInfo.java   |    23 +
 .../db/engine/storagegroup/TsFileResource.java     |     4 +-
 ...ssor.java => VirtualStorageGroupProcessor.java} |   262 +-
 ...eGroupManager.java => StorageGroupManager.java} |   167 +-
 .../service/TriggerRegistrationService.java        |    29 +-
 .../trigger/sink/local/LocalIoTDBHandler.java      |     2 +-
 .../org/apache/iotdb/db/metadata/MManager.java     |   104 +-
 .../idtable/AppendOnlyDiskSchemaManager.java       |   163 +
 .../apache/iotdb/db/metadata/idtable/IDTable.java  |   181 +
 .../db/metadata/idtable/IDTableHashmapImpl.java    |   463 +
 .../iotdb/db/metadata/idtable/IDTableManager.java  |   105 +
 .../idtable/IDiskSchemaManager.java}               |    43 +-
 .../db/metadata/idtable/entry/DeviceEntry.java     |    81 +
 .../db/metadata/idtable/entry/DeviceIDFactory.java |    87 +
 .../db/metadata/idtable/entry/DiskSchemaEntry.java |   107 +
 .../iotdb/db/metadata/idtable/entry/IDeviceID.java |    15 +-
 .../idtable/entry/InsertMeasurementMNode.java      |   267 +
 .../idtable/entry/PlainDeviceID.java}              |    41 +-
 .../db/metadata/idtable/entry/SHA256DeviceID.java  |   148 +
 .../db/metadata/idtable/entry/SchemaEntry.java     |   193 +
 .../idtable/entry/TimeseriesID.java}               |    36 +-
 .../org/apache/iotdb/db/metadata/mtree/MTree.java  |     7 +-
 .../apache/iotdb/db/metadata/path/AlignedPath.java |    10 +-
 .../iotdb/db/metadata/path/MeasurementPath.java    |    12 +-
 .../apache/iotdb/db/metadata/path/PartialPath.java |   113 +-
 .../apache/iotdb/db/metadata/tag/TagManager.java   |     4 +-
 .../org/apache/iotdb/db/monitor/StatMonitor.java   |     8 +-
 .../iotdb/db/protocol/influxdb/dto/IoTDBPoint.java |    26 +-
 .../protocol/influxdb/input/InfluxLineParser.java  |     6 +
 .../rest/handler/AuthorizationHandler.java         |     5 +-
 .../protocol/rest/handler/QueryDataSetHandler.java |    36 +-
 .../rest/handler/RequestValidationHandler.java     |     9 +
 .../protocol/rest/impl/GrafanaApiServiceImpl.java  |   169 +
 .../db/protocol/rest/impl/PingApiServiceImpl.java  |     1 +
 .../db/protocol/rest/impl/RestApiServiceImpl.java  |    50 +-
 .../apache/iotdb/db/qp/executor/IPlanExecutor.java |     2 +-
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  |    33 +-
 .../qp/logical/crud/GroupByFillQueryOperator.java  |     2 +-
 .../iotdb/db/qp/logical/crud/QueryOperator.java    |   151 +-
 .../apache/iotdb/db/qp/physical/PhysicalPlan.java  |    17 +-
 .../iotdb/db/qp/physical/crud/AggregationPlan.java |    50 +
 .../db/qp/physical/crud/AlignByDevicePlan.java     |   140 +-
 .../db/qp/physical/crud/DeletePartitionPlan.java   |     2 +-
 .../iotdb/db/qp/physical/crud/DeletePlan.java      |     8 +-
 .../db/qp/physical/crud/GroupByTimeFillPlan.java   |    59 +
 .../iotdb/db/qp/physical/crud/GroupByTimePlan.java |    26 +-
 .../db/qp/physical/crud/InsertMultiTabletPlan.java |    14 +-
 .../iotdb/db/qp/physical/crud/InsertPlan.java      |    43 +-
 .../iotdb/db/qp/physical/crud/InsertRowPlan.java   |    36 +-
 .../physical/crud/InsertRowsOfOneDevicePlan.java   |    18 +-
 .../iotdb/db/qp/physical/crud/InsertRowsPlan.java  |     4 +-
 .../db/qp/physical/crud/InsertTabletPlan.java      |    20 +-
 .../iotdb/db/qp/physical/crud/LastQueryPlan.java   |    18 +
 .../iotdb/db/qp/physical/crud/MeasurementInfo.java |    37 +-
 .../iotdb/db/qp/physical/crud/QueryIndexPlan.java  |    12 +
 .../iotdb/db/qp/physical/crud/QueryPlan.java       |    77 +-
 .../db/qp/physical/crud/RawDataQueryPlan.java      |     8 +-
 .../iotdb/db/qp/physical/crud/SelectIntoPlan.java  |     4 +-
 .../apache/iotdb/db/qp/physical/crud/UDAFPlan.java |    13 +
 .../apache/iotdb/db/qp/physical/crud/UDTFPlan.java |    13 +
 .../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   |     6 +-
 .../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/DummyPlan.java |     2 +-
 .../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 +-
 .../apache/iotdb/db/qp/utils/DatetimeUtils.java    |    19 +
 .../apache/iotdb/db/qp/utils/WildcardsRemover.java |    13 +-
 .../db/query/control/tracing/TracingManager.java   |     4 +-
 .../db/query/dataset/AlignByDeviceDataSet.java     |   121 +-
 .../db/query/dataset/NonAlignEngineDataSet.java    |     4 +-
 .../dataset/RawQueryDataSetWithoutValueFilter.java |     9 +-
 .../db/query/dataset/ShowTimeSeriesResult.java     |    13 +
 .../dataset/groupby/GroupByEngineDataSet.java      |     2 +-
 .../query/dataset/groupby/GroupByFillDataSet.java  |   328 +
 .../dataset/groupby/GroupByFillEngineDataSet.java  |   424 -
 .../groupby/GroupByFillWithValueFilterDataSet.java |   451 -
 .../GroupByFillWithoutValueFilterDataSet.java      |   267 -
 .../groupby/GroupByWithValueFilterDataSet.java     |     4 +-
 .../groupby/GroupByWithoutValueFilterDataSet.java  |     4 +-
 .../db/query/executor/AggregationExecutor.java     |     6 +-
 .../iotdb/db/query/executor/FillQueryExecutor.java |     4 +-
 .../iotdb/db/query/executor/LastQueryExecutor.java |    64 +-
 .../iotdb/db/query/executor/QueryRouter.java       |    44 +-
 .../db/query/executor/RawDataQueryExecutor.java    |    14 +-
 .../apache/iotdb/db/query/executor/fill/IFill.java |    22 +-
 .../db/query/executor/fill/LastPointReader.java    |     3 +-
 .../query/expression/unary/FunctionExpression.java |     3 +-
 ...yTaskPoolManager.java => QueryTaskManager.java} |    18 +-
 .../db/query/pool/RawQueryReadTaskPoolManager.java |   120 +
 .../iotdb/db/query/reader/series/SeriesReader.java |     5 +-
 .../query/timegenerator/ServerTimeGenerator.java   |     4 +-
 .../org/apache/iotdb/db/rescon/SystemInfo.java     |    10 +-
 .../java/org/apache/iotdb/db/service/IoTDB.java    |     2 +-
 .../org/apache/iotdb/db/service/RPCService.java    |     8 +-
 .../db/service/basic/BasicServiceProvider.java     |     4 +
 .../apache/iotdb/db/service/metrics/Metric.java    |    25 +-
 .../iotdb/db/service/metrics/MetricsService.java   |   112 +-
 .../org/apache/iotdb/db/service/metrics/Tag.java   |    15 +-
 .../db/service/thrift/ProcessorWithMetrics.java    |    70 +
 .../service/thrift/impl/InfluxDBServiceImpl.java   |     3 +-
 .../db/service/thrift/impl/TSServiceImpl.java      |   629 +-
 .../apache/iotdb/db/utils/EnvironmentUtils.java    |    16 +
 .../java/org/apache/iotdb/db/utils/FileUtils.java  |    24 +
 .../org/apache/iotdb/db/utils/SchemaUtils.java     |    11 +-
 .../iotdb/db/writelog/recover/LogReplayer.java     |    44 +-
 .../writelog/recover/TsFileRecoverPerformer.java   |     8 +-
 .../recover/SizeTieredCompactionRecoverTest.java   |     4 +-
 .../db/engine/memtable/MemTableFlushTaskTest.java  |     3 +-
 .../db/engine/memtable/MemTableTestUtils.java      |     6 +-
 .../db/engine/memtable/MemtableBenchmark.java      |     7 +-
 .../db/engine/memtable/PrimitiveMemTableTest.java  |    31 +-
 .../engine/modification/DeletionFileNodeTest.java  |    10 +-
 .../storagegroup/FileNodeManagerBenchmark.java     |     3 +-
 .../storagegroup/StorageGroupProcessorTest.java    |     4 +-
 .../iotdb/db/engine/storagegroup/TTLTest.java      |    56 +-
 .../apache/iotdb/db/metadata/PartialPathTest.java  |    55 +-
 .../db/metadata/idtable/IDTableLogFileTest.java    |   160 +
 .../idtable/IDTableResourceControlTest.java        |   167 +
 .../db/metadata/idtable/IDTableRestartTest.java    |   205 +
 .../iotdb/db/metadata/idtable/IDTableTest.java     |   666 +
 .../db/metadata/idtable/InsertWithIDTableTest.java |   758 +
 .../db/metadata/idtable/LastQueryWithIDTable.java  |   180 +
 .../QueryAlignedTimeseriesWithIDTableTest.java     |   373 +
 .../db/metadata/idtable/QueryWithIDTableTest.java  |   370 +
 .../db/metadata/idtable/entry/DeviceIDTest.java}   |    44 +-
 .../db/metadata/idtable/entry/SchemaEntryTest.java |    74 +
 .../metadata/idtable/trigger_example/Counter.java  |    96 +
 .../db/protocol/influxdb/dto/IoTDBPointTest.java   |    39 +-
 .../db/protocol/rest/GrafanaApiServiceIT.java      |   293 +
 .../db/query/dataset/ShowTimeSeriesResultTest.java |     2 +
 .../db/sync/receiver/load/FileLoaderTest.java      |    12 +-
 .../recover/SyncReceiverLogAnalyzerTest.java       |     4 +-
 .../iotdb/db/writelog/recover/LogReplayerTest.java |     3 +-
 .../recover/RecoverResourceFromReaderTest.java     |     2 +-
 .../db/writelog/recover/SeqTsFileRecoverTest.java  |     6 +-
 .../writelog/recover/UnseqTsFileRecoverTest.java   |     2 +-
 .../java/org/apache/iotdb/session/Session.java     |    27 +-
 .../session/IoTDBSessionVectorABDeviceIT.java      |    27 +-
 .../iotdb/session/IoTDBSessionVectorInsertIT.java  |     4 -
 site/src/main/.vuepress/config.js                  |    21 +-
 .../public/img/contributor-avatar/ericpai.jpg      |   Bin 0 -> 265364 bytes
 .../public/img/contributor-avatar/qhl.jpg          |   Bin 0 -> 365541 bytes
 .../theme/global-components/Contributor.vue        |    15 +-
 .../iotdb/tsfile/read/TsFileSequenceReader.java    |   172 +-
 .../tsfile/read/filter/factory/FilterFactory.java  |     4 +
 .../iotdb/tsfile/read/filter/operator/Regexp.java  |    21 +-
 .../org/apache/iotdb/tsfile/utils/TsFileUtils.java |    38 +
 .../tsfile/encoding/decoder/IntRleDecoderTest.java |     7 +-
 .../regular/RegularDataEncoderLongTest.java        |     4 +-
 .../iotdb/tsfile/read/GetAllDevicesTest.java       |     2 +-
 .../tsfile/read/filter/FilterSerializeTest.java    |     1 +
 .../apache/iotdb/tsfile/utils/FileGenerator.java   |    32 +-
 .../apache/iotdb/tsfile/utils/TsFileUtilsTest.java |    72 +
 .../tsfile/write/MetadataIndexConstructorTest.java |    61 +-
 385 files changed, 33273 insertions(+), 5119 deletions(-)

diff --cc cluster/src/main/java/org/apache/iotdb/cluster/log/sequencing/SynchronousSequencer.java
index f7e6704,0000000..1c2390a
mode 100644,000000..100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/log/sequencing/SynchronousSequencer.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/log/sequencing/SynchronousSequencer.java
@@@ -1,109 -1,0 +1,117 @@@
 +/*
 + * Licensed to the Apache Software Foundation (ASF) under one
 + * or more contributor license agreements.  See the NOTICE file
 + * distributed with this work for additional information
 + * regarding copyright ownership.  The ASF licenses this file
 + * to you under the Apache License, Version 2.0 (the
 + * "License"); you may not use this file except in compliance
 + * with the License.  You may obtain a copy of the License at
 + *
 + *     http://www.apache.org/licenses/LICENSE-2.0
 + *
 + * Unless required by applicable law or agreed to in writing,
 + * software distributed under the License is distributed on an
 + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 + * KIND, either express or implied.  See the License for the
 + * specific language governing permissions and limitations
 + * under the License.
 + */
 +
 +package org.apache.iotdb.cluster.log.sequencing;
 +
 +import org.apache.iotdb.cluster.log.Log;
 +import org.apache.iotdb.cluster.log.LogDispatcher.SendLogRequest;
 +import org.apache.iotdb.cluster.log.VotingLog;
++import org.apache.iotdb.cluster.log.logtypes.PhysicalPlanLog;
 +import org.apache.iotdb.cluster.log.manage.RaftLogManager;
 +import org.apache.iotdb.cluster.rpc.thrift.AppendEntryRequest;
 +import org.apache.iotdb.cluster.server.member.RaftMember;
 +import org.apache.iotdb.cluster.server.monitor.Timer;
 +import org.apache.iotdb.cluster.server.monitor.Timer.Statistic;
 +
 +import java.util.concurrent.atomic.AtomicBoolean;
 +import java.util.concurrent.atomic.AtomicLong;
++import org.apache.iotdb.db.qp.physical.PhysicalPlan;
++import org.apache.iotdb.db.qp.physical.sys.LogPlan;
 +
 +/**
 + * SynchronizedSequencer performs sequencing by taking the monitor of a LogManager within the caller
 + * thread.
 + */
 +public class SynchronousSequencer implements LogSequencer {
 +
 +  private RaftMember member;
 +  private RaftLogManager logManager;
 +
 +  public SynchronousSequencer(RaftMember member, RaftLogManager logManager) {
 +    this.member = member;
 +    this.logManager = logManager;
 +  }
 +
 +  @Override
 +  public SendLogRequest sequence(Log log) {
 +    SendLogRequest sendLogRequest;
 +
 +    long startTime =
 +        Statistic.RAFT_SENDER_COMPETE_LOG_MANAGER_BEFORE_APPEND_V2.getOperationStartTime();
 +    synchronized (logManager) {
 +      Statistic.RAFT_SENDER_COMPETE_LOG_MANAGER_BEFORE_APPEND_V2.calOperationCostTimeFromStart(
 +          startTime);
 +
 +      log.setCurrLogTerm(member.getTerm().get());
 +      log.setCurrLogIndex(logManager.getLastLogIndex() + 1);
 +
++      if (log instanceof PhysicalPlanLog) {
++        PhysicalPlanLog physicalPlanLog = (PhysicalPlanLog) log;
++        physicalPlanLog.getPlan().setIndex(log.getCurrLogIndex());
++      }
++
 +      startTime = Timer.Statistic.RAFT_SENDER_APPEND_LOG_V2.getOperationStartTime();
 +
 +      // logDispatcher will serialize log, and set log size, and we will use the size after it
 +      logManager.append(log);
 +      Timer.Statistic.RAFT_SENDER_APPEND_LOG_V2.calOperationCostTimeFromStart(startTime);
 +
 +      startTime = Statistic.RAFT_SENDER_BUILD_LOG_REQUEST.getOperationStartTime();
 +      sendLogRequest = buildSendLogRequest(log);
 +      Statistic.RAFT_SENDER_BUILD_LOG_REQUEST.calOperationCostTimeFromStart(startTime);
 +
 +      startTime = Statistic.RAFT_SENDER_OFFER_LOG.getOperationStartTime();
 +      log.setCreateTime(System.nanoTime());
 +      member.getVotingLogList().insert(sendLogRequest.getVotingLog());
 +      member.getLogDispatcher().offer(sendLogRequest);
 +      Statistic.RAFT_SENDER_OFFER_LOG.calOperationCostTimeFromStart(startTime);
 +    }
 +    return sendLogRequest;
 +  }
 +
 +  @Override
 +  public void setLogManager(RaftLogManager logManager) {
 +    this.logManager = logManager;
 +  }
 +
 +  private SendLogRequest buildSendLogRequest(Log log) {
 +    VotingLog votingLog = member.buildVotingLog(log);
 +    AtomicBoolean leaderShipStale = new AtomicBoolean(false);
 +    AtomicLong newLeaderTerm = new AtomicLong(member.getTerm().get());
 +
 +    long startTime = Statistic.RAFT_SENDER_BUILD_APPEND_REQUEST.getOperationStartTime();
 +    AppendEntryRequest appendEntryRequest = member.buildAppendEntryRequest(log, false);
 +    Statistic.RAFT_SENDER_BUILD_APPEND_REQUEST.calOperationCostTimeFromStart(startTime);
 +
 +    return new SendLogRequest(
 +        votingLog,
 +        leaderShipStale,
 +        newLeaderTerm,
 +        appendEntryRequest,
 +        member.getAllNodes().size() / 2);
 +  }
 +
 +  public static class Factory implements LogSequencerFactory {
 +
 +    @Override
 +    public LogSequencer create(RaftMember member, RaftLogManager logManager) {
 +      return new SynchronousSequencer(member, logManager);
 +    }
 +  }
 +}
diff --cc cluster/src/main/java/org/apache/iotdb/cluster/server/handlers/caller/ElectionHandler.java
index cbb5a08,229673b..fee8449
--- a/cluster/src/main/java/org/apache/iotdb/cluster/server/handlers/caller/ElectionHandler.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/handlers/caller/ElectionHandler.java
@@@ -96,8 -101,9 +101,9 @@@ public class ElectionHandler implement
            // the election is valid
            electionValid.set(true);
            terminated.set(true);
 -          raftMember.getTerm().notifyAll();
            raftMember.onElectionWins();
 +          raftMember.getTerm().notifyAll();
+           result = "win";
            logger.info("{}: Election {} is won", memberName, currTerm);
          }
          // still need more votes
diff --cc cluster/src/main/java/org/apache/iotdb/cluster/server/member/RaftMember.java
index f961cd8,1e71fed..d71f5e3
--- a/cluster/src/main/java/org/apache/iotdb/cluster/server/member/RaftMember.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/server/member/RaftMember.java
@@@ -1128,8 -992,10 +1129,11 @@@ public abstract class RaftMember implem
      }
  
      // assign term and index to the new log and append it
 +    VotingLog votingLog;
      synchronized (logManager) {
+       if (!(plan instanceof LogPlan)) {
+         plan.setIndex(logManager.getLastLogIndex() + 1);
+       }
        log.setCurrLogTerm(getTerm().get());
        log.setCurrLogIndex(logManager.getLastLogIndex() + 1);
        logManager.append(log);
diff --cc library-udf/pom.xml
index 0000000,3ca979a..02f2cd2
mode 000000,100644..100644
--- a/library-udf/pom.xml
+++ b/library-udf/pom.xml
@@@ -1,0 -1,163 +1,159 @@@
+ <?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ 
+     Licensed to the Apache Software Foundation (ASF) under one
+     or more contributor license agreements.  See the NOTICE file
+     distributed with this work for additional information
+     regarding copyright ownership.  The ASF licenses this file
+     to you under the Apache License, Version 2.0 (the
+     "License"); you may not use this file except in compliance
+     with the License.  You may obtain a copy of the License at
+ 
+         http://www.apache.org/licenses/LICENSE-2.0
+ 
+     Unless required by applicable law or agreed to in writing,
+     software distributed under the License is distributed on an
+     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+     KIND, either express or implied.  See the License for the
+     specific language governing permissions and limitations
+     under the License.
+ 
+ -->
 -<project xmlns="http://maven.apache.org/POM/4.0.0"
 -         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 -         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
++<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+     <parent>
+         <artifactId>iotdb-parent</artifactId>
+         <groupId>org.apache.iotdb</groupId>
+         <version>0.13.0-SNAPSHOT</version>
+     </parent>
+     <modelVersion>4.0.0</modelVersion>
 -
+     <artifactId>library-udf</artifactId>
+     <version>2.0.0</version>
 -
+     <properties>
+         <maven.compiler.source>8</maven.compiler.source>
+         <maven.compiler.target>8</maven.compiler.target>
+     </properties>
+     <dependencies>
+         <dependency>
+             <groupId>org.eclipse.collections</groupId>
+             <artifactId>eclipse-collections</artifactId>
+             <version>10.4.0</version>
+         </dependency>
+         <dependency>
+             <groupId>org.apache.iotdb</groupId>
+             <artifactId>iotdb-server</artifactId>
+             <version>${project.parent.version}</version>
+             <scope>provided</scope>
+         </dependency>
+         <dependency>
+             <groupId>org.apache.iotdb</groupId>
+             <artifactId>tsfile</artifactId>
+             <version>${project.parent.version}</version>
+             <scope>provided</scope>
+         </dependency>
+         <dependency>
+             <groupId>org.apache.iotdb</groupId>
+             <artifactId>iotdb-session</artifactId>
+             <version>${project.parent.version}</version>
+         </dependency>
+         <dependency>
+             <groupId>org.apache.commons</groupId>
+             <artifactId>commons-math3</artifactId>
+             <version>3.5</version>
+         </dependency>
+         <dependency>
+             <groupId>org.apache.commons</groupId>
+             <artifactId>commons-lang3</artifactId>
+             <version>3.9</version>
+         </dependency>
+         <!-- TimeStampRepair -->
+         <dependency>
+             <groupId>gov.nist.math</groupId>
+             <artifactId>jama</artifactId>
+             <version>1.0.3</version>
+         </dependency>
+         <!-- LOF -->
+         <dependency>
+             <groupId>com.github.chen0040</groupId>
+             <artifactId>java-local-outlier-factor</artifactId>
+             <version>1.0.4</version>
+         </dependency>
+         <!-- FFT, IFFT, LowPass, HighPass -->
+         <dependency>
+             <groupId>com.github.wendykierp</groupId>
+             <artifactId>JTransforms</artifactId>
+             <version>3.1</version>
+         </dependency>
+         <dependency>
+             <groupId>org.jetbrains</groupId>
+             <artifactId>annotations</artifactId>
+             <version>RELEASE</version>
+             <scope>compile</scope>
+         </dependency>
+         <dependency>
+             <groupId>com.google.code.gson</groupId>
+             <artifactId>gson</artifactId>
+             <version>2.8.5</version>
+         </dependency>
+         <dependency>
+             <groupId>org.junit.jupiter</groupId>
+             <artifactId>junit-jupiter-api</artifactId>
+             <version>5.8.2</version>
+             <scope>test</scope>
+         </dependency>
+     </dependencies>
+     <build>
+         <plugins>
+             <plugin>
+                 <groupId>org.apache.maven.plugins</groupId>
+                 <artifactId>maven-assembly-plugin</artifactId>
+                 <version>3.1.1</version>
+                 <configuration>
+                     <descriptorRefs>
+                         <descriptorRef>jar-with-dependencies</descriptorRef>
+                     </descriptorRefs>
+                     <finalName>${project.build.finalName}-jar-with-dependencies</finalName>
+                     <appendAssemblyId>false</appendAssemblyId>
+                 </configuration>
+                 <executions>
+                     <execution>
+                         <id>make-assembly</id>
+                         <phase>package</phase>
+                         <goals>
+                             <goal>single</goal>
+                         </goals>
+                     </execution>
+                 </executions>
+             </plugin>
+             <plugin>
+                 <groupId>org.apache.maven.plugins</groupId>
+                 <artifactId>maven-compiler-plugin</artifactId>
+                 <version>3.3</version>
+             </plugin>
+             <plugin>
+                 <groupId>org.apache.maven.plugins</groupId>
+                 <artifactId>maven-resources-plugin</artifactId>
+                 <version>2.4.3</version>
+             </plugin>
+             <plugin>
+                 <groupId>org.apache.maven.plugins</groupId>
+                 <artifactId>maven-surefire-plugin</artifactId>
+                 <version>3.0.0-M5</version>
+                 <dependencies>
+                     <dependency>
+                         <groupId>org.junit.jupiter</groupId>
+                         <artifactId>junit-jupiter-engine</artifactId>
+                         <version>5.8.2</version>
+                     </dependency>
+                 </dependencies>
+             </plugin>
+             <plugin>
+                 <groupId>org.codehaus.mojo</groupId>
+                 <artifactId>exec-maven-plugin</artifactId>
+                 <version>1.6.0</version>
+                 <configuration>
+                     <classpathScope>test</classpathScope>
+                 </configuration>
+             </plugin>
+         </plugins>
+     </build>
 -</project>
++</project>
diff --cc server/src/main/java/org/apache/iotdb/db/qp/physical/PhysicalPlan.java
index 356c572,52244ba..0b4770b
--- 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
@@@ -101,11 -100,8 +101,11 @@@ public abstract class PhysicalPlan 
    // login username, corresponding to cli/session login user info
    private String loginUserName;
  
--  // a bridge from a cluster raft log to a physical plan
--  protected long index;
++  // a bridge from a cluster raft log to a physical plan, -1 means unset
++  protected long index = -1;
 +  // if set, only the associated leader can execute the plan to guarantee serializability and other
 +  // leaders should return a LEADER_CHANGED response
 +  protected long targetedTerm = -1;
  
    private boolean debug;
  
diff --cc server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DummyPlan.java
index 67f7637,0000000..42e701f
mode 100644,000000..100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DummyPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/DummyPlan.java
@@@ -1,95 -1,0 +1,95 @@@
 +/*
 + * Licensed to the Apache Software Foundation (ASF) under one
 + * or more contributor license agreements.  See the NOTICE file
 + * distributed with this work for additional information
 + * regarding copyright ownership.  The ASF licenses this file
 + * to you under the Apache License, Version 2.0 (the
 + * "License"); you may not use this file except in compliance
 + * with the License.  You may obtain a copy of the License at
 + *
 + *     http://www.apache.org/licenses/LICENSE-2.0
 + *
 + * Unless required by applicable law or agreed to in writing,
 + * software distributed under the License is distributed on an
 + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 + * KIND, either express or implied.  See the License for the
 + * specific language governing permissions and limitations
 + * under the License.
 + */
 +
 +package org.apache.iotdb.db.qp.physical.sys;
 +
 +import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 +import org.apache.iotdb.db.metadata.path.PartialPath;
 +import org.apache.iotdb.db.qp.logical.Operator.OperatorType;
 +import org.apache.iotdb.db.qp.physical.PhysicalPlan;
 +
 +import java.io.DataOutputStream;
 +import java.io.IOException;
 +import java.nio.ByteBuffer;
 +import java.util.Collections;
 +import java.util.List;
 +
 +public class DummyPlan extends PhysicalPlan {
 +
 +  private byte[] workload;
 +  private boolean needForward;
 +
 +  public DummyPlan() {
-     super(false, OperatorType.EMPTY);
++    super(OperatorType.EMPTY);
 +  }
 +
 +  @Override
 +  public List<PartialPath> getPaths() {
 +    return Collections.emptyList();
 +  }
 +
 +  @Override
 +  public void serialize(DataOutputStream stream) throws IOException {
 +    stream.write((byte) PhysicalPlanType.DUMMY.ordinal());
 +    stream.writeInt(workload == null ? 0 : workload.length);
 +    if (workload != null) {
 +      stream.write(workload);
 +    }
 +    stream.write(needForward ? 1 : 0);
 +  }
 +
 +  @Override
 +  public void serialize(ByteBuffer buffer) {
 +    buffer.put((byte) PhysicalPlanType.DUMMY.ordinal());
 +    buffer.putInt(workload == null ? 0 : workload.length);
 +    if (workload != null) {
 +      buffer.put(workload);
 +    }
 +    buffer.put(needForward ? (byte) 1 : 0);
 +  }
 +
 +  @Override
 +  public void deserialize(ByteBuffer buffer) throws IllegalPathException {
 +    int size = buffer.getInt();
 +    workload = new byte[size];
 +    buffer.get(workload);
 +    needForward = buffer.get() == 1;
 +  }
 +
 +  public void setWorkload(byte[] workload) {
 +    this.workload = workload;
 +  }
 +
 +  public boolean isNeedForward() {
 +    return needForward;
 +  }
 +
 +  public void setNeedForward(boolean needForward) {
 +    this.needForward = needForward;
 +  }
 +
 +  public byte[] getWorkload() {
 +    return workload;
 +  }
 +
 +  @Override
 +  public String toString() {
 +    return "ExprPlan";
 +  }
 +}
diff --cc server/src/main/java/org/apache/iotdb/db/service/thrift/impl/TSServiceImpl.java
index 9452cba,0d06348..99f49eb
--- 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
@@@ -473,27 -529,34 +531,35 @@@ public class TSServiceImpl extends Basi
          return RpcUtils.getTSExecuteStatementResp(getNotLoggedInStatus());
        }
  
+       long startTime = System.currentTimeMillis();
        PhysicalPlan physicalPlan =
            processor.parseSQLToPhysicalPlan(statement, sessionManager.getZoneId(req.getSessionId()));
 +      physicalPlan.setTargetedTerm(req.latestTerm);
  
-       return physicalPlan.isQuery()
-           ? internalExecuteQueryStatement(
-               statement,
-               req.statementId,
-               physicalPlan,
-               req.fetchSize,
-               req.timeout,
-               req.getSessionId(),
-               req.isEnableRedirectQuery(),
-               req.isJdbcQuery())
-           : executeUpdateStatement(
-               statement,
-               req.statementId,
-               physicalPlan,
-               req.fetchSize,
-               req.timeout,
-               req.getSessionId());
+       if (physicalPlan.isQuery()) {
+         Future<TSExecuteStatementResp> resp =
+             QueryTaskManager.getInstance()
+                 .submit(
+                     new QueryTask(
+                         physicalPlan,
+                         startTime,
+                         req.sessionId,
+                         req.statement,
+                         req.statementId,
+                         req.timeout,
+                         req.fetchSize,
+                         req.jdbcQuery,
+                         req.enableRedirectQuery));
+         return resp.get();
+       } else {
+         return executeUpdateStatement(
+             statement,
+             req.statementId,
+             physicalPlan,
+             req.fetchSize,
+             req.timeout,
+             req.getSessionId());
+       }
      } catch (InterruptedException e) {
        LOGGER.error(INFO_INTERRUPT_ERROR, req, e);
        Thread.currentThread().interrupt();