You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by hu...@apache.org on 2022/10/13 11:01:22 UTC

[iotdb] 01/01: Merge remote-tracking branch 'origin/master' into lmh/mppSelectInto

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

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

commit 20502476aa05396014ed575fb318c00838be54b5
Merge: 66a200c55b dff72efc66
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Thu Oct 13 19:00:13 2022 +0800

    Merge remote-tracking branch 'origin/master' into lmh/mppSelectInto
    
    # Conflicts:
    #       server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analysis.java
    #       server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/QueryStatement.java

 .../org/apache/iotdb/db/qp/sql/IdentifierParser.g4 |   2 +-
 .../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4   |   9 +-
 .../main/java/org/apache/iotdb/tool/ImportCsv.java |   4 +-
 .../resources/conf/iotdb-confignode.properties     |   4 +-
 .../confignode/client/DataNodeRequestType.java     |   4 +
 .../AsyncConfigNodeHeartbeatClientPool.java        |   4 +-
 .../client/async/AsyncDataNodeClientPool.java      | 298 +++++++++++
 .../AsyncDataNodeHeartbeatClientPool.java          |   4 +-
 .../async/datanode/AsyncDataNodeClientPool.java    | 545 ---------------------
 .../async/handlers/AbstractRetryHandler.java       |  75 ---
 .../client/async/handlers/AsyncClientHandler.java  | 203 ++++++++
 .../client/async/handlers/ClearCacheHandler.java   |  81 ---
 .../handlers/ConstructSchemaBlackListHandler.java  |  95 ----
 .../client/async/handlers/CreateRegionHandler.java |  91 ----
 .../DeleteDataForDeleteTimeSeriesHandler.java      | 103 ----
 .../async/handlers/DeleteTimeSeriesHandler.java    |  93 ----
 .../async/handlers/FunctionManagementHandler.java  |  72 ---
 .../InvalidateMatchedSchemaCacheHandler.java       |  95 ----
 .../async/handlers/LoadConfigurationHandler.java   |  82 ----
 .../client/async/handlers/MergeHandler.java        |  83 ----
 .../handlers/RollbackSchemaBlackListHandler.java   |  99 ----
 .../async/handlers/SetSystemStatusHandler.java     |  82 ----
 .../client/async/handlers/SetTTLHandler.java       |  61 ---
 .../async/handlers/TriggerManagementHandler.java   |  72 ---
 .../handlers/UpdateConfigNodeGroupHandler.java     |  66 ---
 .../handlers/UpdateRegionRouteMapHandler.java      |  63 ---
 .../ConfigNodeHeartbeatHandler.java                |   2 +-
 .../{ => heartbeat}/DataNodeHeartbeatHandler.java  |   2 +-
 .../handlers/rpc/AbstractAsyncRPCHandler.java      |  84 ++++
 .../AsyncTSStatusRPCHandler.java}                  |  64 +--
 .../handlers/rpc/DeleteTimeSeriesRPCHandler.java   |  84 ++++
 .../FetchSchemaBlackListRPCHandler.java}           |  66 +--
 .../client/async/task/AbstractDataNodeTask.java    |  53 --
 .../task/ConstructSchemaBlackListDataNodeTask.java |  45 --
 .../DeleteDataForDeleteTimeSeriesDataNodeTask.java |  46 --
 .../task/FetchSchemaBlackListDataNodeTask.java     |  46 --
 .../InvalidateMatchedSchemaCacheDataNodeTask.java  |  46 --
 .../{confignode => }/SyncConfigNodeClientPool.java |   2 +-
 .../{datanode => }/SyncDataNodeClientPool.java     |   2 +-
 .../iotdb/confignode/conf/ConfigNodeConfig.java    |  15 +-
 .../iotdb/confignode/conf/ConfigNodeConstant.java  |   2 +
 .../confignode/conf/ConfigNodeRemoveCheck.java     |   3 +-
 .../confignode/conf/SystemPropertiesUtils.java     |  10 +
 .../consensus/request/ConfigPhysicalPlan.java      |  24 +
 .../consensus/request/ConfigPhysicalPlanType.java  |   9 +-
 .../request/read/GetNodePathsPartitionPlan.java    |   1 +
 .../consensus/request/read/GetRoutingPlan.java     |  99 ++++
 ...rtitionPlan.java => GetSeriesSlotListPlan.java} |  58 +--
 .../request/read/GetTimeSlotListPlan.java          | 109 +++++
 .../request/write/sync/GetPipeSinkPlan.java        |   1 +
 ...GetPipeSinkPlan.java => PreCreatePipePlan.java} |  25 +-
 ...GetPipeSinkPlan.java => SetPipeStatusPlan.java} |  41 +-
 .../{GetPipeSinkPlan.java => ShowPipePlan.java}    |  23 +-
 ...chemaPartitionResp.java => GetRoutingResp.java} |  40 +-
 ...rtitionResp.java => GetSeriesSlotListResp.java} |  40 +-
 .../consensus/response/GetTimeSlotListResp.java    |  59 +++
 .../response/PipeResp.java}                        |  34 +-
 .../consensus/response/SchemaPartitionResp.java    |   2 +-
 .../statemachine/PartitionRegionStateMachine.java  |  24 +-
 .../confignode/manager/ClusterSchemaManager.java   |  51 +-
 .../iotdb/confignode/manager/ConfigManager.java    | 175 +++++--
 .../iotdb/confignode/manager/ConsensusManager.java |  19 +-
 .../apache/iotdb/confignode/manager/IManager.java  |  76 ++-
 .../confignode/manager/PermissionManager.java      |   2 +-
 .../iotdb/confignode/manager/ProcedureManager.java |  95 +++-
 .../iotdb/confignode/manager/SyncManager.java      |  98 +++-
 .../iotdb/confignode/manager/UDFManager.java       |  33 +-
 .../iotdb/confignode/manager/load/LoadManager.java |  15 +-
 .../iotdb/confignode/manager/node/NodeManager.java | 109 +++--
 .../manager/partition/PartitionManager.java        |  34 +-
 .../iotdb/confignode/persistence/NodeInfo.java     |  14 +-
 .../persistence/executor/ConfigPlanExecutor.java   |  18 +
 .../persistence/partition/PartitionInfo.java       |  45 +-
 .../partition/StorageGroupPartitionTable.java      |  43 +-
 .../persistence/sync/ClusterSyncInfo.java          |  79 ++-
 .../procedure/env/ConfigNodeProcedureEnv.java      | 205 ++++++--
 .../procedure/env/DataNodeRemoveHandler.java       | 203 ++++----
 .../procedure/impl/CreateTriggerProcedure.java     |   1 +
 .../procedure/impl/DropTriggerProcedure.java       |   1 +
 .../impl/{ => node}/AbstractNodeProcedure.java     |   4 +-
 .../impl/{ => node}/AddConfigNodeProcedure.java    |   2 +-
 .../impl/{ => node}/RemoveConfigNodeProcedure.java |   2 +-
 .../impl/{ => node}/RemoveDataNodeProcedure.java   |  10 +-
 .../CreateRegionGroupsProcedure.java               |  37 +-
 .../DeleteStorageGroupProcedure.java               |   3 +-
 .../DeleteTimeSeriesProcedure.java                 | 111 ++---
 .../{ => statemachine}/RegionMigrateProcedure.java |  43 +-
 .../statemachine}/StateMachineProcedure.java       |   3 +-
 .../impl/sync/AbstractOperatePipeProcedure.java    | 142 ++++++
 .../procedure/impl/sync/CreatePipeProcedure.java   | 146 ++++++
 .../procedure/impl/sync/DropPipeProcedure.java     | 133 +++++
 .../procedure/impl/sync/StartPipeProcedure.java    | 132 +++++
 .../procedure/impl/sync/StopPipeProcedure.java     | 132 +++++
 .../procedure/state/sync/OperatePipeState.java     |  14 +-
 .../procedure/store/ProcedureFactory.java          |  44 +-
 .../iotdb/confignode/service/ConfigNode.java       |  37 +-
 .../thrift/ConfigNodeRPCServiceProcessor.java      | 156 ++++--
 .../request/ConfigPhysicalPlanSerDeTest.java       |  96 +++-
 .../procedure/entity/SimpleSTMProcedure.java       |   2 +-
 .../procedure/entity/StuckSTMProcedure.java        |   2 +-
 .../impl/CreateRegionGroupsProcedureTest.java      |   5 +-
 .../impl/DeleteStorageGroupProcedureTest.java      |   1 +
 .../impl/DeleteTimeSeriesProcedureTest.java        |   1 +
 .../procedure/impl/OperatePipeProcedureTest.java   | 122 +++++
 .../thrift/ConfigNodeRPCServiceProcessorTest.java  |   6 +-
 .../org/apache/iotdb/consensus/IStateMachine.java  |   5 +-
 .../org/apache/iotdb/consensus/common/Peer.java    |  26 +-
 .../iotdb/consensus/config/ConsensusConfig.java    |  22 +-
 .../multileader/MultiLeaderConsensus.java          |  12 +-
 .../multileader/MultiLeaderServerImpl.java         |   6 +-
 .../service/MultiLeaderRPCServiceProcessor.java    |   4 +-
 .../ratis/ApplicationStateMachineProxy.java        |  37 +-
 .../iotdb/consensus/ratis/RatisConsensus.java      |  24 +-
 .../iotdb/consensus/ratis/SnapshotStorage.java     |  53 +-
 .../org/apache/iotdb/consensus/ratis/Utils.java    |  36 +-
 .../consensus/standalone/StandAloneConsensus.java  |  11 +-
 .../consensus/standalone/StandAloneServerImpl.java |   2 +-
 .../multileader/MultiLeaderConsensusTest.java      |   7 +-
 .../iotdb/consensus/multileader/RecoveryTest.java  |   5 +-
 .../iotdb/consensus/ratis/RatisConsensusTest.java  |   7 +-
 .../apache/iotdb/consensus/ratis/SnapshotTest.java |  34 +-
 .../apache/iotdb/consensus/ratis/TestUtils.java    |   7 +-
 .../iotdb/consensus/standalone/RecoveryTest.java   |   5 +-
 .../standalone/StandAloneConsensusTest.java        |  30 +-
 docs/UserGuide/API/RestService.md                  |   2 +-
 docs/UserGuide/Data-Concept/Time-Partition.md      |   6 +-
 .../Maintenance-Tools/Maintenance-Command.md       |   2 +-
 docs/UserGuide/Operate-Metadata/Storage-Group.md   |   3 +
 docs/UserGuide/Query-Data/Aggregate-Query.md       | 174 +++++++
 .../Reference/ConfigNode-Config-Manual.md          |   2 +-
 docs/UserGuide/Reference/DataNode-Config-Manual.md |   2 +-
 docs/UserGuide/UDF-Library/Data-Profiling.md       |  10 +-
 docs/UserGuide/Write-Data/Load-External-Tsfile.md  |   4 +-
 docs/zh/UserGuide/API/RestService.md               |   2 +-
 docs/zh/UserGuide/Data-Concept/Time-Partition.md   |   6 +-
 .../Maintenance-Tools/Maintenance-Command.md       |   6 +-
 .../zh/UserGuide/Operate-Metadata/Storage-Group.md |   2 +
 docs/zh/UserGuide/Query-Data/Aggregate-Query.md    | 168 ++++++-
 .../Reference/ConfigNode-Config-Manual.md          |   2 +-
 .../UserGuide/Reference/DataNode-Config-Manual.md  |   2 +-
 docs/zh/UserGuide/UDF-Library/Data-Profiling.md    |   6 +-
 .../UserGuide/Write-Data/Load-External-Tsfile.md   |   4 +-
 example/trigger/pom.xml                            |   7 +-
 .../iotdb/trigger/ClusterAlertingExample.java      |  93 ++++
 .../java/org/apache/iotdb/it/env/MppConfig.java    |   3 +-
 .../iotdb/confignode/IoTDBClusterPartitionIT.java  | 147 +++++-
 .../org/apache/iotdb/db/it/IOTDBLoadTsFileIT.java  | 140 ++++++
 .../org/apache/iotdb/db/it/IoTDBDeletionIT.java    |  24 +
 .../db/it/aggregation/IoTDBTagAggregationIT.java   | 511 +++++++++++++++++++
 .../IoTDBCountMultiTimesWithDeletionIT.java        | 146 ++++++
 .../org/apache/iotdb/db/it/sync/IoTDBPipeIT.java   |   3 +-
 library-udf/pom.xml                                |  12 +
 .../apache/iotdb/library/dprofile/UDTFSample.java  |  70 ++-
 .../iotdb/library/dprofile/DProfileTests.java      |  13 +
 .../apache/iotdb/commons/conf/IoTDBConstant.java   |   2 +
 .../exception/sync/PipeNotExistException.java      |  28 +-
 .../iotdb/commons/partition/DataPartition.java     |  21 +-
 .../commons/partition/DataPartitionTable.java      |  36 +-
 .../commons/partition/SchemaPartitionTable.java    |   5 +
 .../commons/partition/SeriesPartitionTable.java    |  21 +
 .../apache/iotdb/commons/path/MeasurementPath.java |  35 ++
 .../org/apache/iotdb/commons/path/PartialPath.java |   1 -
 .../iotdb/commons/sync/metadata/SyncMetadata.java  |  38 +-
 .../commons/sync/persistence/SyncLogReader.java    |   7 +-
 .../apache/iotdb/commons/sync/pipe/PipeInfo.java   |  58 ++-
 .../apache/iotdb/commons/sync/pipe/PipeStatus.java |   7 +-
 .../iotdb/commons/sync/pipe/SyncOperation.java     |   2 +
 .../iotdb/commons/sync/pipe/TsFilePipeInfo.java    |  15 +
 .../iotdb/commons/sync/pipesink/IoTDBPipeSink.java |   8 +
 .../iotdb/commons/sync/pipesink/PipeSink.java      |  20 +
 .../apache/iotdb/commons/utils/NodeUrlUtils.java   |   6 +-
 .../commons/utils/ThriftConfigNodeSerDeUtils.java  |  23 +-
 pom.xml                                            |   2 +-
 .../schemaregion/rocksdb/RSchemaRegion.java        | 119 ++---
 .../resources/conf/iotdb-datanode.properties       |   6 +-
 .../apache/iotdb/db/client/ConfigNodeClient.java   | 146 +++++-
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java |   4 +-
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  |  24 +-
 .../db/consensus/DataRegionConsensusImpl.java      |   1 +
 .../db/consensus/SchemaRegionConsensusImpl.java    |   1 +
 .../statemachine/SchemaRegionStateMachine.java     |   1 -
 .../org/apache/iotdb/db/engine/StorageEngine.java  |  21 +-
 .../apache/iotdb/db/engine/StorageEngineV2.java    |  13 +-
 .../inner/utils/MultiTsFileDeviceIterator.java     |   5 +-
 .../impl/ReadPointCompactionPerformer.java         |   4 +-
 .../iotdb/db/engine/cq/ContinuousQueryService.java |  10 +-
 .../db/engine/querycontext/QueryDataSource.java    |   5 +-
 .../iotdb/db/engine/storagegroup/DataRegion.java   |  60 ++-
 .../db/engine/storagegroup/TsFileResource.java     |  49 +-
 .../dataregion/StorageGroupManager.java            |   6 +-
 .../iotdb/db/localconfignode/LocalConfigNode.java  |  11 +-
 .../iotdb/db/metadata/LocalSchemaProcessor.java    |   6 +-
 .../db/metadata/cache/DataNodeSchemaCache.java     |   3 +
 .../iotdb/db/metadata/cache/SchemaCacheEntry.java  |  11 +-
 .../iotdb/db/metadata/mtree/IMTreeBelowSG.java     |   5 +-
 .../db/metadata/mtree/MTreeBelowSGCachedImpl.java  |  15 +-
 .../db/metadata/mtree/MTreeBelowSGMemoryImpl.java  |  32 +-
 .../db/metadata/schemaregion/ISchemaRegion.java    |  10 +-
 .../schemaregion/SchemaRegionMemoryImpl.java       |  66 ++-
 .../schemaregion/SchemaRegionSchemaFileImpl.java   |  59 ++-
 .../apache/iotdb/db/metadata/tag/TagManager.java   |  15 +
 .../timerangeiterator/AggrWindowIterator.java      |  22 +-
 .../TimeRangeIteratorFactory.java                  |   2 +-
 .../db/mpp/common/header/ColumnHeaderConstant.java |   2 +-
 .../mpp/common/schematree/ClusterSchemaTree.java   |   9 +-
 .../schematree/node/SchemaMeasurementNode.java     |  14 +
 .../visitor/SchemaTreeMeasurementVisitor.java      |   1 +
 .../fragment/FragmentInstanceExecution.java        |   4 +
 .../operator/process/TagAggregationOperator.java   | 233 +++++++++
 .../operator/schema/SchemaFetchScanOperator.java   |   7 +-
 .../schedule/DriverTaskTimeoutSentinelThread.java  |  24 +-
 .../apache/iotdb/db/mpp/plan/analyze/Analysis.java |  64 ++-
 .../iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java  | 168 +++++--
 .../mpp/plan/analyze/ClusterPartitionFetcher.java  |  33 --
 .../db/mpp/plan/analyze/ClusterSchemaFetcher.java  |  13 +-
 .../db/mpp/plan/analyze/ExpressionAnalyzer.java    |   2 +
 .../db/mpp/plan/analyze/IPartitionFetcher.java     |  42 +-
 .../iotdb/db/mpp/plan/analyze/ISchemaFetcher.java  |   2 +
 .../plan/analyze/StandalonePartitionFetcher.java   |   5 -
 .../mpp/plan/analyze/StandaloneSchemaFetcher.java  |  12 +-
 .../db/mpp/plan/analyze/cache/PartitionCache.java  |  11 +-
 .../db/mpp/plan/execution/QueryExecution.java      |  30 +-
 .../config/executor/ClusterConfigTaskExecutor.java | 107 +++-
 .../executor/StandaloneConfigTaskExecutor.java     |  12 +-
 .../config/sys/sync/ShowPipeSinkTask.java          |   2 +-
 .../execution/config/sys/sync/ShowPipeTask.java    |  10 +-
 .../iotdb/db/mpp/plan/parser/ASTVisitor.java       |  61 ++-
 .../db/mpp/plan/planner/LogicalPlanBuilder.java    | 143 +++++-
 .../db/mpp/plan/planner/LogicalPlanVisitor.java    |  13 +-
 .../db/mpp/plan/planner/OperatorTreeGenerator.java |  77 ++-
 .../db/mpp/plan/planner/SubPlanTypeExtractor.java  |   9 +
 .../planner/distribution/ExchangeNodeAdder.java    |   5 +
 .../plan/planner/distribution/SourceRewriter.java  |  91 +++-
 .../plan/planner/plan/node/PlanGraphPrinter.java   |  31 ++
 .../mpp/plan/planner/plan/node/PlanNodeType.java   |   6 +-
 .../db/mpp/plan/planner/plan/node/PlanVisitor.java |   5 +
 .../node/metedata/read/SchemaFetchScanNode.java    |  19 +-
 .../plan/node/process/GroupByLevelNode.java        |  21 +-
 .../planner/plan/node/process/GroupByTagNode.java  | 312 ++++++++++++
 .../planner/plan/node/write/DeleteDataNode.java    |   9 +-
 .../plan/parameter/AggregationDescriptor.java      |   4 +-
 ....java => CrossSeriesAggregationDescriptor.java} |  16 +-
 .../statement/component/GroupByTagComponent.java   |  26 +-
 .../plan/statement/crud/LoadTsFileStatement.java   |  29 +-
 .../db/mpp/plan/statement/crud/QueryStatement.java |  22 +
 .../statement/internal/SchemaFetchStatement.java   |   9 +-
 .../protocol/influxdb/input/InfluxLineParser.java  |   4 +-
 .../protocol/influxdb/sql/InfluxDBSqlVisitor.java  |   8 +-
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  |  56 +--
 .../db/qp/physical/crud/GroupByTimeFillPlan.java   |   6 +-
 .../qp/physical/sys/CreateContinuousQueryPlan.java |   4 +-
 .../apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java    |  32 +-
 .../qp/strategy/optimizer/ConcatPathOptimizer.java |   3 +-
 .../{DatetimeUtils.java => DateTimeUtils.java}     |  22 +-
 .../apache/iotdb/db/qp/utils/WildcardsRemover.java |   8 +-
 .../iotdb/db/query/context/QueryContext.java       |   1 -
 .../query/dataset/groupby/GroupByTimeDataSet.java  |   2 +-
 .../apache/iotdb/db/query/executor/fill/IFill.java |   2 +-
 .../iotdb/db/query/executor/fill/LinearFill.java   |   6 +-
 .../iotdb/db/query/executor/fill/PreviousFill.java |   4 +-
 .../db/service/DataNodeServerCommandLine.java      |   2 +-
 .../iotdb/db/service/RegionMigrateService.java     |   8 +-
 .../impl/DataNodeInternalRPCServiceImpl.java       |  49 +-
 .../service/thrift/impl/DataNodeRegionManager.java |   4 +-
 .../java/org/apache/iotdb/db/sync/SyncService.java | 190 +++----
 .../db/sync/common/ClusterSyncInfoFetcher.java     | 144 ++++++
 .../iotdb/db/sync/common/ISyncInfoFetcher.java     |  10 +-
 .../apache/iotdb/db/sync/common/LocalSyncInfo.java |  41 +-
 .../iotdb/db/sync/common/LocalSyncInfoFetcher.java |  16 +-
 .../db/sync/sender/pipe/ExternalPipeSink.java      |   8 +
 .../apache/iotdb/db/tools/IoTDBDataDirViewer.java  |   6 +-
 .../iotdb/db/tools/TsFileResourcePrinter.java      |   6 +-
 .../db/tools/watermark/WatermarkDetector.java      |   4 +-
 .../java/org/apache/iotdb/db/utils/QueryUtils.java |   4 +-
 .../apache/iotdb/db/utils/sync/SyncPipeUtil.java   |  74 ++-
 .../timerangeiterator/AggrWindowIterator.java      |  18 +-
 .../TimeRangeIteratorFactory.java                  |   2 +-
 .../ReadPointCompactionPerformerTest.java          | 266 ++++++++++
 .../db/metadata/cache/DataNodeSchemaCacheTest.java |  22 +-
 .../iotdb/db/metadata/mtree/MTreeBelowSGTest.java  |  16 +-
 .../db/metadata/path/MeasurementPathTest.java      |  75 ++-
 .../mpp/execution/operator/OperatorMemoryTest.java |   7 +-
 .../schema/SchemaFetchScanOperatorTest.java        |   3 +-
 .../plan/analyze/AggregationDescriptorTest.java    |  19 +-
 .../iotdb/db/mpp/plan/analyze/AnalyzeTest.java     |   2 +-
 .../mpp/plan/analyze/FakePartitionFetcherImpl.java |   5 -
 .../db/mpp/plan/analyze/FakeSchemaFetcherImpl.java |   9 +
 .../db/mpp/plan/parser/StatementGeneratorTest.java |  16 +
 .../iotdb/db/mpp/plan/plan/LogicalPlannerTest.java |  93 +++-
 .../db/mpp/plan/plan/QueryLogicalPlanUtil.java     |  20 +-
 .../distribution/AggregationDistributionTest.java  |  24 +-
 .../metadata/read/SchemaFetchScanNodeTest.java     |   7 +-
 .../node/process/GroupByLevelNodeSerdeTest.java    |   4 +-
 .../plan/node/process/GroupByTagNodeSerdeTest.java | 122 +++++
 .../db/qp/utils/DatetimeQueryDataSetUtilsTest.java | 116 ++---
 .../DataNodeInternalRPCServiceImplTest.java        |   8 +-
 .../sync/receiver/manager/LocalSyncInfoTest.java   |  10 +-
 spark-iotdb-connector/pom.xml                      |   4 +-
 spark-tsfile/pom.xml                               |   4 +-
 .../src/main/thrift/confignode.thrift              |  85 +++-
 .../src/main/thrift/mutlileader.thrift             |   2 +
 thrift/src/main/thrift/datanode.thrift             |  20 +
 .../iotdb/tsfile/file/metadata/ChunkMetadata.java  |   5 +-
 .../iotdb/tsfile/utils/ReadWriteIOUtils.java       |   2 +-
 .../tsfile/file/metadata/ChunkMetadataTest.java    |  70 +++
 305 files changed, 8727 insertions(+), 3993 deletions(-)

diff --cc server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analysis.java
index ea344ca9fe,8e346a03a8..dbefd62034
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analysis.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analysis.java
@@@ -416,20 -437,22 +449,39 @@@ public class Analysis 
      this.deviceViewOutputExpressions = deviceViewOutputExpressions;
    }
  
 +  public IntoDeviceMeasurementDescriptor getIntoDeviceMeasurementDescriptor() {
 +    return intoDeviceMeasurementDescriptor;
 +  }
 +
 +  public void setIntoDeviceMeasurementDescriptor(
 +      IntoDeviceMeasurementDescriptor intoDeviceMeasurementDescriptor) {
 +    this.intoDeviceMeasurementDescriptor = intoDeviceMeasurementDescriptor;
 +  }
 +
 +  public IntoPathDescriptor getIntoPathDescriptor() {
 +    return intoPathDescriptor;
 +  }
 +
 +  public void setIntoPathDescriptor(IntoPathDescriptor intoPathDescriptor) {
 +    this.intoPathDescriptor = intoPathDescriptor;
 +  }
++
+   public List<String> getTagKeys() {
+     return tagKeys;
+   }
+ 
+   public void setTagKeys(List<String> tagKeys) {
+     this.tagKeys = tagKeys;
+   }
+ 
+   public Map<List<String>, LinkedHashMap<Expression, List<Expression>>>
+       getTagValuesToGroupedTimeseriesOperands() {
+     return tagValuesToGroupedTimeseriesOperands;
+   }
+ 
+   public void setTagValuesToGroupedTimeseriesOperands(
+       Map<List<String>, LinkedHashMap<Expression, List<Expression>>>
+           tagValuesToGroupedTimeseriesOperands) {
+     this.tagValuesToGroupedTimeseriesOperands = tagValuesToGroupedTimeseriesOperands;
+   }
  }
diff --cc server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
index 30d945044a,92a70eddbf..aa71a65347
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
@@@ -49,11 -50,11 +50,13 @@@ import org.apache.iotdb.db.mpp.plan.Coo
  import org.apache.iotdb.db.mpp.plan.execution.ExecutionResult;
  import org.apache.iotdb.db.mpp.plan.expression.Expression;
  import org.apache.iotdb.db.mpp.plan.expression.ExpressionType;
+ import org.apache.iotdb.db.mpp.plan.expression.leaf.ConstantOperand;
  import org.apache.iotdb.db.mpp.plan.expression.leaf.TimeSeriesOperand;
+ import org.apache.iotdb.db.mpp.plan.expression.multi.FunctionExpression;
  import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.FillDescriptor;
  import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.GroupByTimeParameter;
 +import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.IntoDeviceMeasurementDescriptor;
 +import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.IntoPathDescriptor;
  import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.OrderByParameter;
  import org.apache.iotdb.db.mpp.plan.statement.Statement;
  import org.apache.iotdb.db.mpp.plan.statement.StatementNode;
diff --cc server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
index dc28cae4e2,e93ed56878..9e54138d82
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
@@@ -67,10 -67,9 +67,11 @@@ import org.apache.iotdb.db.mpp.plan.sta
  import org.apache.iotdb.db.mpp.plan.statement.component.FillPolicy;
  import org.apache.iotdb.db.mpp.plan.statement.component.FromComponent;
  import org.apache.iotdb.db.mpp.plan.statement.component.GroupByLevelComponent;
+ import org.apache.iotdb.db.mpp.plan.statement.component.GroupByTagComponent;
  import org.apache.iotdb.db.mpp.plan.statement.component.GroupByTimeComponent;
  import org.apache.iotdb.db.mpp.plan.statement.component.HavingCondition;
 +import org.apache.iotdb.db.mpp.plan.statement.component.IntoComponent;
 +import org.apache.iotdb.db.mpp.plan.statement.component.IntoItem;
  import org.apache.iotdb.db.mpp.plan.statement.component.OrderByComponent;
  import org.apache.iotdb.db.mpp.plan.statement.component.Ordering;
  import org.apache.iotdb.db.mpp.plan.statement.component.ResultColumn;
diff --cc server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/QueryStatement.java
index d0c05930be,a4011d0ed4..aea3c370d5
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/QueryStatement.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/QueryStatement.java
@@@ -30,9 -30,9 +30,10 @@@ import org.apache.iotdb.db.mpp.plan.sta
  import org.apache.iotdb.db.mpp.plan.statement.component.FillComponent;
  import org.apache.iotdb.db.mpp.plan.statement.component.FromComponent;
  import org.apache.iotdb.db.mpp.plan.statement.component.GroupByLevelComponent;
+ import org.apache.iotdb.db.mpp.plan.statement.component.GroupByTagComponent;
  import org.apache.iotdb.db.mpp.plan.statement.component.GroupByTimeComponent;
  import org.apache.iotdb.db.mpp.plan.statement.component.HavingCondition;
 +import org.apache.iotdb.db.mpp.plan.statement.component.IntoComponent;
  import org.apache.iotdb.db.mpp.plan.statement.component.OrderByComponent;
  import org.apache.iotdb.db.mpp.plan.statement.component.Ordering;
  import org.apache.iotdb.db.mpp.plan.statement.component.ResultColumn;
@@@ -95,9 -95,9 +96,12 @@@ public class QueryStatement extends Sta
    // `GROUP BY LEVEL` clause
    protected GroupByLevelComponent groupByLevelComponent;
  
+   // `GROUP BY TAG` clause
+   protected GroupByTagComponent groupByTagComponent;
+ 
 +  // `INTO` clause
 +  protected IntoComponent intoComponent;
 +
    public QueryStatement() {
      this.statementType = StatementType.QUERY;
    }