You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2022/05/04 08:56:28 UTC

[iotdb] branch AlignedSeriesScanOperator updated (dcbdecbca5 -> 32982622f7)

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

jackietien pushed a change to branch AlignedSeriesScanOperator
in repository https://gitbox.apache.org/repos/asf/iotdb.git


    from dcbdecbca5 [IOTDB-3080] Implementation of AlignedSeriesScanOperator
     add a555f00b89 [IOTDB-2865] Move `PartialPath` to node-commons module (#5780)
     add 223d27d16c [IOTDB-2957] User can execute SQL after signing in with a wrong password (#5778)
     add c03440626d [IOTDB-2865] Move PartialPath to node-commons module (#5785)
     add 85a9e90b2a fix compilation problem (#5786)
     add 6348474eb0 [IOTDB-3050] Support expression evaluation with time column (#5783)
     add 2b943e4cd3 fix (#5784)
     add da61ab01bc [IOTDB-3078]upgrade spotless and code format version. Add instruction for spotles… (#5771)
     add cca9cbc73b [IOTDB-2797][privilege] Fix root.** doesn't work (#5756)
     add b090698af2 [IOTDB-3088]Implement MTreeAboveSG serialize and deserialize (#5781)
     new 32982622f7 resolve conflicts and add desc test

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 README.md                                          |  14 +
 README_ZH.md                                       |  13 +
 .../cluster/client/sync/SyncClientAdaptor.java     |   2 +-
 .../iotdb/cluster/coordinator/Coordinator.java     |   6 +-
 .../cluster/log/applier/AsyncDataLogApplier.java   |   4 +-
 .../iotdb/cluster/log/applier/BaseApplier.java     |   4 +-
 .../iotdb/cluster/log/applier/DataLogApplier.java  |   2 +-
 .../cluster/log/logtypes/PhysicalPlanLog.java      |   2 +-
 .../manage/FilePartitionedSnapshotLogManager.java  |   2 +-
 .../log/manage/MetaSingleSnapshotLogManager.java   |   2 +-
 .../log/manage/PartitionedSnapshotLogManager.java  |   2 +-
 .../iotdb/cluster/log/snapshot/FileSnapshot.java   |   4 +-
 .../cluster/log/snapshot/MetaSimpleSnapshot.java   |   6 +-
 .../iotdb/cluster/metadata/CSchemaProcessor.java   |   6 +-
 .../apache/iotdb/cluster/metadata/MetaPuller.java  |   4 +-
 .../iotdb/cluster/partition/PartitionTable.java    |   4 +-
 .../cluster/query/ClusterDataQueryExecutor.java    |   2 +-
 .../cluster/query/ClusterPhysicalGenerator.java    |   4 +-
 .../iotdb/cluster/query/ClusterPlanExecutor.java   |   4 +-
 .../iotdb/cluster/query/ClusterPlanRouter.java     |   4 +-
 .../iotdb/cluster/query/LocalQueryExecutor.java    |   6 +-
 .../query/aggregate/ClusterAggregateExecutor.java  |   2 +-
 .../cluster/query/aggregate/ClusterAggregator.java |   2 +-
 .../cluster/query/fill/ClusterFillExecutor.java    |   2 +-
 .../cluster/query/fill/ClusterPreviousFill.java    |   2 +-
 .../cluster/query/fill/PreviousFillArguments.java  |   2 +-
 .../groupby/ClusterGroupByNoVFilterDataSet.java    |   2 +-
 .../groupby/ClusterGroupByVFilterDataSet.java      |   2 +-
 .../query/groupby/MergeGroupByExecutor.java        |   2 +-
 .../query/last/ClusterLastQueryExecutor.java       |   2 +-
 .../cluster/query/reader/ClusterReaderFactory.java |   2 +-
 .../cluster/query/reader/ClusterTimeGenerator.java |   2 +-
 .../query/reader/mult/MultDataSourceInfo.java      |   2 +-
 .../handlers/caller/ShowTimeSeriesHandler.java     |   4 +-
 .../cluster/server/member/DataGroupMember.java     |   6 +-
 .../cluster/server/member/MetaGroupMember.java     |   4 +-
 .../iotdb/cluster/server/member/RaftMember.java    |   2 +-
 .../cluster/server/service/DataAsyncService.java   |   4 +-
 .../cluster/server/service/DataSyncService.java    |   4 +-
 .../iotdb/cluster/utils/ClusterQueryUtils.java     |   6 +-
 .../apache/iotdb/cluster/utils/ClusterUtils.java   |   4 +-
 .../cluster/utils/nodetool/ClusterMonitor.java     |   4 +-
 .../cluster/client/sync/SyncClientAdaptorTest.java |   4 +-
 .../org/apache/iotdb/cluster/common/IoTDBTest.java |   6 +-
 .../iotdb/cluster/common/TestAsyncDataClient.java  |   2 +-
 .../iotdb/cluster/common/TestLogApplier.java       |   4 +-
 .../org/apache/iotdb/cluster/common/TestUtils.java |   4 +-
 .../apache/iotdb/cluster/log/LogParserTest.java    |   4 +-
 .../log/applier/AsyncDataLogApplierTest.java       |   4 +-
 .../cluster/log/applier/DataLogApplierTest.java    |   6 +-
 .../cluster/log/applier/MetaLogApplierTest.java    |   4 +-
 .../cluster/log/logtypes/SerializeLogTest.java     |   4 +-
 .../FilePartitionedSnapshotLogManagerTest.java     |   2 +-
 .../manage/MetaSingleSnapshotLogManagerTest.java   |   4 +-
 .../cluster/log/snapshot/DataSnapshotTest.java     |   4 +-
 .../cluster/log/snapshot/FileSnapshotTest.java     |   4 +-
 .../log/snapshot/MetaSimpleSnapshotTest.java       |   4 +-
 .../log/snapshot/PartitionedSnapshotTest.java      |   4 +-
 .../cluster/log/snapshot/PullSnapshotTaskTest.java |   6 +-
 .../cluster/partition/SlotPartitionTableTest.java  |   6 +-
 .../apache/iotdb/cluster/query/BaseQueryTest.java  |   2 +-
 .../query/ClusterAggregateExecutorTest.java        |   4 +-
 .../query/ClusterDataQueryExecutorTest.java        |   4 +-
 .../query/ClusterPhysicalGeneratorTest.java        |   4 +-
 .../cluster/query/ClusterPlanExecutorTest.java     |   4 +-
 .../cluster/query/ClusterQueryRouterTest.java      |   4 +-
 .../query/fill/ClusterFillExecutorTest.java        |   2 +-
 .../ClusterGroupByNoVFilterDataSetTest.java        |   4 +-
 .../groupby/ClusterGroupByVFilterDataSetTest.java  |   4 +-
 .../query/groupby/MergeGroupByExecutorTest.java    |   4 +-
 .../query/groupby/RemoteGroupByExecutorTest.java   |   4 +-
 .../query/last/ClusterLastQueryExecutorTest.java   |   2 +-
 .../query/reader/ClusterReaderFactoryTest.java     |   4 +-
 .../query/reader/ClusterTimeGeneratorTest.java     |   4 +-
 .../mult/AssignPathManagedMergeReaderTest.java     |   4 +-
 .../mult/MultSeriesRawDataPointReaderTest.java     |   2 +-
 .../reader/mult/RemoteMultSeriesReaderTest.java    |   4 +-
 .../server/clusterinfo/ClusterInfoServerTest.java  |   2 +-
 .../clusterinfo/ClusterInfoServiceImplTest.java    |   4 +-
 .../handlers/forwarder/ForwardPlanHandlerTest.java |   4 +-
 .../iotdb/cluster/server/member/BaseMember.java    |   4 +-
 .../cluster/server/member/DataGroupMemberTest.java |   4 +-
 .../cluster/server/member/MetaGroupMemberTest.java |   6 +-
 .../iotdb/cluster/utils/SerializeUtilTest.java     |   4 +-
 .../confignode/persistence/ClusterSchemaInfo.java  |   6 +-
 .../thrift/ConfigNodeRPCServiceProcessorTest.java  |   4 +-
 .../iotdb/consensus/ratis/RatisConsensus.java      |  75 +++--
 docs/Development/ContributeGuide.md                |  18 +-
 .../Administration-Management/Administration.md    |   2 +-
 docs/UserGuide/Process-Data/Triggers.md            |   2 +-
 .../Administration-Management/Administration.md    |   2 +-
 docs/zh/UserGuide/Process-Data/Triggers.md         |   2 +-
 .../org/apache/iotdb/trigger/TriggerExample.java   |   2 +-
 .../iotdb/db/integration/IoTDBArithmeticIT.java    |   4 +-
 .../iotdb/db/integration/IoTDBAuthorizationIT.java |  32 ++-
 .../db/integration/IoTDBContinuousQueryIT.java     |   4 +-
 .../db/integration/IoTDBEngineTimeGeneratorIT.java |   4 +-
 .../iotdb/db/integration/IoTDBFilePathUtilsIT.java |   4 +-
 .../apache/iotdb/db/integration/IoTDBLastIT.java   |   2 +-
 ...IoTDBLoadExternalTsFileWithTimePartitionIT.java |   4 +-
 .../db/integration/IoTDBLoadExternalTsfileIT.java  |   4 +-
 .../integration/IoTDBManageTsFileResourceIT.java   |   4 +-
 .../iotdb/db/integration/IoTDBNestedQueryIT.java   |  33 ++-
 .../db/integration/IoTDBNewTsFileCompactionIT.java |   2 +-
 .../db/integration/IoTDBRemovePartitionIT.java     |   4 +-
 .../iotdb/db/integration/IoTDBSelectIntoIT.java    |   4 +-
 .../db/integration/IoTDBSequenceDataQueryIT.java   |   4 +-
 .../iotdb/db/integration/IoTDBSeriesReaderIT.java  |   4 +-
 .../iotdb/db/integration/IoTDBSimpleQueryIT.java   |   4 +-
 .../db/integration/IoTDBTriggerExecutionIT.java    |   4 +-
 .../db/integration/IoTDBTriggerManagementIT.java   |   2 +-
 .../iotdb/db/integration/IoTDBUDFManagementIT.java |   2 +-
 .../aligned/IoTDBLoadExternalAlignedTsFileIT.java  |   4 +-
 .../sync/IoTDBSyncReceiverCollectorIT.java         |   2 +-
 .../db/integration/sync/IoTDBSyncReceiverIT.java   |   2 +-
 .../sync/IoTDBSyncReceiverLoaderIT.java            |   2 +-
 .../db/integration/sync/IoTDBSyncSenderIT.java     |   2 +-
 .../apache/iotdb/session/IoTDBSessionSimpleIT.java |   4 +-
 .../apache/iotdb/session/template/TemplateUT.java  |   2 +-
 node-commons/pom.xml                               |  10 +
 .../commons/exception}/IllegalPathException.java   |   2 +-
 .../commons/exception}/MetadataException.java      |   3 +-
 .../apache/iotdb/commons}/path/PartialPath.java    |  12 +-
 .../org/apache/iotdb/commons/path/PathType.java    |  25 +-
 .../org/apache/iotdb/commons/utils/PathUtils.java  |  98 +++++++
 pom.xml                                            |  13 +-
 .../rocksdb/RSchemaReadWriteHandler.java           |   4 +-
 .../schemaregion/rocksdb/RSchemaRegion.java        |  10 +-
 .../schemaregion/rocksdb/RSchemaUtils.java         |   8 +-
 .../schemaregion/rocksdb/mnode/REntityMNode.java   |   2 +-
 .../schemaregion/rocksdb/mnode/RInternalMNode.java |   2 +-
 .../schemaregion/rocksdb/mnode/RMNode.java         |   6 +-
 .../rocksdb/mnode/RMeasurementMNode.java           |   2 +-
 .../rocksdb/mnode/RStorageGroupMNode.java          |   2 +-
 .../org/apache/iotdb/db/auth/AuthorityChecker.java |   2 +-
 .../iotdb/db/auth/authorizer/BasicAuthorizer.java  |  14 +
 .../org/apache/iotdb/db/engine/StorageEngine.java  |   6 +-
 .../apache/iotdb/db/engine/StorageEngineV2.java    |   2 +-
 .../RewriteCrossSpaceCompactionResource.java       |   2 +-
 .../rewrite/task/ReadPointPerformerSubTask.java    |   2 +-
 .../inner/utils/MultiTsFileDeviceIterator.java     |   4 +-
 .../utils/SingleSeriesCompactionExecutor.java      |   2 +-
 .../compaction/performer/ICompactionPerformer.java |   2 +-
 .../impl/ReadChunkCompactionPerformer.java         |   4 +-
 .../impl/ReadPointCompactionPerformer.java         |   6 +-
 .../engine/cq/ContinuousQuerySchemaCheckTask.java  |   4 +-
 .../iotdb/db/engine/cq/ContinuousQueryTask.java    |   6 +-
 .../iotdb/db/engine/memtable/AbstractMemTable.java |   2 +-
 .../memtable/AlignedWritableMemChunkGroup.java     |   2 +-
 .../apache/iotdb/db/engine/memtable/IMemTable.java |   4 +-
 .../db/engine/memtable/IWritableMemChunkGroup.java |   2 +-
 .../db/engine/memtable/WritableMemChunkGroup.java  |   2 +-
 .../iotdb/db/engine/modification/Deletion.java     |   4 +-
 .../iotdb/db/engine/modification/Modification.java |   2 +-
 .../io/LocalTextModificationAccessor.java          |   4 +-
 .../selectinto/InsertTabletPlanGenerator.java      |   4 +-
 .../selectinto/InsertTabletPlansIterator.java      |   4 +-
 .../apache/iotdb/db/engine/settle/SettleTask.java  |   2 +-
 .../iotdb/db/engine/storagegroup/DataRegion.java   |   6 +-
 .../db/engine/storagegroup/TsFileProcessor.java    |   6 +-
 .../db/engine/storagegroup/TsFileResource.java     |   2 +-
 .../dataregion/HashVirtualPartitioner.java         |   2 +-
 .../dataregion/StorageGroupManager.java            |   2 +-
 .../dataregion/VirtualPartitioner.java             |   2 +-
 .../service/TriggerRegistrationInformation.java    |   2 +-
 .../service/TriggerRegistrationService.java        |   4 +-
 .../sink/local/LocalIoTDBConfiguration.java        |   4 +-
 .../trigger/sink/local/LocalIoTDBHandler.java      |   4 +-
 .../trigger/sink/mqtt/MQTTConfiguration.java       |   2 +-
 .../metadata/AcquireLockTimeoutException.java      |   2 +
 .../metadata/AliasAlreadyExistException.java       |   1 +
 .../metadata/AlignedTimeseriesException.java       |   1 +
 .../metadata/DataTypeMismatchException.java        |   1 +
 .../exception/metadata/DeleteFailedException.java  |   1 +
 .../metadata/IllegalParameterOfPathException.java  |   1 +
 .../metadata/MNodeTypeMismatchException.java       |   1 +
 .../metadata/PathAlreadyExistException.java        |   1 +
 .../exception/metadata/PathNotExistException.java  |   1 +
 .../SchemaDirCreationFailureException.java         |   2 +
 .../metadata/SeriesOverflowException.java          |   1 +
 .../metadata/StorageGroupAlreadySetException.java  |   1 +
 .../metadata/StorageGroupNotSetException.java      |   1 +
 .../metadata/cache/MNodeNotCachedException.java    |   2 +-
 .../metadata/cache/MNodeNotPinnedException.java    |   2 +-
 .../schemafile/RecordDuplicatedException.java      |   2 +-
 .../metadata/schemafile/SchemaFileNotExists.java   |   2 +-
 .../schemafile/SchemaPageOverflowException.java    |   2 +-
 .../schemafile/SegmentNotFoundException.java       |   2 +-
 .../schemafile/SegmentOverflowException.java       |   2 +-
 .../template/DifferentTemplateException.java       |   2 +-
 .../template/DuplicatedTemplateException.java      |   2 +-
 .../template/NoTemplateOnMNodeException.java       |   2 +-
 .../template/TemplateImcompatibeException.java     |   2 +-
 .../template/TemplateIsInUseException.java         |   2 +-
 .../template/UndefinedTemplateException.java       |   2 +-
 .../iotdb/db/localconfignode/LocalConfigNode.java  |   4 +-
 .../localconfignode/LocalDataPartitionTable.java   |   2 +-
 .../localconfignode/LocalSchemaPartitionTable.java |   4 +-
 .../iotdb/db/metadata/LocalSchemaProcessor.java    |   4 +-
 .../apache/iotdb/db/metadata/MetadataConstant.java |   2 +-
 .../db/metadata/cache/DataNodeSchemaCache.java     |   4 +-
 .../idtable/AppendOnlyDiskSchemaManager.java       |   2 +-
 .../apache/iotdb/db/metadata/idtable/IDTable.java  |   4 +-
 .../db/metadata/idtable/IDTableHashmapImpl.java    |   4 +-
 .../iotdb/db/metadata/idtable/IDTableManager.java  |   4 +-
 .../db/metadata/idtable/entry/DeviceIDFactory.java |   2 +-
 .../idtable/entry/InsertMeasurementMNode.java      |   2 +-
 .../db/metadata/idtable/entry/SchemaEntry.java     |   2 +-
 .../db/metadata/idtable/entry/TimeseriesID.java    |   2 +-
 .../db/metadata/lastCache/LastCacheManager.java    |   2 +-
 .../iotdb/db/metadata/logfile/MLogWriter.java      |   2 +-
 .../org/apache/iotdb/db/metadata/mnode/IMNode.java |   2 +-
 .../org/apache/iotdb/db/metadata/mnode/MNode.java  |   2 +-
 .../iotdb/db/metadata/mtree/IMTreeBelowSG.java     |   4 +-
 .../iotdb/db/metadata/mtree/MTreeAboveSG.java      |  92 +++++-
 .../db/metadata/mtree/MTreeBelowSGCachedImpl.java  |  12 +-
 .../db/metadata/mtree/MTreeBelowSGMemoryImpl.java  |  12 +-
 .../db/metadata/mtree/store/CachedMTreeStore.java  |   4 +-
 .../iotdb/db/metadata/mtree/store/IMTreeStore.java |   2 +-
 .../db/metadata/mtree/store/MemMTreeStore.java     |   2 +-
 .../mtree/store/disk/schemafile/ISchemaFile.java   |   2 +-
 .../mtree/store/disk/schemafile/ISchemaPage.java   |   2 +-
 .../mtree/store/disk/schemafile/ISegment.java      |   2 +-
 .../store/disk/schemafile/MockSchemaFile.java      |   2 +-
 .../mtree/store/disk/schemafile/RecordUtils.java   |   2 +-
 .../mtree/store/disk/schemafile/SchemaFile.java    |   6 +-
 .../mtree/store/disk/schemafile/SchemaPage.java    |   2 +-
 .../mtree/store/disk/schemafile/Segment.java       |   2 +-
 .../db/metadata/mtree/traverser/Traverser.java     |   6 +-
 .../traverser/collector/CollectorTraverser.java    |   4 +-
 .../mtree/traverser/collector/EntityCollector.java |   4 +-
 .../traverser/collector/MNodeAboveSGCollector.java |   4 +-
 .../mtree/traverser/collector/MNodeCollector.java  |   4 +-
 .../traverser/collector/MeasurementCollector.java  |   4 +-
 .../traverser/collector/StorageGroupCollector.java |   4 +-
 .../mtree/traverser/counter/CounterTraverser.java  |   4 +-
 .../mtree/traverser/counter/EntityCounter.java     |   4 +-
 .../counter/MNodeAboveSGLevelCounter.java          |   4 +-
 .../mtree/traverser/counter/MNodeLevelCounter.java |   4 +-
 .../traverser/counter/MeasurementCounter.java      |   4 +-
 .../counter/MeasurementGroupByLevelCounter.java    |   4 +-
 .../traverser/counter/StorageGroupCounter.java     |   4 +-
 .../apache/iotdb/db/metadata/path/AlignedPath.java |   6 +-
 .../iotdb/db/metadata/path/MeasurementPath.java    |   6 +-
 .../db/metadata/path/PathDeserializeUtil.java      |  18 +-
 .../db/metadata/schemaregion/ISchemaRegion.java    |   4 +-
 .../metadata/schemaregion/RSchemaRegionLoader.java |   2 +-
 .../db/metadata/schemaregion/SchemaEngine.java     |   4 +-
 .../schemaregion/SchemaRegionMemoryImpl.java       |   4 +-
 .../schemaregion/SchemaRegionSchemaFileImpl.java   |   4 +-
 .../metadata/schemaregion/SchemaRegionUtils.java   |   2 +-
 .../storagegroup/IStorageGroupSchemaManager.java   |   4 +-
 .../storagegroup/StorageGroupLogWriter.java        |   2 +-
 .../storagegroup/StorageGroupSchemaManager.java    |   4 +-
 .../apache/iotdb/db/metadata/tag/TagLogFile.java   |   2 +-
 .../apache/iotdb/db/metadata/tag/TagManager.java   |   4 +-
 .../iotdb/db/metadata/template/Template.java       |  28 +-
 .../db/metadata/template/TemplateManager.java      |   4 +-
 .../db/metadata/tree/AbstractTreeVisitor.java      |   2 +-
 .../tree/AbstractTreeVisitorWithLimitOffset.java   |   2 +-
 .../db/metadata/upgrade/MetadataUpgrader.java      |   4 +-
 .../iotdb/db/metadata/utils/MetaFormatUtils.java   |   6 +-
 .../apache/iotdb/db/metadata/utils/MetaUtils.java  |  77 +----
 .../db/metadata/utils/ResourceByPathUtils.java     |   2 +-
 .../metadata/visitor/SchemaExecutionVisitor.java   |   2 +-
 .../db/mpp/common/filter/BasicFunctionFilter.java  |   4 +-
 .../iotdb/db/mpp/common/filter/FunctionFilter.java |   2 +-
 .../iotdb/db/mpp/common/filter/InFilter.java       |   4 +-
 .../iotdb/db/mpp/common/filter/LikeFilter.java     |   4 +-
 .../iotdb/db/mpp/common/filter/QueryFilter.java    |   4 +-
 .../iotdb/db/mpp/common/filter/RegexpFilter.java   |   4 +-
 .../iotdb/db/mpp/common/header/ColumnHeader.java   |   4 +-
 .../db/mpp/common/schematree/DeviceSchemaInfo.java |   2 +-
 .../db/mpp/common/schematree/PathPatternTree.java  |   4 +-
 .../iotdb/db/mpp/common/schematree/SchemaTree.java |   4 +-
 .../visitor/SchemaTreeDeviceVisitor.java           |   2 +-
 .../visitor/SchemaTreeMeasurementVisitor.java      |   2 +-
 .../schematree/visitor/SchemaTreeVisitor.java      |   2 +-
 .../iotdb/db/mpp/execution/driver/DataDriver.java  |   2 +-
 .../db/mpp/execution/driver/DataDriverContext.java |   2 +-
 .../execution/operator/process/FilterOperator.java |   4 +-
 .../operator/process/TransformOperator.java        |  22 +-
 .../operator/schema/DevicesCountOperator.java      |   4 +-
 .../operator/schema/DevicesSchemaScanOperator.java |   4 +-
 .../schema/LevelTimeSeriesCountOperator.java       |   4 +-
 .../operator/schema/SchemaFetchOperator.java       |   4 +-
 .../operator/schema/SchemaScanOperator.java        |   2 +-
 .../operator/schema/TimeSeriesCountOperator.java   |   4 +-
 .../schema/TimeSeriesSchemaScanOperator.java       |   4 +-
 .../operator/source/AlignedSeriesScanUtil.java     |   2 +-
 .../source/SeriesAggregateScanOperator.java        |   2 +-
 .../operator/source/SeriesScanOperator.java        |   2 +-
 .../execution/operator/source/SeriesScanUtil.java  |   2 +-
 .../apache/iotdb/db/mpp/plan/analyze/Analysis.java |   2 +-
 .../apache/iotdb/db/mpp/plan/analyze/Analyzer.java |   2 +-
 .../mpp/plan/analyze/ClusterPartitionFetcher.java  |   4 +-
 .../db/mpp/plan/analyze/ClusterSchemaFetcher.java  |   2 +-
 .../db/mpp/plan/analyze/FakeSchemaFetcherImpl.java |   2 +-
 .../iotdb/db/mpp/plan/analyze/ISchemaFetcher.java  |   2 +-
 .../plan/analyze/StandalonePartitionFetcher.java   |   4 +-
 .../mpp/plan/analyze/StandaloneSchemaFetcher.java  |   4 +-
 .../execution/config/CountStorageGroupTask.java    |   2 +-
 .../plan/execution/config/SetStorageGroupTask.java |   2 +-
 .../db/mpp/plan/execution/config/SetTTLTask.java   |   2 +-
 .../execution/config/ShowStorageGroupTask.java     |   4 +-
 .../db/mpp/plan/execution/config/ShowTTLTask.java  |   4 +-
 .../iotdb/db/mpp/plan/parser/ASTVisitor.java       |   7 +-
 .../db/mpp/plan/parser/StatementGenerator.java     |   4 +-
 .../db/mpp/plan/planner/LocalExecutionPlanner.java |   2 +-
 .../db/mpp/plan/planner/LogicalPlanBuilder.java    |   2 +-
 .../mpp/plan/planner/plan/node/PlanNodeType.java   |   2 +-
 .../plan/node/metedata/read/DevicesCountNode.java  |   4 +-
 .../node/metedata/read/DevicesSchemaScanNode.java  |   4 +-
 .../metedata/read/LevelTimeSeriesCountNode.java    |   4 +-
 .../plan/node/metedata/read/SchemaScanNode.java    |   2 +-
 .../node/metedata/read/TimeSeriesCountNode.java    |   4 +-
 .../metedata/read/TimeSeriesSchemaScanNode.java    |   4 +-
 .../node/metedata/write/AlterTimeSeriesNode.java   |   4 +-
 .../write/CreateAlignedTimeSeriesNode.java         |   4 +-
 .../node/metedata/write/CreateTimeSeriesNode.java  |   4 +-
 .../planner/plan/node/write/BatchInsertNode.java   |   2 +-
 .../plan/node/write/InsertMultiTabletsNode.java    |   2 +-
 .../plan/planner/plan/node/write/InsertNode.java   |   2 +-
 .../planner/plan/node/write/InsertRowNode.java     |   4 +-
 .../planner/plan/node/write/InsertRowsNode.java    |   2 +-
 .../plan/node/write/InsertRowsOfOneDeviceNode.java |   4 +-
 .../planner/plan/node/write/InsertTabletNode.java  |   4 +-
 .../db/mpp/plan/rewriter/ConcatPathRewriter.java   |   8 +-
 .../plan/rewriter/MergeSingleFilterOptimizer.java  |   2 +-
 .../db/mpp/plan/rewriter/RemoveNotOptimizer.java   |   2 +-
 .../db/mpp/plan/rewriter/WildcardsRemover.java     |   4 +-
 .../iotdb/db/mpp/plan/statement/Statement.java     |   2 +-
 .../plan/statement/component/FromComponent.java    |   2 +-
 .../component/GroupByLevelController.java          |   2 +-
 .../mpp/plan/statement/component/ResultColumn.java |   2 +-
 .../plan/statement/component/SelectComponent.java  |   2 +-
 .../statement/crud/AggregationQueryStatement.java  |   2 +-
 .../plan/statement/crud/InsertBaseStatement.java   |   2 +-
 .../crud/InsertMultiTabletsStatement.java          |   2 +-
 .../plan/statement/crud/InsertRowStatement.java    |   2 +-
 .../crud/InsertRowsOfOneDeviceStatement.java       |   2 +-
 .../plan/statement/crud/InsertRowsStatement.java   |   2 +-
 .../mpp/plan/statement/crud/InsertStatement.java   |   2 +-
 .../plan/statement/crud/InsertTabletStatement.java |   2 +-
 .../db/mpp/plan/statement/crud/QueryStatement.java |   2 +-
 .../metadata/AlterTimeSeriesStatement.java         |   2 +-
 .../statement/metadata/CountDevicesStatement.java  |   2 +-
 .../metadata/CountLevelTimeSeriesStatement.java    |   2 +-
 .../statement/metadata/CountNodesStatement.java    |   2 +-
 .../plan/statement/metadata/CountStatement.java    |   2 +-
 .../metadata/CountStorageGroupStatement.java       |   2 +-
 .../metadata/CountTimeSeriesStatement.java         |   2 +-
 .../metadata/CreateAlignedTimeSeriesStatement.java |   4 +-
 .../metadata/CreateTimeSeriesStatement.java        |   2 +-
 .../statement/metadata/SchemaFetchStatement.java   |   2 +-
 .../metadata/SetStorageGroupStatement.java         |   2 +-
 .../plan/statement/metadata/SetTTLStatement.java   |   2 +-
 .../statement/metadata/ShowDevicesStatement.java   |   2 +-
 .../mpp/plan/statement/metadata/ShowStatement.java |   2 +-
 .../metadata/ShowStorageGroupStatement.java        |   2 +-
 .../plan/statement/metadata/ShowTTLStatement.java  |   2 +-
 .../metadata/ShowTimeSeriesStatement.java          |   2 +-
 .../db/mpp/plan/statement/sys/AuthorStatement.java |   2 +-
 .../iotdb/db/protocol/influxdb/dto/IoTDBPoint.java |   4 +-
 .../db/protocol/influxdb/handler/QueryHandler.java |   2 +-
 .../influxdb/meta/InfluxDBMetaManager.java         |   6 +-
 .../db/protocol/influxdb/meta/TagInfoRecords.java  |   4 +-
 .../protocol/influxdb/sql/InfluxDBSqlVisitor.java  |   2 +-
 .../iotdb/db/protocol/mqtt/PublishHandler.java     |   2 +-
 .../db/protocol/rest/handler/ExceptionHandler.java |   4 +-
 .../handler/PhysicalPlanConstructionHandler.java   |   4 +-
 .../protocol/rest/impl/GrafanaApiServiceImpl.java  |   2 +-
 .../main/java/org/apache/iotdb/db/qp/Planner.java  |   2 +-
 .../apache/iotdb/db/qp/constant/SQLConstant.java   |   2 +-
 .../apache/iotdb/db/qp/executor/IPlanExecutor.java |   4 +-
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  |   6 +-
 .../qp/logical/crud/AggregationQueryOperator.java  |   4 +-
 .../db/qp/logical/crud/BasicFunctionOperator.java  |   4 +-
 .../db/qp/logical/crud/DeleteDataOperator.java     |   2 +-
 .../iotdb/db/qp/logical/crud/FilterOperator.java   |   4 +-
 .../iotdb/db/qp/logical/crud/FromComponent.java    |   2 +-
 .../db/qp/logical/crud/GroupByQueryOperator.java   |   2 +-
 .../iotdb/db/qp/logical/crud/InOperator.java       |   4 +-
 .../iotdb/db/qp/logical/crud/InsertOperator.java   |   2 +-
 .../iotdb/db/qp/logical/crud/LikeOperator.java     |   4 +-
 .../iotdb/db/qp/logical/crud/QueryOperator.java    |   4 +-
 .../iotdb/db/qp/logical/crud/RegexpOperator.java   |   4 +-
 .../iotdb/db/qp/logical/crud/SelectComponent.java  |   6 +-
 .../db/qp/logical/crud/SelectIntoOperator.java     |   2 +-
 .../qp/logical/sys/ActivateTemplateOperator.java   |   2 +-
 .../db/qp/logical/sys/AlterTimeSeriesOperator.java |   2 +-
 .../iotdb/db/qp/logical/sys/AuthorOperator.java    |   2 +-
 .../iotdb/db/qp/logical/sys/CountOperator.java     |   2 +-
 .../sys/CreateAlignedTimeSeriesOperator.java       |   2 +-
 .../logical/sys/CreateContinuousQueryOperator.java |   2 +-
 .../db/qp/logical/sys/CreateIndexOperator.java     |   2 +-
 .../qp/logical/sys/CreateTimeSeriesOperator.java   |   2 +-
 .../db/qp/logical/sys/CreateTriggerOperator.java   |   2 +-
 .../db/qp/logical/sys/DeletePartitionOperator.java |   2 +-
 .../qp/logical/sys/DeleteStorageGroupOperator.java |   2 +-
 .../qp/logical/sys/DeleteTimeSeriesOperator.java   |   2 +-
 .../iotdb/db/qp/logical/sys/DropIndexOperator.java |   2 +-
 .../iotdb/db/qp/logical/sys/FlushOperator.java     |   2 +-
 .../db/qp/logical/sys/SetStorageGroupOperator.java |   2 +-
 .../iotdb/db/qp/logical/sys/SetTTLOperator.java    |   2 +-
 .../db/qp/logical/sys/SetTemplateOperator.java     |   4 +-
 .../iotdb/db/qp/logical/sys/SettleOperator.java    |   2 +-
 .../db/qp/logical/sys/ShowChildNodesOperator.java  |   2 +-
 .../db/qp/logical/sys/ShowChildPathsOperator.java  |   2 +-
 .../db/qp/logical/sys/ShowDevicesOperator.java     |   2 +-
 .../db/qp/logical/sys/ShowLockInfoOperator.java    |   2 +-
 .../qp/logical/sys/ShowStorageGroupOperator.java   |   2 +-
 .../iotdb/db/qp/logical/sys/ShowTTLOperator.java   |   2 +-
 .../db/qp/logical/sys/ShowTimeSeriesOperator.java  |   2 +-
 .../iotdb/db/qp/logical/sys/UnSetTTLOperator.java  |   2 +-
 .../db/qp/logical/sys/UnsetTemplateOperator.java   |   4 +-
 .../org/apache/iotdb/db/qp/physical/BatchPlan.java |   2 +-
 .../apache/iotdb/db/qp/physical/PhysicalPlan.java  |   4 +-
 .../iotdb/db/qp/physical/crud/AggregationPlan.java |   4 +-
 .../db/qp/physical/crud/AlignByDevicePlan.java     |   2 +-
 .../db/qp/physical/crud/DeletePartitionPlan.java   |   2 +-
 .../iotdb/db/qp/physical/crud/DeletePlan.java      |   4 +-
 .../iotdb/db/qp/physical/crud/GroupByTimePlan.java |   2 +-
 .../qp/physical/crud/InsertMultiTabletsPlan.java   |   4 +-
 .../iotdb/db/qp/physical/crud/InsertPlan.java      |   2 +-
 .../iotdb/db/qp/physical/crud/InsertRowPlan.java   |   4 +-
 .../physical/crud/InsertRowsOfOneDevicePlan.java   |   4 +-
 .../iotdb/db/qp/physical/crud/InsertRowsPlan.java  |   4 +-
 .../db/qp/physical/crud/InsertTabletPlan.java      |   4 +-
 .../iotdb/db/qp/physical/crud/LastQueryPlan.java   |   2 +-
 .../iotdb/db/qp/physical/crud/QueryPlan.java       |   6 +-
 .../db/qp/physical/crud/RawDataQueryPlan.java      |   4 +-
 .../iotdb/db/qp/physical/crud/SelectIntoPlan.java  |   4 +-
 .../apache/iotdb/db/qp/physical/crud/UDAFPlan.java |   2 +-
 .../apache/iotdb/db/qp/physical/crud/UDTFPlan.java |   8 +-
 .../db/qp/physical/sys/ActivateTemplatePlan.java   |   4 +-
 .../db/qp/physical/sys/AlterTimeSeriesPlan.java    |   4 +-
 .../db/qp/physical/sys/AppendTemplatePlan.java     |   2 +-
 .../iotdb/db/qp/physical/sys/AuthorPlan.java       |   4 +-
 .../qp/physical/sys/AutoCreateDeviceMNodePlan.java |   4 +-
 .../iotdb/db/qp/physical/sys/ChangeAliasPlan.java  |   4 +-
 .../db/qp/physical/sys/ChangeTagOffsetPlan.java    |   4 +-
 .../iotdb/db/qp/physical/sys/ClearCachePlan.java   |   4 +-
 .../apache/iotdb/db/qp/physical/sys/CountPlan.java |   2 +-
 .../physical/sys/CreateAlignedTimeSeriesPlan.java  |   4 +-
 .../qp/physical/sys/CreateContinuousQueryPlan.java |   4 +-
 .../db/qp/physical/sys/CreateFunctionPlan.java     |   4 +-
 .../iotdb/db/qp/physical/sys/CreateIndexPlan.java  |   4 +-
 .../qp/physical/sys/CreateMultiTimeSeriesPlan.java |   4 +-
 .../iotdb/db/qp/physical/sys/CreatePipePlan.java   |   2 +-
 .../db/qp/physical/sys/CreatePipeSinkPlan.java     |   2 +-
 .../db/qp/physical/sys/CreateTemplatePlan.java     |   4 +-
 .../db/qp/physical/sys/CreateTimeSeriesPlan.java   |   4 +-
 .../db/qp/physical/sys/CreateTriggerPlan.java      |   4 +-
 .../iotdb/db/qp/physical/sys/DataAuthPlan.java     |   2 +-
 .../db/qp/physical/sys/DeleteStorageGroupPlan.java |   4 +-
 .../db/qp/physical/sys/DeleteTimeSeriesPlan.java   |   4 +-
 .../qp/physical/sys/DropContinuousQueryPlan.java   |   2 +-
 .../iotdb/db/qp/physical/sys/DropFunctionPlan.java |   4 +-
 .../iotdb/db/qp/physical/sys/DropIndexPlan.java    |   4 +-
 .../iotdb/db/qp/physical/sys/DropPipeSinkPlan.java |   2 +-
 .../iotdb/db/qp/physical/sys/DropTemplatePlan.java |   2 +-
 .../iotdb/db/qp/physical/sys/DropTriggerPlan.java  |   4 +-
 .../apache/iotdb/db/qp/physical/sys/FlushPlan.java |   4 +-
 .../iotdb/db/qp/physical/sys/KillQueryPlan.java    |   2 +-
 .../db/qp/physical/sys/LoadConfigurationPlan.java  |   2 +-
 .../iotdb/db/qp/physical/sys/LoadDataPlan.java     |   2 +-
 .../apache/iotdb/db/qp/physical/sys/LogPlan.java   |   2 +-
 .../apache/iotdb/db/qp/physical/sys/MNodePlan.java |   2 +-
 .../db/qp/physical/sys/MeasurementMNodePlan.java   |   2 +-
 .../apache/iotdb/db/qp/physical/sys/MergePlan.java |   4 +-
 .../iotdb/db/qp/physical/sys/OperateFilePlan.java  |   2 +-
 .../iotdb/db/qp/physical/sys/OperatePipePlan.java  |   2 +-
 .../db/qp/physical/sys/PruneTemplatePlan.java      |   2 +-
 .../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  |   8 +-
 .../iotdb/db/qp/physical/sys/SettlePlan.java       |   2 +-
 .../db/qp/physical/sys/ShowChildNodesPlan.java     |   2 +-
 .../db/qp/physical/sys/ShowChildPathsPlan.java     |   2 +-
 .../iotdb/db/qp/physical/sys/ShowDevicesPlan.java  |   4 +-
 .../iotdb/db/qp/physical/sys/ShowLockInfoPlan.java |   2 +-
 .../apache/iotdb/db/qp/physical/sys/ShowPlan.java  |   2 +-
 .../db/qp/physical/sys/ShowQueryResourcePlan.java  |   2 +-
 .../db/qp/physical/sys/ShowStorageGroupPlan.java   |   2 +-
 .../iotdb/db/qp/physical/sys/ShowTTLPlan.java      |   2 +-
 .../db/qp/physical/sys/ShowTimeSeriesPlan.java     |   4 +-
 .../db/qp/physical/sys/StartPipeServerPlan.java    |   4 +-
 .../iotdb/db/qp/physical/sys/StartTriggerPlan.java |   4 +-
 .../db/qp/physical/sys/StopPipeServerPlan.java     |   4 +-
 .../iotdb/db/qp/physical/sys/StopTriggerPlan.java  |   4 +-
 .../db/qp/physical/sys/StorageGroupMNodePlan.java  |   2 +-
 .../iotdb/db/qp/physical/sys/TracingPlan.java      |   2 +-
 .../db/qp/physical/sys/UnsetTemplatePlan.java      |   8 +-
 .../apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java    |   7 +-
 .../iotdb/db/qp/strategy/LogicalGenerator.java     |   4 +-
 .../iotdb/db/qp/strategy/PhysicalGenerator.java    |   4 +-
 .../qp/strategy/optimizer/ConcatPathOptimizer.java |  10 +-
 .../optimizer/MergeSingleFilterOptimizer.java      |   2 +-
 .../qp/strategy/optimizer/RemoveNotOptimizer.java  |   2 +-
 .../iotdb/db/qp/utils/GroupByLevelController.java  |   2 +-
 .../apache/iotdb/db/qp/utils/WildcardsRemover.java |   4 +-
 .../iotdb/db/query/context/QueryContext.java       |   2 +-
 .../db/query/control/QueryResourceManager.java     |   2 +-
 .../iotdb/db/query/control/SessionManager.java     |  64 ++---
 .../db/query/dataset/AlignByDeviceDataSet.java     |   2 +-
 .../apache/iotdb/db/query/dataset/ListDataSet.java |   2 +-
 .../db/query/dataset/NonAlignEngineDataSet.java    |   2 +-
 .../dataset/RawQueryDataSetWithValueFilter.java    |   2 +-
 .../dataset/RawQueryDataSetWithoutValueFilter.java |   2 +-
 .../query/dataset/ShowContinuousQueriesResult.java |   2 +-
 .../apache/iotdb/db/query/dataset/ShowDataSet.java |   2 +-
 .../iotdb/db/query/dataset/ShowDevicesDataSet.java |   4 +-
 .../db/query/dataset/ShowTimeseriesDataSet.java    |   4 +-
 .../iotdb/db/query/dataset/SingleDataSet.java      |   2 +-
 .../apache/iotdb/db/query/dataset/UDTFDataSet.java |   2 +-
 .../query/dataset/groupby/GroupByLevelDataSet.java |   4 +-
 .../groupby/GroupByWithValueFilterDataSet.java     |   2 +-
 .../groupby/GroupByWithoutValueFilterDataSet.java  |   2 +-
 .../db/query/executor/AggregationExecutor.java     |   2 +-
 .../iotdb/db/query/executor/FillQueryExecutor.java |   2 +-
 .../iotdb/db/query/executor/LastQueryExecutor.java |   4 +-
 .../db/query/executor/RawDataQueryExecutor.java    |   2 +-
 .../executor/fill/AlignedLastPointReader.java      |   2 +-
 .../apache/iotdb/db/query/executor/fill/IFill.java |   2 +-
 .../db/query/executor/fill/LastPointReader.java    |   2 +-
 .../iotdb/db/query/executor/fill/LinearFill.java   |   2 +-
 .../iotdb/db/query/executor/fill/PreviousFill.java |   2 +-
 .../iotdb/db/query/executor/fill/ValueFill.java    |   2 +-
 .../groupby/impl/LocalAlignedGroupByExecutor.java  |   2 +-
 .../groupby/impl/LocalGroupByExecutor.java         |   2 +-
 .../iotdb/db/query/expression/Expression.java      |   6 +-
 .../iotdb/db/query/expression/ExpressionType.java  |   4 +-
 .../iotdb/db/query/expression/ResultColumn.java    |   2 +-
 .../query/expression/binary/BinaryExpression.java  |   2 +-
 .../db/query/expression/leaf/ConstantOperand.java  |   2 +-
 .../query/expression/leaf/TimeSeriesOperand.java   |   6 +-
 ...imeSeriesOperand.java => TimestampOperand.java} |  69 ++---
 .../query/expression/multi/FunctionExpression.java |   4 +-
 .../db/query/expression/unary/UnaryExpression.java |   2 +-
 .../chunk/metadata/DiskChunkMetadataLoader.java    |   2 +-
 .../metadata/MemAlignedChunkMetadataLoader.java    |   2 +-
 .../chunk/metadata/MemChunkMetadataLoader.java     |   2 +-
 .../query/reader/series/AlignedSeriesReader.java   |   2 +-
 .../query/reader/series/SeriesAggregateReader.java |   2 +-
 .../reader/series/SeriesRawDataBatchReader.java    |   2 +-
 .../iotdb/db/query/reader/series/SeriesReader.java |   2 +-
 .../reader/series/SeriesReaderByTimestamp.java     |   2 +-
 .../query/timegenerator/ServerTimeGenerator.java   |   2 +-
 .../parameter/UDFParameterValidator.java           |   2 +-
 .../api/customizer/parameter/UDFParameters.java    |   4 +-
 .../apache/iotdb/db/query/udf/builtin/UDTFAbs.java |   2 +-
 .../iotdb/db/query/udf/builtin/UDTFCast.java       |   2 +-
 .../query/udf/builtin/UDTFContinuouslySatisfy.java |   2 +-
 .../iotdb/db/query/udf/builtin/UDTFDerivative.java |   2 +-
 .../udf/builtin/UDTFEqualSizeBucketAggSample.java  |   2 +-
 .../builtin/UDTFEqualSizeBucketOutlierSample.java  |   2 +-
 .../udf/builtin/UDTFEqualSizeBucketSample.java     |   2 +-
 .../iotdb/db/query/udf/builtin/UDTFInRange.java    |   2 +-
 .../iotdb/db/query/udf/builtin/UDTFMath.java       |   2 +-
 .../iotdb/db/query/udf/builtin/UDTFOnOff.java      |   2 +-
 .../iotdb/db/query/udf/builtin/UDTFSelectK.java    |   2 +-
 .../db/query/udf/builtin/UDTFValueDifference.java  |   2 +-
 .../query/udf/core/layer/RawQueryInputLayer.java   | 139 +++++++--
 .../org/apache/iotdb/db/service/SettleService.java |   4 +-
 .../iotdb/db/service/basic/ServiceProvider.java    |   2 +-
 .../service/thrift/impl/InfluxDBServiceImpl.java   |   4 +-
 .../service/thrift/impl/InternalServiceImpl.java   |   6 +-
 .../db/service/thrift/impl/TSServiceImpl.java      |   6 +-
 .../iotdb/db/sync/pipedata/DeletionPipeData.java   |   2 +-
 .../apache/iotdb/db/sync/pipedata/PipeData.java    |   2 +-
 .../iotdb/db/sync/pipedata/SchemaPipeData.java     |   2 +-
 .../sync/pipedata/queue/BufferedPipeDataQueue.java |   2 +-
 .../iotdb/db/sync/receiver/ReceiverService.java    |   2 +-
 .../iotdb/db/sync/receiver/load/SchemaLoader.java  |   2 +-
 .../db/sync/sender/manager/SchemaSyncManager.java  |   4 +-
 .../db/sync/sender/manager/TsFileSyncManager.java  |   2 +-
 .../iotdb/db/sync/sender/pipe/TsFilePipe.java      |   4 +-
 .../transport/server/TransportServiceImpl.java     |   2 +-
 .../apache/iotdb/db/tools/TsFileRewriteTool.java   |   4 +-
 .../java/org/apache/iotdb/db/tools/WalChecker.java |   2 +-
 .../db/tools/dataregion/DeviceMappingViewer.java   |   4 +-
 .../apache/iotdb/db/tools/schema/MLogParser.java   |   2 +-
 .../db/tools/schema/SchemaFileSketchTool.java      |   2 +-
 .../db/tools/settle/TsFileAndModSettleTool.java    |   2 +-
 .../db/tools/upgrade/TsFileOnlineUpgradeTool.java  |   2 +-
 .../org/apache/iotdb/db/utils/FileLoaderUtils.java |   2 +-
 .../org/apache/iotdb/db/utils/SchemaUtils.java     |   6 +-
 .../iotdb/db/utils/writelog/BatchLogReader.java    |   2 +-
 .../org/apache/iotdb/db/wal/buffer/WALEntry.java   |   2 +-
 .../java/org/apache/iotdb/db/wal/io/WALReader.java |   2 +-
 .../java/org/apache/iotdb/db/wal/node/WALNode.java |   4 +-
 .../db/wal/recover/file/TsFilePlanRedoer.java      |   4 +-
 .../apache/iotdb/db/auth/AuthorityCheckerTest.java |   4 +-
 .../iotdb/db/engine/MetadataManagerHelper.java     |   2 +-
 .../iotdb/db/engine/cache/ChunkCacheTest.java      |   4 +-
 .../engine/compaction/AbstractCompactionTest.java  |   4 +-
 .../engine/compaction/CompactionSchedulerTest.java |   4 +-
 .../ReadPointCompactionPerformerTest.java          |   6 +-
 .../compaction/TestUtilsForAlignedSeries.java      |   4 +-
 .../cross/CrossSpaceCompactionExceptionTest.java   |   2 +-
 .../compaction/cross/CrossSpaceCompactionTest.java |   4 +-
 .../db/engine/compaction/cross/MergeTest.java      |   4 +-
 .../RewriteCrossSpaceCompactionRecoverTest.java    |   2 +-
 .../cross/RewriteCrossSpaceCompactionTest.java     |   6 +-
 .../inner/AbstractInnerSpaceCompactionTest.java    |   4 +-
 .../inner/InnerCompactionMoreDataTest.java         |   4 +-
 .../inner/InnerCompactionSchedulerTest.java        |   2 +-
 .../compaction/inner/InnerCompactionTest.java      |   4 +-
 .../compaction/inner/InnerSeqCompactionTest.java   |   6 +-
 .../compaction/inner/InnerUnseqCompactionTest.java |   4 +-
 .../ReadChunkCompactionPerformerAlignedTest.java   |   2 +-
 .../ReadChunkCompactionPerformerNoAlignedTest.java |   4 +-
 .../inner/ReadChunkCompactionPerformerOldTest.java |   2 +-
 .../SizeTieredCompactionRecoverTest.java           |   2 +-
 .../inner/sizetiered/SizeTieredCompactionTest.java |   4 +-
 ...eCrossSpaceCompactionRecoverCompatibleTest.java |   4 +-
 .../SizeTieredCompactionRecoverCompatibleTest.java |   2 +-
 .../recover/SizeTieredCompactionRecoverTest.java   |   4 +-
 .../compaction/utils/CompactionCheckerUtils.java   |   4 +-
 .../utils/CompactionFileGeneratorUtils.java        |   4 +-
 .../db/engine/memtable/MemTableFlushTaskTest.java  |   2 +-
 .../db/engine/memtable/MemTableTestUtils.java      |   4 +-
 .../db/engine/memtable/MemtableBenchmark.java      |   4 +-
 .../db/engine/memtable/PrimitiveMemTableTest.java  |   6 +-
 .../engine/modification/DeletionFileNodeTest.java  |   4 +-
 .../db/engine/modification/DeletionQueryTest.java  |   4 +-
 .../engine/modification/ModificationFileTest.java  |   2 +-
 .../io/LocalTextModificationAccessorTest.java      |   2 +-
 .../db/engine/storagegroup/DataRegionTest.java     |   6 +-
 .../storagegroup/FileNodeManagerBenchmark.java     |   4 +-
 .../storagegroup/StorageGroupProcessorTest.java    |   6 +-
 .../iotdb/db/engine/storagegroup/TTLTest.java      |   6 +-
 .../db/engine/storagegroup/TsFileManagerTest.java  |   2 +-
 .../engine/storagegroup/TsFileProcessorTest.java   |   6 +-
 .../engine/storagegroup/TsFileProcessorV2Test.java |   6 +-
 .../dataregion/HashVirtualPartitionerTest.java     |   4 +-
 .../apache/iotdb/db/metadata/MetaUtilsTest.java    |  45 +--
 .../apache/iotdb/db/metadata/PartialPathTest.java  |   4 +-
 .../iotdb/db/metadata/SchemaAdvancedTest.java      |   4 +-
 .../apache/iotdb/db/metadata/SchemaBasicTest.java  |   6 +-
 .../iotdb/db/metadata/SchemaImproveTest.java       |   6 +-
 .../org/apache/iotdb/db/metadata/TemplateTest.java |   6 +-
 .../db/metadata/cache/DataNodeSchemaCacheTest.java |   4 +-
 .../db/metadata/idtable/IDTableFlushTimeTest.java  |   6 +-
 .../db/metadata/idtable/IDTableLogFileTest.java    |   2 +-
 .../db/metadata/idtable/IDTableRecoverTest.java    |   4 +-
 .../idtable/IDTableResourceControlTest.java        |   6 +-
 .../db/metadata/idtable/IDTableRestartTest.java    |   4 +-
 .../iotdb/db/metadata/idtable/IDTableTest.java     |   4 +-
 .../db/metadata/idtable/InsertWithIDTableTest.java |   6 +-
 .../db/metadata/idtable/LastQueryWithIDTable.java  |   6 +-
 .../QueryAlignedTimeseriesWithIDTableTest.java     |   6 +-
 .../db/metadata/idtable/QueryWithIDTableTest.java  |   6 +-
 .../db/metadata/idtable/entry/DeviceIDTest.java    |   4 +-
 .../db/metadata/idtable/entry/SchemaEntryTest.java |   2 +-
 .../iotdb/db/metadata/mtree/MTreeAboveSGTest.java  |  53 +++-
 .../iotdb/db/metadata/mtree/MTreeBelowSGTest.java  |   4 +-
 .../db/metadata/mtree/disk/MemManagerTest.java     |   2 +-
 .../metadata/mtree/schemafile/RecordUtilTests.java |   2 +-
 .../metadata/mtree/schemafile/SchemaFileTest.java  |   8 +-
 .../metadata/mtree/schemafile/SchemaPageTest.java  |   3 +-
 .../db/metadata/mtree/schemafile/SegmentTest.java  |   2 +-
 .../db/metadata/upgrade/MetadataUpgradeTest.java   |   4 +-
 .../mpp/common/schematree/PathPatternTreeTest.java |   4 +-
 .../db/mpp/common/schematree/SchemaTreeTest.java   |   4 +-
 .../iotdb/db/mpp/execution/DataDriverTest.java     |   6 +-
 .../operator/AlignedSeriesScanOperatorTest.java    | 314 ++++++++++++++++++++-
 .../execution/operator/AlignedSeriesTestUtil.java  |   4 +-
 .../execution/operator/DeviceViewOperatorTest.java |   4 +-
 .../mpp/execution/operator/LimitOperatorTest.java  |   4 +-
 .../mpp/execution/operator/OffsetOperatorTest.java |   4 +-
 .../operator/SeriesAggregateScanOperatorTest.java  |   4 +-
 .../execution/operator/SeriesScanOperatorTest.java |   4 +-
 .../execution/operator/TimeJoinOperatorTest.java   |   4 +-
 .../operator/schema/CountMergeOperatorTest.java    |   4 +-
 .../operator/schema/SchemaCountOperatorTest.java   |   4 +-
 .../operator/schema/SchemaFetchOperatorTest.java   |   2 +-
 .../operator/schema/SchemaScanOperatorTest.java    |   4 +-
 .../db/mpp/plan/parser/StatementGeneratorTest.java |   2 +-
 .../db/mpp/plan/plan/DistributionPlannerTest.java  |   4 +-
 .../mpp/plan/plan/FragmentInstanceSerdeTest.java   |   2 +-
 .../iotdb/db/mpp/plan/plan/LogicalPlannerTest.java |   4 +-
 .../db/mpp/plan/plan/QueryLogicalPlanUtil.java     |   2 +-
 .../plan/plan/node/PlanNodeDeserializeHelper.java  |   2 +-
 .../read/DeviceSchemaScanNodeSerdeTest.java        |   4 +-
 .../metadata/read/SchemaCountNodeSerdeTest.java    |   4 +-
 .../read/TimeSeriesSchemaScanNodeSerdeTest.java    |   4 +-
 .../node/process/AggregationNodeSerdeTest.java     |   4 +-
 .../plan/node/process/DeviceViewNodeSerdeTest.java |   2 +-
 .../plan/node/process/ExchangeNodeSerdeTest.java   |   2 +-
 .../plan/plan/node/process/FillNodeSerdeTest.java  |   4 +-
 .../plan/node/process/FilterNodeSerdeTest.java     |   4 +-
 .../plan/node/process/FilterNullNodeSerdeTest.java |   4 +-
 .../node/process/GroupByLevelNodeSerdeTest.java    |   4 +-
 .../plan/plan/node/process/LimitNodeSerdeTest.java |   2 +-
 .../plan/node/process/OffsetNodeSerdeTest.java     |   2 +-
 .../plan/plan/node/process/SortNodeSerdeTest.java  |   2 +-
 .../plan/node/process/TimeJoinNodeSerdeTest.java   |   2 +-
 .../plan/node/sink/FragmentSinkNodeSerdeTest.java  |   4 +-
 .../source/SeriesAggregationScanNodeSerdeTest.java |   4 +-
 .../plan/node/source/SeriesScanNodeSerdeTest.java  |   2 +-
 .../write/InsertMultiTabletsNodeSerdeTest.java     |   4 +-
 .../plan/node/write/InsertRowNodeSerdeTest.java    |   4 +-
 .../plan/node/write/InsertRowsNodeSerdeTest.java   |   4 +-
 .../write/InsertRowsOfOneDeviceNodeSerdeTest.java  |   4 +-
 .../plan/node/write/InsertTabletNodeSerdeTest.java |   4 +-
 .../plan/node/write/WritePlanNodeSplitTest.java    |   4 +-
 .../java/org/apache/iotdb/db/qp/PlannerTest.java   |   6 +-
 .../iotdb/db/qp/logical/LogicalPlanSmallTest.java  |   4 +-
 .../iotdb/db/qp/other/TSPlanContextAuthorTest.java |   2 +-
 .../iotdb/db/qp/physical/ConcatOptimizerTest.java  |   4 +-
 .../iotdb/db/qp/physical/InsertRowPlanTest.java    |   6 +-
 .../qp/physical/InsertRowsOfOneDevicePlanTest.java |   4 +-
 .../db/qp/physical/InsertTabletMultiPlanTest.java  |   4 +-
 .../iotdb/db/qp/physical/InsertTabletPlanTest.java |   6 +-
 .../db/qp/physical/PhysicalPlanSerializeTest.java  |   4 +-
 .../iotdb/db/qp/physical/PhysicalPlanTest.java     |   6 +-
 .../iotdb/db/qp/physical/SerializationTest.java    |   6 +-
 .../iotdb/db/qp/physical/SerializedSizeTest.java   |   4 +-
 .../iotdb/db/query/dataset/ListDataSetTest.java    |   2 +-
 .../iotdb/db/query/dataset/SingleDataSetTest.java  |   2 +-
 .../query/dataset/UDTFAlignByTimeDataSetTest.java  |   4 +-
 .../reader/series/SeriesAggregateReaderTest.java   |   2 +-
 .../reader/series/SeriesReaderByTimestampTest.java |   2 +-
 .../db/query/reader/series/SeriesReaderTest.java   |   6 +-
 .../query/reader/series/SeriesReaderTestUtil.java  |   4 +-
 .../iotdb/db/rescon/ResourceManagerTest.java       |   4 +-
 .../iotdb/db/service/InternalServiceImplTest.java  |   4 +-
 .../org/apache/iotdb/db/sink/MQTTSinkTest.java     |   2 +-
 .../sync/pipedata/BufferedPipeDataQueueTest.java   |   2 +-
 .../iotdb/db/sync/pipedata/PipeDataTest.java       |   2 +-
 .../db/sync/transport/TransportServiceTest.java    |   2 +-
 .../org/apache/iotdb/db/tools/MLogParserTest.java  |   4 +-
 .../iotdb/db/tools/SchemaFileSketchTest.java       |   2 +-
 .../iotdb/db/tools/TsFileAndModSettleToolTest.java |   4 +-
 .../org/apache/iotdb/db/tools/WalCheckerTest.java  |   2 +-
 .../org/apache/iotdb/db/utils/MemUtilsTest.java    |   4 +-
 .../org/apache/iotdb/db/utils/SchemaTestUtils.java |   4 +-
 .../org/apache/iotdb/db/utils/SchemaUtilsTest.java |   4 +-
 .../iotdb/db/utils/TsFileRewriteToolTest.java      |   4 +-
 .../db/utils/writelog/LogWriterReaderTest.java     |   4 +-
 .../db/utils/writelog/MultiFileLogReaderTest.java  |   4 +-
 .../org/apache/iotdb/db/wal/WALManagerTest.java    |   4 +-
 .../iotdb/db/wal/buffer/WALBufferCommonTest.java   |   4 +-
 .../org/apache/iotdb/db/wal/io/WALFileTest.java    |   4 +-
 .../org/apache/iotdb/db/wal/node/WALNodeTest.java  |   4 +-
 .../db/wal/recover/WALRecoverManagerTest.java      |   6 +-
 .../db/wal/recover/file/TsFilePlanRedoerTest.java  |   2 +-
 .../file/UnsealedTsFileRecoverPerformerTest.java   |   2 +-
 .../org/apache/iotdb/rpc/IoTDBJDBCDataSet.java     |   3 +-
 752 files changed, 2163 insertions(+), 1467 deletions(-)
 rename {server/src/main/java/org/apache/iotdb/db/exception/metadata => node-commons/src/main/java/org/apache/iotdb/commons/exception}/IllegalPathException.java (96%)
 rename {server/src/main/java/org/apache/iotdb/db/exception/metadata => node-commons/src/main/java/org/apache/iotdb/commons/exception}/MetadataException.java (95%)
 rename {server/src/main/java/org/apache/iotdb/db/metadata => node-commons/src/main/java/org/apache/iotdb/commons}/path/PartialPath.java (97%)
 copy server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/IDeviceID.java => node-commons/src/main/java/org/apache/iotdb/commons/path/PathType.java (72%)
 create mode 100644 node-commons/src/main/java/org/apache/iotdb/commons/utils/PathUtils.java
 copy server/src/main/java/org/apache/iotdb/db/query/expression/leaf/{TimeSeriesOperand.java => TimestampOperand.java} (70%)


[iotdb] 01/01: resolve conflicts and add desc test

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 32982622f75552811cf8b2e817b1f1b248f7919b
Merge: dcbdecbca5 b090698af2
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Wed May 4 16:56:19 2022 +0800

    resolve conflicts and add desc test

 README.md                                          |  14 +
 README_ZH.md                                       |  13 +
 .../cluster/client/sync/SyncClientAdaptor.java     |   2 +-
 .../iotdb/cluster/coordinator/Coordinator.java     |   6 +-
 .../cluster/log/applier/AsyncDataLogApplier.java   |   4 +-
 .../iotdb/cluster/log/applier/BaseApplier.java     |   4 +-
 .../iotdb/cluster/log/applier/DataLogApplier.java  |   2 +-
 .../cluster/log/logtypes/PhysicalPlanLog.java      |   2 +-
 .../manage/FilePartitionedSnapshotLogManager.java  |   2 +-
 .../log/manage/MetaSingleSnapshotLogManager.java   |   2 +-
 .../log/manage/PartitionedSnapshotLogManager.java  |   2 +-
 .../iotdb/cluster/log/snapshot/FileSnapshot.java   |   4 +-
 .../cluster/log/snapshot/MetaSimpleSnapshot.java   |   6 +-
 .../iotdb/cluster/metadata/CSchemaProcessor.java   |   6 +-
 .../apache/iotdb/cluster/metadata/MetaPuller.java  |   4 +-
 .../iotdb/cluster/partition/PartitionTable.java    |   4 +-
 .../cluster/query/ClusterDataQueryExecutor.java    |   2 +-
 .../cluster/query/ClusterPhysicalGenerator.java    |   4 +-
 .../iotdb/cluster/query/ClusterPlanExecutor.java   |   4 +-
 .../iotdb/cluster/query/ClusterPlanRouter.java     |   4 +-
 .../iotdb/cluster/query/LocalQueryExecutor.java    |   6 +-
 .../query/aggregate/ClusterAggregateExecutor.java  |   2 +-
 .../cluster/query/aggregate/ClusterAggregator.java |   2 +-
 .../cluster/query/fill/ClusterFillExecutor.java    |   2 +-
 .../cluster/query/fill/ClusterPreviousFill.java    |   2 +-
 .../cluster/query/fill/PreviousFillArguments.java  |   2 +-
 .../groupby/ClusterGroupByNoVFilterDataSet.java    |   2 +-
 .../groupby/ClusterGroupByVFilterDataSet.java      |   2 +-
 .../query/groupby/MergeGroupByExecutor.java        |   2 +-
 .../query/last/ClusterLastQueryExecutor.java       |   2 +-
 .../cluster/query/reader/ClusterReaderFactory.java |   2 +-
 .../cluster/query/reader/ClusterTimeGenerator.java |   2 +-
 .../query/reader/mult/MultDataSourceInfo.java      |   2 +-
 .../handlers/caller/ShowTimeSeriesHandler.java     |   4 +-
 .../cluster/server/member/DataGroupMember.java     |   6 +-
 .../cluster/server/member/MetaGroupMember.java     |   4 +-
 .../iotdb/cluster/server/member/RaftMember.java    |   2 +-
 .../cluster/server/service/DataAsyncService.java   |   4 +-
 .../cluster/server/service/DataSyncService.java    |   4 +-
 .../iotdb/cluster/utils/ClusterQueryUtils.java     |   6 +-
 .../apache/iotdb/cluster/utils/ClusterUtils.java   |   4 +-
 .../cluster/utils/nodetool/ClusterMonitor.java     |   4 +-
 .../cluster/client/sync/SyncClientAdaptorTest.java |   4 +-
 .../org/apache/iotdb/cluster/common/IoTDBTest.java |   6 +-
 .../iotdb/cluster/common/TestAsyncDataClient.java  |   2 +-
 .../iotdb/cluster/common/TestLogApplier.java       |   4 +-
 .../org/apache/iotdb/cluster/common/TestUtils.java |   4 +-
 .../apache/iotdb/cluster/log/LogParserTest.java    |   4 +-
 .../log/applier/AsyncDataLogApplierTest.java       |   4 +-
 .../cluster/log/applier/DataLogApplierTest.java    |   6 +-
 .../cluster/log/applier/MetaLogApplierTest.java    |   4 +-
 .../cluster/log/logtypes/SerializeLogTest.java     |   4 +-
 .../FilePartitionedSnapshotLogManagerTest.java     |   2 +-
 .../manage/MetaSingleSnapshotLogManagerTest.java   |   4 +-
 .../cluster/log/snapshot/DataSnapshotTest.java     |   4 +-
 .../cluster/log/snapshot/FileSnapshotTest.java     |   4 +-
 .../log/snapshot/MetaSimpleSnapshotTest.java       |   4 +-
 .../log/snapshot/PartitionedSnapshotTest.java      |   4 +-
 .../cluster/log/snapshot/PullSnapshotTaskTest.java |   6 +-
 .../cluster/partition/SlotPartitionTableTest.java  |   6 +-
 .../apache/iotdb/cluster/query/BaseQueryTest.java  |   2 +-
 .../query/ClusterAggregateExecutorTest.java        |   4 +-
 .../query/ClusterDataQueryExecutorTest.java        |   4 +-
 .../query/ClusterPhysicalGeneratorTest.java        |   4 +-
 .../cluster/query/ClusterPlanExecutorTest.java     |   4 +-
 .../cluster/query/ClusterQueryRouterTest.java      |   4 +-
 .../query/fill/ClusterFillExecutorTest.java        |   2 +-
 .../ClusterGroupByNoVFilterDataSetTest.java        |   4 +-
 .../groupby/ClusterGroupByVFilterDataSetTest.java  |   4 +-
 .../query/groupby/MergeGroupByExecutorTest.java    |   4 +-
 .../query/groupby/RemoteGroupByExecutorTest.java   |   4 +-
 .../query/last/ClusterLastQueryExecutorTest.java   |   2 +-
 .../query/reader/ClusterReaderFactoryTest.java     |   4 +-
 .../query/reader/ClusterTimeGeneratorTest.java     |   4 +-
 .../mult/AssignPathManagedMergeReaderTest.java     |   4 +-
 .../mult/MultSeriesRawDataPointReaderTest.java     |   2 +-
 .../reader/mult/RemoteMultSeriesReaderTest.java    |   4 +-
 .../server/clusterinfo/ClusterInfoServerTest.java  |   2 +-
 .../clusterinfo/ClusterInfoServiceImplTest.java    |   4 +-
 .../handlers/forwarder/ForwardPlanHandlerTest.java |   4 +-
 .../iotdb/cluster/server/member/BaseMember.java    |   4 +-
 .../cluster/server/member/DataGroupMemberTest.java |   4 +-
 .../cluster/server/member/MetaGroupMemberTest.java |   6 +-
 .../iotdb/cluster/utils/SerializeUtilTest.java     |   4 +-
 .../confignode/persistence/ClusterSchemaInfo.java  |   6 +-
 .../thrift/ConfigNodeRPCServiceProcessorTest.java  |   4 +-
 .../iotdb/consensus/ratis/RatisConsensus.java      |  75 +++--
 docs/Development/ContributeGuide.md                |  18 +-
 .../Administration-Management/Administration.md    |   2 +-
 docs/UserGuide/Process-Data/Triggers.md            |   2 +-
 .../Administration-Management/Administration.md    |   2 +-
 docs/zh/UserGuide/Process-Data/Triggers.md         |   2 +-
 .../org/apache/iotdb/trigger/TriggerExample.java   |   2 +-
 .../iotdb/db/integration/IoTDBArithmeticIT.java    |   4 +-
 .../iotdb/db/integration/IoTDBAuthorizationIT.java |  32 ++-
 .../db/integration/IoTDBContinuousQueryIT.java     |   4 +-
 .../db/integration/IoTDBEngineTimeGeneratorIT.java |   4 +-
 .../iotdb/db/integration/IoTDBFilePathUtilsIT.java |   4 +-
 .../apache/iotdb/db/integration/IoTDBLastIT.java   |   2 +-
 ...IoTDBLoadExternalTsFileWithTimePartitionIT.java |   4 +-
 .../db/integration/IoTDBLoadExternalTsfileIT.java  |   4 +-
 .../integration/IoTDBManageTsFileResourceIT.java   |   4 +-
 .../iotdb/db/integration/IoTDBNestedQueryIT.java   |  33 ++-
 .../db/integration/IoTDBNewTsFileCompactionIT.java |   2 +-
 .../db/integration/IoTDBRemovePartitionIT.java     |   4 +-
 .../iotdb/db/integration/IoTDBSelectIntoIT.java    |   4 +-
 .../db/integration/IoTDBSequenceDataQueryIT.java   |   4 +-
 .../iotdb/db/integration/IoTDBSeriesReaderIT.java  |   4 +-
 .../iotdb/db/integration/IoTDBSimpleQueryIT.java   |   4 +-
 .../db/integration/IoTDBTriggerExecutionIT.java    |   4 +-
 .../db/integration/IoTDBTriggerManagementIT.java   |   2 +-
 .../iotdb/db/integration/IoTDBUDFManagementIT.java |   2 +-
 .../aligned/IoTDBLoadExternalAlignedTsFileIT.java  |   4 +-
 .../sync/IoTDBSyncReceiverCollectorIT.java         |   2 +-
 .../db/integration/sync/IoTDBSyncReceiverIT.java   |   2 +-
 .../sync/IoTDBSyncReceiverLoaderIT.java            |   2 +-
 .../db/integration/sync/IoTDBSyncSenderIT.java     |   2 +-
 .../apache/iotdb/session/IoTDBSessionSimpleIT.java |   4 +-
 .../apache/iotdb/session/template/TemplateUT.java  |   2 +-
 node-commons/pom.xml                               |  10 +
 .../commons/exception}/IllegalPathException.java   |   2 +-
 .../commons/exception}/MetadataException.java      |   3 +-
 .../apache/iotdb/commons}/path/PartialPath.java    |  12 +-
 .../org/apache/iotdb/commons/path/PathType.java    |  20 +-
 .../org/apache/iotdb/commons/utils/PathUtils.java  |  98 +++++++
 pom.xml                                            |  13 +-
 .../rocksdb/RSchemaReadWriteHandler.java           |   4 +-
 .../schemaregion/rocksdb/RSchemaRegion.java        |  10 +-
 .../schemaregion/rocksdb/RSchemaUtils.java         |   8 +-
 .../schemaregion/rocksdb/mnode/REntityMNode.java   |   2 +-
 .../schemaregion/rocksdb/mnode/RInternalMNode.java |   2 +-
 .../schemaregion/rocksdb/mnode/RMNode.java         |   6 +-
 .../rocksdb/mnode/RMeasurementMNode.java           |   2 +-
 .../rocksdb/mnode/RStorageGroupMNode.java          |   2 +-
 .../org/apache/iotdb/db/auth/AuthorityChecker.java |   2 +-
 .../iotdb/db/auth/authorizer/BasicAuthorizer.java  |  14 +
 .../org/apache/iotdb/db/engine/StorageEngine.java  |   6 +-
 .../apache/iotdb/db/engine/StorageEngineV2.java    |   2 +-
 .../RewriteCrossSpaceCompactionResource.java       |   2 +-
 .../rewrite/task/ReadPointPerformerSubTask.java    |   2 +-
 .../inner/utils/MultiTsFileDeviceIterator.java     |   4 +-
 .../utils/SingleSeriesCompactionExecutor.java      |   2 +-
 .../compaction/performer/ICompactionPerformer.java |   2 +-
 .../impl/ReadChunkCompactionPerformer.java         |   4 +-
 .../impl/ReadPointCompactionPerformer.java         |   6 +-
 .../engine/cq/ContinuousQuerySchemaCheckTask.java  |   4 +-
 .../iotdb/db/engine/cq/ContinuousQueryTask.java    |   6 +-
 .../iotdb/db/engine/memtable/AbstractMemTable.java |   2 +-
 .../memtable/AlignedWritableMemChunkGroup.java     |   2 +-
 .../apache/iotdb/db/engine/memtable/IMemTable.java |   4 +-
 .../db/engine/memtable/IWritableMemChunkGroup.java |   2 +-
 .../db/engine/memtable/WritableMemChunkGroup.java  |   2 +-
 .../iotdb/db/engine/modification/Deletion.java     |   4 +-
 .../iotdb/db/engine/modification/Modification.java |   2 +-
 .../io/LocalTextModificationAccessor.java          |   4 +-
 .../selectinto/InsertTabletPlanGenerator.java      |   4 +-
 .../selectinto/InsertTabletPlansIterator.java      |   4 +-
 .../apache/iotdb/db/engine/settle/SettleTask.java  |   2 +-
 .../iotdb/db/engine/storagegroup/DataRegion.java   |   6 +-
 .../db/engine/storagegroup/TsFileProcessor.java    |   6 +-
 .../db/engine/storagegroup/TsFileResource.java     |   2 +-
 .../dataregion/HashVirtualPartitioner.java         |   2 +-
 .../dataregion/StorageGroupManager.java            |   2 +-
 .../dataregion/VirtualPartitioner.java             |   2 +-
 .../service/TriggerRegistrationInformation.java    |   2 +-
 .../service/TriggerRegistrationService.java        |   4 +-
 .../sink/local/LocalIoTDBConfiguration.java        |   4 +-
 .../trigger/sink/local/LocalIoTDBHandler.java      |   4 +-
 .../trigger/sink/mqtt/MQTTConfiguration.java       |   2 +-
 .../metadata/AcquireLockTimeoutException.java      |   2 +
 .../metadata/AliasAlreadyExistException.java       |   1 +
 .../metadata/AlignedTimeseriesException.java       |   1 +
 .../metadata/DataTypeMismatchException.java        |   1 +
 .../exception/metadata/DeleteFailedException.java  |   1 +
 .../metadata/IllegalParameterOfPathException.java  |   1 +
 .../metadata/MNodeTypeMismatchException.java       |   1 +
 .../metadata/PathAlreadyExistException.java        |   1 +
 .../exception/metadata/PathNotExistException.java  |   1 +
 .../SchemaDirCreationFailureException.java         |   2 +
 .../metadata/SeriesOverflowException.java          |   1 +
 .../metadata/StorageGroupAlreadySetException.java  |   1 +
 .../metadata/StorageGroupNotSetException.java      |   1 +
 .../metadata/cache/MNodeNotCachedException.java    |   2 +-
 .../metadata/cache/MNodeNotPinnedException.java    |   2 +-
 .../schemafile/RecordDuplicatedException.java      |   2 +-
 .../metadata/schemafile/SchemaFileNotExists.java   |   2 +-
 .../schemafile/SchemaPageOverflowException.java    |   2 +-
 .../schemafile/SegmentNotFoundException.java       |   2 +-
 .../schemafile/SegmentOverflowException.java       |   2 +-
 .../template/DifferentTemplateException.java       |   2 +-
 .../template/DuplicatedTemplateException.java      |   2 +-
 .../template/NoTemplateOnMNodeException.java       |   2 +-
 .../template/TemplateImcompatibeException.java     |   2 +-
 .../template/TemplateIsInUseException.java         |   2 +-
 .../template/UndefinedTemplateException.java       |   2 +-
 .../iotdb/db/localconfignode/LocalConfigNode.java  |   4 +-
 .../localconfignode/LocalDataPartitionTable.java   |   2 +-
 .../localconfignode/LocalSchemaPartitionTable.java |   4 +-
 .../iotdb/db/metadata/LocalSchemaProcessor.java    |   4 +-
 .../apache/iotdb/db/metadata/MetadataConstant.java |   2 +-
 .../db/metadata/cache/DataNodeSchemaCache.java     |   4 +-
 .../idtable/AppendOnlyDiskSchemaManager.java       |   2 +-
 .../apache/iotdb/db/metadata/idtable/IDTable.java  |   4 +-
 .../db/metadata/idtable/IDTableHashmapImpl.java    |   4 +-
 .../iotdb/db/metadata/idtable/IDTableManager.java  |   4 +-
 .../db/metadata/idtable/entry/DeviceIDFactory.java |   2 +-
 .../idtable/entry/InsertMeasurementMNode.java      |   2 +-
 .../db/metadata/idtable/entry/SchemaEntry.java     |   2 +-
 .../db/metadata/idtable/entry/TimeseriesID.java    |   2 +-
 .../db/metadata/lastCache/LastCacheManager.java    |   2 +-
 .../iotdb/db/metadata/logfile/MLogWriter.java      |   2 +-
 .../org/apache/iotdb/db/metadata/mnode/IMNode.java |   2 +-
 .../org/apache/iotdb/db/metadata/mnode/MNode.java  |   2 +-
 .../iotdb/db/metadata/mtree/IMTreeBelowSG.java     |   4 +-
 .../iotdb/db/metadata/mtree/MTreeAboveSG.java      |  92 +++++-
 .../db/metadata/mtree/MTreeBelowSGCachedImpl.java  |  12 +-
 .../db/metadata/mtree/MTreeBelowSGMemoryImpl.java  |  12 +-
 .../db/metadata/mtree/store/CachedMTreeStore.java  |   4 +-
 .../iotdb/db/metadata/mtree/store/IMTreeStore.java |   2 +-
 .../db/metadata/mtree/store/MemMTreeStore.java     |   2 +-
 .../mtree/store/disk/schemafile/ISchemaFile.java   |   2 +-
 .../mtree/store/disk/schemafile/ISchemaPage.java   |   2 +-
 .../mtree/store/disk/schemafile/ISegment.java      |   2 +-
 .../store/disk/schemafile/MockSchemaFile.java      |   2 +-
 .../mtree/store/disk/schemafile/RecordUtils.java   |   2 +-
 .../mtree/store/disk/schemafile/SchemaFile.java    |   6 +-
 .../mtree/store/disk/schemafile/SchemaPage.java    |   2 +-
 .../mtree/store/disk/schemafile/Segment.java       |   2 +-
 .../db/metadata/mtree/traverser/Traverser.java     |   6 +-
 .../traverser/collector/CollectorTraverser.java    |   4 +-
 .../mtree/traverser/collector/EntityCollector.java |   4 +-
 .../traverser/collector/MNodeAboveSGCollector.java |   4 +-
 .../mtree/traverser/collector/MNodeCollector.java  |   4 +-
 .../traverser/collector/MeasurementCollector.java  |   4 +-
 .../traverser/collector/StorageGroupCollector.java |   4 +-
 .../mtree/traverser/counter/CounterTraverser.java  |   4 +-
 .../mtree/traverser/counter/EntityCounter.java     |   4 +-
 .../counter/MNodeAboveSGLevelCounter.java          |   4 +-
 .../mtree/traverser/counter/MNodeLevelCounter.java |   4 +-
 .../traverser/counter/MeasurementCounter.java      |   4 +-
 .../counter/MeasurementGroupByLevelCounter.java    |   4 +-
 .../traverser/counter/StorageGroupCounter.java     |   4 +-
 .../apache/iotdb/db/metadata/path/AlignedPath.java |   6 +-
 .../iotdb/db/metadata/path/MeasurementPath.java    |   6 +-
 .../db/metadata/path/PathDeserializeUtil.java      |  18 +-
 .../db/metadata/schemaregion/ISchemaRegion.java    |   4 +-
 .../metadata/schemaregion/RSchemaRegionLoader.java |   2 +-
 .../db/metadata/schemaregion/SchemaEngine.java     |   4 +-
 .../schemaregion/SchemaRegionMemoryImpl.java       |   4 +-
 .../schemaregion/SchemaRegionSchemaFileImpl.java   |   4 +-
 .../metadata/schemaregion/SchemaRegionUtils.java   |   2 +-
 .../storagegroup/IStorageGroupSchemaManager.java   |   4 +-
 .../storagegroup/StorageGroupLogWriter.java        |   2 +-
 .../storagegroup/StorageGroupSchemaManager.java    |   4 +-
 .../apache/iotdb/db/metadata/tag/TagLogFile.java   |   2 +-
 .../apache/iotdb/db/metadata/tag/TagManager.java   |   4 +-
 .../iotdb/db/metadata/template/Template.java       |  28 +-
 .../db/metadata/template/TemplateManager.java      |   4 +-
 .../db/metadata/tree/AbstractTreeVisitor.java      |   2 +-
 .../tree/AbstractTreeVisitorWithLimitOffset.java   |   2 +-
 .../db/metadata/upgrade/MetadataUpgrader.java      |   4 +-
 .../iotdb/db/metadata/utils/MetaFormatUtils.java   |   6 +-
 .../apache/iotdb/db/metadata/utils/MetaUtils.java  |  77 +----
 .../db/metadata/utils/ResourceByPathUtils.java     |   2 +-
 .../metadata/visitor/SchemaExecutionVisitor.java   |   2 +-
 .../db/mpp/common/filter/BasicFunctionFilter.java  |   4 +-
 .../iotdb/db/mpp/common/filter/FunctionFilter.java |   2 +-
 .../iotdb/db/mpp/common/filter/InFilter.java       |   4 +-
 .../iotdb/db/mpp/common/filter/LikeFilter.java     |   4 +-
 .../iotdb/db/mpp/common/filter/QueryFilter.java    |   4 +-
 .../iotdb/db/mpp/common/filter/RegexpFilter.java   |   4 +-
 .../iotdb/db/mpp/common/header/ColumnHeader.java   |   4 +-
 .../db/mpp/common/schematree/DeviceSchemaInfo.java |   2 +-
 .../db/mpp/common/schematree/PathPatternTree.java  |   4 +-
 .../iotdb/db/mpp/common/schematree/SchemaTree.java |   4 +-
 .../visitor/SchemaTreeDeviceVisitor.java           |   2 +-
 .../visitor/SchemaTreeMeasurementVisitor.java      |   2 +-
 .../schematree/visitor/SchemaTreeVisitor.java      |   2 +-
 .../iotdb/db/mpp/execution/driver/DataDriver.java  |   2 +-
 .../db/mpp/execution/driver/DataDriverContext.java |   2 +-
 .../execution/operator/process/FilterOperator.java |   4 +-
 .../operator/process/TransformOperator.java        |  22 +-
 .../operator/schema/DevicesCountOperator.java      |   4 +-
 .../operator/schema/DevicesSchemaScanOperator.java |   4 +-
 .../schema/LevelTimeSeriesCountOperator.java       |   4 +-
 .../operator/schema/SchemaFetchOperator.java       |   4 +-
 .../operator/schema/SchemaScanOperator.java        |   2 +-
 .../operator/schema/TimeSeriesCountOperator.java   |   4 +-
 .../schema/TimeSeriesSchemaScanOperator.java       |   4 +-
 .../operator/source/AlignedSeriesScanUtil.java     |   2 +-
 .../source/SeriesAggregateScanOperator.java        |   2 +-
 .../operator/source/SeriesScanOperator.java        |   2 +-
 .../execution/operator/source/SeriesScanUtil.java  |   2 +-
 .../apache/iotdb/db/mpp/plan/analyze/Analysis.java |   2 +-
 .../apache/iotdb/db/mpp/plan/analyze/Analyzer.java |   2 +-
 .../mpp/plan/analyze/ClusterPartitionFetcher.java  |   4 +-
 .../db/mpp/plan/analyze/ClusterSchemaFetcher.java  |   2 +-
 .../db/mpp/plan/analyze/FakeSchemaFetcherImpl.java |   2 +-
 .../iotdb/db/mpp/plan/analyze/ISchemaFetcher.java  |   2 +-
 .../plan/analyze/StandalonePartitionFetcher.java   |   4 +-
 .../mpp/plan/analyze/StandaloneSchemaFetcher.java  |   4 +-
 .../execution/config/CountStorageGroupTask.java    |   2 +-
 .../plan/execution/config/SetStorageGroupTask.java |   2 +-
 .../db/mpp/plan/execution/config/SetTTLTask.java   |   2 +-
 .../execution/config/ShowStorageGroupTask.java     |   4 +-
 .../db/mpp/plan/execution/config/ShowTTLTask.java  |   4 +-
 .../iotdb/db/mpp/plan/parser/ASTVisitor.java       |   7 +-
 .../db/mpp/plan/parser/StatementGenerator.java     |   4 +-
 .../db/mpp/plan/planner/LocalExecutionPlanner.java |   2 +-
 .../db/mpp/plan/planner/LogicalPlanBuilder.java    |   2 +-
 .../mpp/plan/planner/plan/node/PlanNodeType.java   |   2 +-
 .../plan/node/metedata/read/DevicesCountNode.java  |   4 +-
 .../node/metedata/read/DevicesSchemaScanNode.java  |   4 +-
 .../metedata/read/LevelTimeSeriesCountNode.java    |   4 +-
 .../plan/node/metedata/read/SchemaScanNode.java    |   2 +-
 .../node/metedata/read/TimeSeriesCountNode.java    |   4 +-
 .../metedata/read/TimeSeriesSchemaScanNode.java    |   4 +-
 .../node/metedata/write/AlterTimeSeriesNode.java   |   4 +-
 .../write/CreateAlignedTimeSeriesNode.java         |   4 +-
 .../node/metedata/write/CreateTimeSeriesNode.java  |   4 +-
 .../planner/plan/node/write/BatchInsertNode.java   |   2 +-
 .../plan/node/write/InsertMultiTabletsNode.java    |   2 +-
 .../plan/planner/plan/node/write/InsertNode.java   |   2 +-
 .../planner/plan/node/write/InsertRowNode.java     |   4 +-
 .../planner/plan/node/write/InsertRowsNode.java    |   2 +-
 .../plan/node/write/InsertRowsOfOneDeviceNode.java |   4 +-
 .../planner/plan/node/write/InsertTabletNode.java  |   4 +-
 .../db/mpp/plan/rewriter/ConcatPathRewriter.java   |   8 +-
 .../plan/rewriter/MergeSingleFilterOptimizer.java  |   2 +-
 .../db/mpp/plan/rewriter/RemoveNotOptimizer.java   |   2 +-
 .../db/mpp/plan/rewriter/WildcardsRemover.java     |   4 +-
 .../iotdb/db/mpp/plan/statement/Statement.java     |   2 +-
 .../plan/statement/component/FromComponent.java    |   2 +-
 .../component/GroupByLevelController.java          |   2 +-
 .../mpp/plan/statement/component/ResultColumn.java |   2 +-
 .../plan/statement/component/SelectComponent.java  |   2 +-
 .../statement/crud/AggregationQueryStatement.java  |   2 +-
 .../plan/statement/crud/InsertBaseStatement.java   |   2 +-
 .../crud/InsertMultiTabletsStatement.java          |   2 +-
 .../plan/statement/crud/InsertRowStatement.java    |   2 +-
 .../crud/InsertRowsOfOneDeviceStatement.java       |   2 +-
 .../plan/statement/crud/InsertRowsStatement.java   |   2 +-
 .../mpp/plan/statement/crud/InsertStatement.java   |   2 +-
 .../plan/statement/crud/InsertTabletStatement.java |   2 +-
 .../db/mpp/plan/statement/crud/QueryStatement.java |   2 +-
 .../metadata/AlterTimeSeriesStatement.java         |   2 +-
 .../statement/metadata/CountDevicesStatement.java  |   2 +-
 .../metadata/CountLevelTimeSeriesStatement.java    |   2 +-
 .../statement/metadata/CountNodesStatement.java    |   2 +-
 .../plan/statement/metadata/CountStatement.java    |   2 +-
 .../metadata/CountStorageGroupStatement.java       |   2 +-
 .../metadata/CountTimeSeriesStatement.java         |   2 +-
 .../metadata/CreateAlignedTimeSeriesStatement.java |   4 +-
 .../metadata/CreateTimeSeriesStatement.java        |   2 +-
 .../statement/metadata/SchemaFetchStatement.java   |   2 +-
 .../metadata/SetStorageGroupStatement.java         |   2 +-
 .../plan/statement/metadata/SetTTLStatement.java   |   2 +-
 .../statement/metadata/ShowDevicesStatement.java   |   2 +-
 .../mpp/plan/statement/metadata/ShowStatement.java |   2 +-
 .../metadata/ShowStorageGroupStatement.java        |   2 +-
 .../plan/statement/metadata/ShowTTLStatement.java  |   2 +-
 .../metadata/ShowTimeSeriesStatement.java          |   2 +-
 .../db/mpp/plan/statement/sys/AuthorStatement.java |   2 +-
 .../iotdb/db/protocol/influxdb/dto/IoTDBPoint.java |   4 +-
 .../db/protocol/influxdb/handler/QueryHandler.java |   2 +-
 .../influxdb/meta/InfluxDBMetaManager.java         |   6 +-
 .../db/protocol/influxdb/meta/TagInfoRecords.java  |   4 +-
 .../protocol/influxdb/sql/InfluxDBSqlVisitor.java  |   2 +-
 .../iotdb/db/protocol/mqtt/PublishHandler.java     |   2 +-
 .../db/protocol/rest/handler/ExceptionHandler.java |   4 +-
 .../handler/PhysicalPlanConstructionHandler.java   |   4 +-
 .../protocol/rest/impl/GrafanaApiServiceImpl.java  |   2 +-
 .../main/java/org/apache/iotdb/db/qp/Planner.java  |   2 +-
 .../apache/iotdb/db/qp/constant/SQLConstant.java   |   2 +-
 .../apache/iotdb/db/qp/executor/IPlanExecutor.java |   4 +-
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  |   6 +-
 .../qp/logical/crud/AggregationQueryOperator.java  |   4 +-
 .../db/qp/logical/crud/BasicFunctionOperator.java  |   4 +-
 .../db/qp/logical/crud/DeleteDataOperator.java     |   2 +-
 .../iotdb/db/qp/logical/crud/FilterOperator.java   |   4 +-
 .../iotdb/db/qp/logical/crud/FromComponent.java    |   2 +-
 .../db/qp/logical/crud/GroupByQueryOperator.java   |   2 +-
 .../iotdb/db/qp/logical/crud/InOperator.java       |   4 +-
 .../iotdb/db/qp/logical/crud/InsertOperator.java   |   2 +-
 .../iotdb/db/qp/logical/crud/LikeOperator.java     |   4 +-
 .../iotdb/db/qp/logical/crud/QueryOperator.java    |   4 +-
 .../iotdb/db/qp/logical/crud/RegexpOperator.java   |   4 +-
 .../iotdb/db/qp/logical/crud/SelectComponent.java  |   6 +-
 .../db/qp/logical/crud/SelectIntoOperator.java     |   2 +-
 .../qp/logical/sys/ActivateTemplateOperator.java   |   2 +-
 .../db/qp/logical/sys/AlterTimeSeriesOperator.java |   2 +-
 .../iotdb/db/qp/logical/sys/AuthorOperator.java    |   2 +-
 .../iotdb/db/qp/logical/sys/CountOperator.java     |   2 +-
 .../sys/CreateAlignedTimeSeriesOperator.java       |   2 +-
 .../logical/sys/CreateContinuousQueryOperator.java |   2 +-
 .../db/qp/logical/sys/CreateIndexOperator.java     |   2 +-
 .../qp/logical/sys/CreateTimeSeriesOperator.java   |   2 +-
 .../db/qp/logical/sys/CreateTriggerOperator.java   |   2 +-
 .../db/qp/logical/sys/DeletePartitionOperator.java |   2 +-
 .../qp/logical/sys/DeleteStorageGroupOperator.java |   2 +-
 .../qp/logical/sys/DeleteTimeSeriesOperator.java   |   2 +-
 .../iotdb/db/qp/logical/sys/DropIndexOperator.java |   2 +-
 .../iotdb/db/qp/logical/sys/FlushOperator.java     |   2 +-
 .../db/qp/logical/sys/SetStorageGroupOperator.java |   2 +-
 .../iotdb/db/qp/logical/sys/SetTTLOperator.java    |   2 +-
 .../db/qp/logical/sys/SetTemplateOperator.java     |   4 +-
 .../iotdb/db/qp/logical/sys/SettleOperator.java    |   2 +-
 .../db/qp/logical/sys/ShowChildNodesOperator.java  |   2 +-
 .../db/qp/logical/sys/ShowChildPathsOperator.java  |   2 +-
 .../db/qp/logical/sys/ShowDevicesOperator.java     |   2 +-
 .../db/qp/logical/sys/ShowLockInfoOperator.java    |   2 +-
 .../qp/logical/sys/ShowStorageGroupOperator.java   |   2 +-
 .../iotdb/db/qp/logical/sys/ShowTTLOperator.java   |   2 +-
 .../db/qp/logical/sys/ShowTimeSeriesOperator.java  |   2 +-
 .../iotdb/db/qp/logical/sys/UnSetTTLOperator.java  |   2 +-
 .../db/qp/logical/sys/UnsetTemplateOperator.java   |   4 +-
 .../org/apache/iotdb/db/qp/physical/BatchPlan.java |   2 +-
 .../apache/iotdb/db/qp/physical/PhysicalPlan.java  |   4 +-
 .../iotdb/db/qp/physical/crud/AggregationPlan.java |   4 +-
 .../db/qp/physical/crud/AlignByDevicePlan.java     |   2 +-
 .../db/qp/physical/crud/DeletePartitionPlan.java   |   2 +-
 .../iotdb/db/qp/physical/crud/DeletePlan.java      |   4 +-
 .../iotdb/db/qp/physical/crud/GroupByTimePlan.java |   2 +-
 .../qp/physical/crud/InsertMultiTabletsPlan.java   |   4 +-
 .../iotdb/db/qp/physical/crud/InsertPlan.java      |   2 +-
 .../iotdb/db/qp/physical/crud/InsertRowPlan.java   |   4 +-
 .../physical/crud/InsertRowsOfOneDevicePlan.java   |   4 +-
 .../iotdb/db/qp/physical/crud/InsertRowsPlan.java  |   4 +-
 .../db/qp/physical/crud/InsertTabletPlan.java      |   4 +-
 .../iotdb/db/qp/physical/crud/LastQueryPlan.java   |   2 +-
 .../iotdb/db/qp/physical/crud/QueryPlan.java       |   6 +-
 .../db/qp/physical/crud/RawDataQueryPlan.java      |   4 +-
 .../iotdb/db/qp/physical/crud/SelectIntoPlan.java  |   4 +-
 .../apache/iotdb/db/qp/physical/crud/UDAFPlan.java |   2 +-
 .../apache/iotdb/db/qp/physical/crud/UDTFPlan.java |   8 +-
 .../db/qp/physical/sys/ActivateTemplatePlan.java   |   4 +-
 .../db/qp/physical/sys/AlterTimeSeriesPlan.java    |   4 +-
 .../db/qp/physical/sys/AppendTemplatePlan.java     |   2 +-
 .../iotdb/db/qp/physical/sys/AuthorPlan.java       |   4 +-
 .../qp/physical/sys/AutoCreateDeviceMNodePlan.java |   4 +-
 .../iotdb/db/qp/physical/sys/ChangeAliasPlan.java  |   4 +-
 .../db/qp/physical/sys/ChangeTagOffsetPlan.java    |   4 +-
 .../iotdb/db/qp/physical/sys/ClearCachePlan.java   |   4 +-
 .../apache/iotdb/db/qp/physical/sys/CountPlan.java |   2 +-
 .../physical/sys/CreateAlignedTimeSeriesPlan.java  |   4 +-
 .../qp/physical/sys/CreateContinuousQueryPlan.java |   4 +-
 .../db/qp/physical/sys/CreateFunctionPlan.java     |   4 +-
 .../iotdb/db/qp/physical/sys/CreateIndexPlan.java  |   4 +-
 .../qp/physical/sys/CreateMultiTimeSeriesPlan.java |   4 +-
 .../iotdb/db/qp/physical/sys/CreatePipePlan.java   |   2 +-
 .../db/qp/physical/sys/CreatePipeSinkPlan.java     |   2 +-
 .../db/qp/physical/sys/CreateTemplatePlan.java     |   4 +-
 .../db/qp/physical/sys/CreateTimeSeriesPlan.java   |   4 +-
 .../db/qp/physical/sys/CreateTriggerPlan.java      |   4 +-
 .../iotdb/db/qp/physical/sys/DataAuthPlan.java     |   2 +-
 .../db/qp/physical/sys/DeleteStorageGroupPlan.java |   4 +-
 .../db/qp/physical/sys/DeleteTimeSeriesPlan.java   |   4 +-
 .../qp/physical/sys/DropContinuousQueryPlan.java   |   2 +-
 .../iotdb/db/qp/physical/sys/DropFunctionPlan.java |   4 +-
 .../iotdb/db/qp/physical/sys/DropIndexPlan.java    |   4 +-
 .../iotdb/db/qp/physical/sys/DropPipeSinkPlan.java |   2 +-
 .../iotdb/db/qp/physical/sys/DropTemplatePlan.java |   2 +-
 .../iotdb/db/qp/physical/sys/DropTriggerPlan.java  |   4 +-
 .../apache/iotdb/db/qp/physical/sys/FlushPlan.java |   4 +-
 .../iotdb/db/qp/physical/sys/KillQueryPlan.java    |   2 +-
 .../db/qp/physical/sys/LoadConfigurationPlan.java  |   2 +-
 .../iotdb/db/qp/physical/sys/LoadDataPlan.java     |   2 +-
 .../apache/iotdb/db/qp/physical/sys/LogPlan.java   |   2 +-
 .../apache/iotdb/db/qp/physical/sys/MNodePlan.java |   2 +-
 .../db/qp/physical/sys/MeasurementMNodePlan.java   |   2 +-
 .../apache/iotdb/db/qp/physical/sys/MergePlan.java |   4 +-
 .../iotdb/db/qp/physical/sys/OperateFilePlan.java  |   2 +-
 .../iotdb/db/qp/physical/sys/OperatePipePlan.java  |   2 +-
 .../db/qp/physical/sys/PruneTemplatePlan.java      |   2 +-
 .../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  |   8 +-
 .../iotdb/db/qp/physical/sys/SettlePlan.java       |   2 +-
 .../db/qp/physical/sys/ShowChildNodesPlan.java     |   2 +-
 .../db/qp/physical/sys/ShowChildPathsPlan.java     |   2 +-
 .../iotdb/db/qp/physical/sys/ShowDevicesPlan.java  |   4 +-
 .../iotdb/db/qp/physical/sys/ShowLockInfoPlan.java |   2 +-
 .../apache/iotdb/db/qp/physical/sys/ShowPlan.java  |   2 +-
 .../db/qp/physical/sys/ShowQueryResourcePlan.java  |   2 +-
 .../db/qp/physical/sys/ShowStorageGroupPlan.java   |   2 +-
 .../iotdb/db/qp/physical/sys/ShowTTLPlan.java      |   2 +-
 .../db/qp/physical/sys/ShowTimeSeriesPlan.java     |   4 +-
 .../db/qp/physical/sys/StartPipeServerPlan.java    |   4 +-
 .../iotdb/db/qp/physical/sys/StartTriggerPlan.java |   4 +-
 .../db/qp/physical/sys/StopPipeServerPlan.java     |   4 +-
 .../iotdb/db/qp/physical/sys/StopTriggerPlan.java  |   4 +-
 .../db/qp/physical/sys/StorageGroupMNodePlan.java  |   2 +-
 .../iotdb/db/qp/physical/sys/TracingPlan.java      |   2 +-
 .../db/qp/physical/sys/UnsetTemplatePlan.java      |   8 +-
 .../apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java    |   7 +-
 .../iotdb/db/qp/strategy/LogicalGenerator.java     |   4 +-
 .../iotdb/db/qp/strategy/PhysicalGenerator.java    |   4 +-
 .../qp/strategy/optimizer/ConcatPathOptimizer.java |  10 +-
 .../optimizer/MergeSingleFilterOptimizer.java      |   2 +-
 .../qp/strategy/optimizer/RemoveNotOptimizer.java  |   2 +-
 .../iotdb/db/qp/utils/GroupByLevelController.java  |   2 +-
 .../apache/iotdb/db/qp/utils/WildcardsRemover.java |   4 +-
 .../iotdb/db/query/context/QueryContext.java       |   2 +-
 .../db/query/control/QueryResourceManager.java     |   2 +-
 .../iotdb/db/query/control/SessionManager.java     |  64 ++---
 .../db/query/dataset/AlignByDeviceDataSet.java     |   2 +-
 .../apache/iotdb/db/query/dataset/ListDataSet.java |   2 +-
 .../db/query/dataset/NonAlignEngineDataSet.java    |   2 +-
 .../dataset/RawQueryDataSetWithValueFilter.java    |   2 +-
 .../dataset/RawQueryDataSetWithoutValueFilter.java |   2 +-
 .../query/dataset/ShowContinuousQueriesResult.java |   2 +-
 .../apache/iotdb/db/query/dataset/ShowDataSet.java |   2 +-
 .../iotdb/db/query/dataset/ShowDevicesDataSet.java |   4 +-
 .../db/query/dataset/ShowTimeseriesDataSet.java    |   4 +-
 .../iotdb/db/query/dataset/SingleDataSet.java      |   2 +-
 .../apache/iotdb/db/query/dataset/UDTFDataSet.java |   2 +-
 .../query/dataset/groupby/GroupByLevelDataSet.java |   4 +-
 .../groupby/GroupByWithValueFilterDataSet.java     |   2 +-
 .../groupby/GroupByWithoutValueFilterDataSet.java  |   2 +-
 .../db/query/executor/AggregationExecutor.java     |   2 +-
 .../iotdb/db/query/executor/FillQueryExecutor.java |   2 +-
 .../iotdb/db/query/executor/LastQueryExecutor.java |   4 +-
 .../db/query/executor/RawDataQueryExecutor.java    |   2 +-
 .../executor/fill/AlignedLastPointReader.java      |   2 +-
 .../apache/iotdb/db/query/executor/fill/IFill.java |   2 +-
 .../db/query/executor/fill/LastPointReader.java    |   2 +-
 .../iotdb/db/query/executor/fill/LinearFill.java   |   2 +-
 .../iotdb/db/query/executor/fill/PreviousFill.java |   2 +-
 .../iotdb/db/query/executor/fill/ValueFill.java    |   2 +-
 .../groupby/impl/LocalAlignedGroupByExecutor.java  |   2 +-
 .../groupby/impl/LocalGroupByExecutor.java         |   2 +-
 .../iotdb/db/query/expression/Expression.java      |   6 +-
 .../iotdb/db/query/expression/ExpressionType.java  |   4 +-
 .../iotdb/db/query/expression/ResultColumn.java    |   2 +-
 .../query/expression/binary/BinaryExpression.java  |   2 +-
 .../db/query/expression/leaf/ConstantOperand.java  |   2 +-
 .../query/expression/leaf/TimeSeriesOperand.java   |   6 +-
 ...imeSeriesOperand.java => TimestampOperand.java} |  69 ++---
 .../query/expression/multi/FunctionExpression.java |   4 +-
 .../db/query/expression/unary/UnaryExpression.java |   2 +-
 .../chunk/metadata/DiskChunkMetadataLoader.java    |   2 +-
 .../metadata/MemAlignedChunkMetadataLoader.java    |   2 +-
 .../chunk/metadata/MemChunkMetadataLoader.java     |   2 +-
 .../query/reader/series/AlignedSeriesReader.java   |   2 +-
 .../query/reader/series/SeriesAggregateReader.java |   2 +-
 .../reader/series/SeriesRawDataBatchReader.java    |   2 +-
 .../iotdb/db/query/reader/series/SeriesReader.java |   2 +-
 .../reader/series/SeriesReaderByTimestamp.java     |   2 +-
 .../query/timegenerator/ServerTimeGenerator.java   |   2 +-
 .../parameter/UDFParameterValidator.java           |   2 +-
 .../api/customizer/parameter/UDFParameters.java    |   4 +-
 .../apache/iotdb/db/query/udf/builtin/UDTFAbs.java |   2 +-
 .../iotdb/db/query/udf/builtin/UDTFCast.java       |   2 +-
 .../query/udf/builtin/UDTFContinuouslySatisfy.java |   2 +-
 .../iotdb/db/query/udf/builtin/UDTFDerivative.java |   2 +-
 .../udf/builtin/UDTFEqualSizeBucketAggSample.java  |   2 +-
 .../builtin/UDTFEqualSizeBucketOutlierSample.java  |   2 +-
 .../udf/builtin/UDTFEqualSizeBucketSample.java     |   2 +-
 .../iotdb/db/query/udf/builtin/UDTFInRange.java    |   2 +-
 .../iotdb/db/query/udf/builtin/UDTFMath.java       |   2 +-
 .../iotdb/db/query/udf/builtin/UDTFOnOff.java      |   2 +-
 .../iotdb/db/query/udf/builtin/UDTFSelectK.java    |   2 +-
 .../db/query/udf/builtin/UDTFValueDifference.java  |   2 +-
 .../query/udf/core/layer/RawQueryInputLayer.java   | 139 +++++++--
 .../org/apache/iotdb/db/service/SettleService.java |   4 +-
 .../iotdb/db/service/basic/ServiceProvider.java    |   2 +-
 .../service/thrift/impl/InfluxDBServiceImpl.java   |   4 +-
 .../service/thrift/impl/InternalServiceImpl.java   |   6 +-
 .../db/service/thrift/impl/TSServiceImpl.java      |   6 +-
 .../iotdb/db/sync/pipedata/DeletionPipeData.java   |   2 +-
 .../apache/iotdb/db/sync/pipedata/PipeData.java    |   2 +-
 .../iotdb/db/sync/pipedata/SchemaPipeData.java     |   2 +-
 .../sync/pipedata/queue/BufferedPipeDataQueue.java |   2 +-
 .../iotdb/db/sync/receiver/ReceiverService.java    |   2 +-
 .../iotdb/db/sync/receiver/load/SchemaLoader.java  |   2 +-
 .../db/sync/sender/manager/SchemaSyncManager.java  |   4 +-
 .../db/sync/sender/manager/TsFileSyncManager.java  |   2 +-
 .../iotdb/db/sync/sender/pipe/TsFilePipe.java      |   4 +-
 .../transport/server/TransportServiceImpl.java     |   2 +-
 .../apache/iotdb/db/tools/TsFileRewriteTool.java   |   4 +-
 .../java/org/apache/iotdb/db/tools/WalChecker.java |   2 +-
 .../db/tools/dataregion/DeviceMappingViewer.java   |   4 +-
 .../apache/iotdb/db/tools/schema/MLogParser.java   |   2 +-
 .../db/tools/schema/SchemaFileSketchTool.java      |   2 +-
 .../db/tools/settle/TsFileAndModSettleTool.java    |   2 +-
 .../db/tools/upgrade/TsFileOnlineUpgradeTool.java  |   2 +-
 .../org/apache/iotdb/db/utils/FileLoaderUtils.java |   2 +-
 .../org/apache/iotdb/db/utils/SchemaUtils.java     |   6 +-
 .../iotdb/db/utils/writelog/BatchLogReader.java    |   2 +-
 .../org/apache/iotdb/db/wal/buffer/WALEntry.java   |   2 +-
 .../java/org/apache/iotdb/db/wal/io/WALReader.java |   2 +-
 .../java/org/apache/iotdb/db/wal/node/WALNode.java |   4 +-
 .../db/wal/recover/file/TsFilePlanRedoer.java      |   4 +-
 .../apache/iotdb/db/auth/AuthorityCheckerTest.java |   4 +-
 .../iotdb/db/engine/MetadataManagerHelper.java     |   2 +-
 .../iotdb/db/engine/cache/ChunkCacheTest.java      |   4 +-
 .../engine/compaction/AbstractCompactionTest.java  |   4 +-
 .../engine/compaction/CompactionSchedulerTest.java |   4 +-
 .../ReadPointCompactionPerformerTest.java          |   6 +-
 .../compaction/TestUtilsForAlignedSeries.java      |   4 +-
 .../cross/CrossSpaceCompactionExceptionTest.java   |   2 +-
 .../compaction/cross/CrossSpaceCompactionTest.java |   4 +-
 .../db/engine/compaction/cross/MergeTest.java      |   4 +-
 .../RewriteCrossSpaceCompactionRecoverTest.java    |   2 +-
 .../cross/RewriteCrossSpaceCompactionTest.java     |   6 +-
 .../inner/AbstractInnerSpaceCompactionTest.java    |   4 +-
 .../inner/InnerCompactionMoreDataTest.java         |   4 +-
 .../inner/InnerCompactionSchedulerTest.java        |   2 +-
 .../compaction/inner/InnerCompactionTest.java      |   4 +-
 .../compaction/inner/InnerSeqCompactionTest.java   |   6 +-
 .../compaction/inner/InnerUnseqCompactionTest.java |   4 +-
 .../ReadChunkCompactionPerformerAlignedTest.java   |   2 +-
 .../ReadChunkCompactionPerformerNoAlignedTest.java |   4 +-
 .../inner/ReadChunkCompactionPerformerOldTest.java |   2 +-
 .../SizeTieredCompactionRecoverTest.java           |   2 +-
 .../inner/sizetiered/SizeTieredCompactionTest.java |   4 +-
 ...eCrossSpaceCompactionRecoverCompatibleTest.java |   4 +-
 .../SizeTieredCompactionRecoverCompatibleTest.java |   2 +-
 .../recover/SizeTieredCompactionRecoverTest.java   |   4 +-
 .../compaction/utils/CompactionCheckerUtils.java   |   4 +-
 .../utils/CompactionFileGeneratorUtils.java        |   4 +-
 .../db/engine/memtable/MemTableFlushTaskTest.java  |   2 +-
 .../db/engine/memtable/MemTableTestUtils.java      |   4 +-
 .../db/engine/memtable/MemtableBenchmark.java      |   4 +-
 .../db/engine/memtable/PrimitiveMemTableTest.java  |   6 +-
 .../engine/modification/DeletionFileNodeTest.java  |   4 +-
 .../db/engine/modification/DeletionQueryTest.java  |   4 +-
 .../engine/modification/ModificationFileTest.java  |   2 +-
 .../io/LocalTextModificationAccessorTest.java      |   2 +-
 .../db/engine/storagegroup/DataRegionTest.java     |   6 +-
 .../storagegroup/FileNodeManagerBenchmark.java     |   4 +-
 .../storagegroup/StorageGroupProcessorTest.java    |   6 +-
 .../iotdb/db/engine/storagegroup/TTLTest.java      |   6 +-
 .../db/engine/storagegroup/TsFileManagerTest.java  |   2 +-
 .../engine/storagegroup/TsFileProcessorTest.java   |   6 +-
 .../engine/storagegroup/TsFileProcessorV2Test.java |   6 +-
 .../dataregion/HashVirtualPartitionerTest.java     |   4 +-
 .../apache/iotdb/db/metadata/MetaUtilsTest.java    |  45 +--
 .../apache/iotdb/db/metadata/PartialPathTest.java  |   4 +-
 .../iotdb/db/metadata/SchemaAdvancedTest.java      |   4 +-
 .../apache/iotdb/db/metadata/SchemaBasicTest.java  |   6 +-
 .../iotdb/db/metadata/SchemaImproveTest.java       |   6 +-
 .../org/apache/iotdb/db/metadata/TemplateTest.java |   6 +-
 .../db/metadata/cache/DataNodeSchemaCacheTest.java |   4 +-
 .../db/metadata/idtable/IDTableFlushTimeTest.java  |   6 +-
 .../db/metadata/idtable/IDTableLogFileTest.java    |   2 +-
 .../db/metadata/idtable/IDTableRecoverTest.java    |   4 +-
 .../idtable/IDTableResourceControlTest.java        |   6 +-
 .../db/metadata/idtable/IDTableRestartTest.java    |   4 +-
 .../iotdb/db/metadata/idtable/IDTableTest.java     |   4 +-
 .../db/metadata/idtable/InsertWithIDTableTest.java |   6 +-
 .../db/metadata/idtable/LastQueryWithIDTable.java  |   6 +-
 .../QueryAlignedTimeseriesWithIDTableTest.java     |   6 +-
 .../db/metadata/idtable/QueryWithIDTableTest.java  |   6 +-
 .../db/metadata/idtable/entry/DeviceIDTest.java    |   4 +-
 .../db/metadata/idtable/entry/SchemaEntryTest.java |   2 +-
 .../iotdb/db/metadata/mtree/MTreeAboveSGTest.java  |  53 +++-
 .../iotdb/db/metadata/mtree/MTreeBelowSGTest.java  |   4 +-
 .../db/metadata/mtree/disk/MemManagerTest.java     |   2 +-
 .../metadata/mtree/schemafile/RecordUtilTests.java |   2 +-
 .../metadata/mtree/schemafile/SchemaFileTest.java  |   8 +-
 .../metadata/mtree/schemafile/SchemaPageTest.java  |   3 +-
 .../db/metadata/mtree/schemafile/SegmentTest.java  |   2 +-
 .../db/metadata/upgrade/MetadataUpgradeTest.java   |   4 +-
 .../mpp/common/schematree/PathPatternTreeTest.java |   4 +-
 .../db/mpp/common/schematree/SchemaTreeTest.java   |   4 +-
 .../iotdb/db/mpp/execution/DataDriverTest.java     |   6 +-
 .../operator/AlignedSeriesScanOperatorTest.java    | 314 ++++++++++++++++++++-
 .../execution/operator/AlignedSeriesTestUtil.java  |   4 +-
 .../execution/operator/DeviceViewOperatorTest.java |   4 +-
 .../mpp/execution/operator/LimitOperatorTest.java  |   4 +-
 .../mpp/execution/operator/OffsetOperatorTest.java |   4 +-
 .../operator/SeriesAggregateScanOperatorTest.java  |   4 +-
 .../execution/operator/SeriesScanOperatorTest.java |   4 +-
 .../execution/operator/TimeJoinOperatorTest.java   |   4 +-
 .../operator/schema/CountMergeOperatorTest.java    |   4 +-
 .../operator/schema/SchemaCountOperatorTest.java   |   4 +-
 .../operator/schema/SchemaFetchOperatorTest.java   |   2 +-
 .../operator/schema/SchemaScanOperatorTest.java    |   4 +-
 .../db/mpp/plan/parser/StatementGeneratorTest.java |   2 +-
 .../db/mpp/plan/plan/DistributionPlannerTest.java  |   4 +-
 .../mpp/plan/plan/FragmentInstanceSerdeTest.java   |   2 +-
 .../iotdb/db/mpp/plan/plan/LogicalPlannerTest.java |   4 +-
 .../db/mpp/plan/plan/QueryLogicalPlanUtil.java     |   2 +-
 .../plan/plan/node/PlanNodeDeserializeHelper.java  |   2 +-
 .../read/DeviceSchemaScanNodeSerdeTest.java        |   4 +-
 .../metadata/read/SchemaCountNodeSerdeTest.java    |   4 +-
 .../read/TimeSeriesSchemaScanNodeSerdeTest.java    |   4 +-
 .../node/process/AggregationNodeSerdeTest.java     |   4 +-
 .../plan/node/process/DeviceViewNodeSerdeTest.java |   2 +-
 .../plan/node/process/ExchangeNodeSerdeTest.java   |   2 +-
 .../plan/plan/node/process/FillNodeSerdeTest.java  |   4 +-
 .../plan/node/process/FilterNodeSerdeTest.java     |   4 +-
 .../plan/node/process/FilterNullNodeSerdeTest.java |   4 +-
 .../node/process/GroupByLevelNodeSerdeTest.java    |   4 +-
 .../plan/plan/node/process/LimitNodeSerdeTest.java |   2 +-
 .../plan/node/process/OffsetNodeSerdeTest.java     |   2 +-
 .../plan/plan/node/process/SortNodeSerdeTest.java  |   2 +-
 .../plan/node/process/TimeJoinNodeSerdeTest.java   |   2 +-
 .../plan/node/sink/FragmentSinkNodeSerdeTest.java  |   4 +-
 .../source/SeriesAggregationScanNodeSerdeTest.java |   4 +-
 .../plan/node/source/SeriesScanNodeSerdeTest.java  |   2 +-
 .../write/InsertMultiTabletsNodeSerdeTest.java     |   4 +-
 .../plan/node/write/InsertRowNodeSerdeTest.java    |   4 +-
 .../plan/node/write/InsertRowsNodeSerdeTest.java   |   4 +-
 .../write/InsertRowsOfOneDeviceNodeSerdeTest.java  |   4 +-
 .../plan/node/write/InsertTabletNodeSerdeTest.java |   4 +-
 .../plan/node/write/WritePlanNodeSplitTest.java    |   4 +-
 .../java/org/apache/iotdb/db/qp/PlannerTest.java   |   6 +-
 .../iotdb/db/qp/logical/LogicalPlanSmallTest.java  |   4 +-
 .../iotdb/db/qp/other/TSPlanContextAuthorTest.java |   2 +-
 .../iotdb/db/qp/physical/ConcatOptimizerTest.java  |   4 +-
 .../iotdb/db/qp/physical/InsertRowPlanTest.java    |   6 +-
 .../qp/physical/InsertRowsOfOneDevicePlanTest.java |   4 +-
 .../db/qp/physical/InsertTabletMultiPlanTest.java  |   4 +-
 .../iotdb/db/qp/physical/InsertTabletPlanTest.java |   6 +-
 .../db/qp/physical/PhysicalPlanSerializeTest.java  |   4 +-
 .../iotdb/db/qp/physical/PhysicalPlanTest.java     |   6 +-
 .../iotdb/db/qp/physical/SerializationTest.java    |   6 +-
 .../iotdb/db/qp/physical/SerializedSizeTest.java   |   4 +-
 .../iotdb/db/query/dataset/ListDataSetTest.java    |   2 +-
 .../iotdb/db/query/dataset/SingleDataSetTest.java  |   2 +-
 .../query/dataset/UDTFAlignByTimeDataSetTest.java  |   4 +-
 .../reader/series/SeriesAggregateReaderTest.java   |   2 +-
 .../reader/series/SeriesReaderByTimestampTest.java |   2 +-
 .../db/query/reader/series/SeriesReaderTest.java   |   6 +-
 .../query/reader/series/SeriesReaderTestUtil.java  |   4 +-
 .../iotdb/db/rescon/ResourceManagerTest.java       |   4 +-
 .../iotdb/db/service/InternalServiceImplTest.java  |   4 +-
 .../org/apache/iotdb/db/sink/MQTTSinkTest.java     |   2 +-
 .../sync/pipedata/BufferedPipeDataQueueTest.java   |   2 +-
 .../iotdb/db/sync/pipedata/PipeDataTest.java       |   2 +-
 .../db/sync/transport/TransportServiceTest.java    |   2 +-
 .../org/apache/iotdb/db/tools/MLogParserTest.java  |   4 +-
 .../iotdb/db/tools/SchemaFileSketchTest.java       |   2 +-
 .../iotdb/db/tools/TsFileAndModSettleToolTest.java |   4 +-
 .../org/apache/iotdb/db/tools/WalCheckerTest.java  |   2 +-
 .../org/apache/iotdb/db/utils/MemUtilsTest.java    |   4 +-
 .../org/apache/iotdb/db/utils/SchemaTestUtils.java |   4 +-
 .../org/apache/iotdb/db/utils/SchemaUtilsTest.java |   4 +-
 .../iotdb/db/utils/TsFileRewriteToolTest.java      |   4 +-
 .../db/utils/writelog/LogWriterReaderTest.java     |   4 +-
 .../db/utils/writelog/MultiFileLogReaderTest.java  |   4 +-
 .../org/apache/iotdb/db/wal/WALManagerTest.java    |   4 +-
 .../iotdb/db/wal/buffer/WALBufferCommonTest.java   |   4 +-
 .../org/apache/iotdb/db/wal/io/WALFileTest.java    |   4 +-
 .../org/apache/iotdb/db/wal/node/WALNodeTest.java  |   4 +-
 .../db/wal/recover/WALRecoverManagerTest.java      |   6 +-
 .../db/wal/recover/file/TsFilePlanRedoerTest.java  |   2 +-
 .../file/UnsealedTsFileRecoverPerformerTest.java   |   2 +-
 .../org/apache/iotdb/rpc/IoTDBJDBCDataSet.java     |   3 +-
 752 files changed, 2164 insertions(+), 1461 deletions(-)

diff --cc server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LocalExecutionPlanner.java
index 6fd6b513ef,e78e5e4738..b4a4bb93cc
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LocalExecutionPlanner.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LocalExecutionPlanner.java
@@@ -18,9 -18,8 +18,9 @@@
   */
  package org.apache.iotdb.db.mpp.plan.planner;
  
+ import org.apache.iotdb.commons.path.PartialPath;
  import org.apache.iotdb.db.engine.storagegroup.DataRegion;
 +import org.apache.iotdb.db.metadata.path.AlignedPath;
- import org.apache.iotdb.db.metadata.path.PartialPath;
  import org.apache.iotdb.db.metadata.schemaregion.ISchemaRegion;
  import org.apache.iotdb.db.mpp.common.FragmentInstanceId;
  import org.apache.iotdb.db.mpp.execution.datatransfer.DataBlockManager;
diff --cc server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/AlignedSeriesScanOperatorTest.java
index 6cfac9abed,0000000000..97121b80e3
mode 100644,000000..100644
--- a/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/AlignedSeriesScanOperatorTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/AlignedSeriesScanOperatorTest.java
@@@ -1,456 -1,0 +1,748 @@@
 +/*
 + * 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.mpp.execution.operator;
 +
 +import org.apache.iotdb.commons.concurrent.IoTDBThreadPoolFactory;
++import org.apache.iotdb.commons.exception.IllegalPathException;
++import org.apache.iotdb.commons.exception.MetadataException;
 +import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
 +import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
- import org.apache.iotdb.db.exception.metadata.IllegalPathException;
- import org.apache.iotdb.db.exception.metadata.MetadataException;
 +import org.apache.iotdb.db.metadata.path.AlignedPath;
 +import org.apache.iotdb.db.metadata.path.MeasurementPath;
 +import org.apache.iotdb.db.mpp.common.FragmentInstanceId;
 +import org.apache.iotdb.db.mpp.common.PlanFragmentId;
 +import org.apache.iotdb.db.mpp.common.QueryId;
 +import org.apache.iotdb.db.mpp.execution.fragment.FragmentInstanceContext;
 +import org.apache.iotdb.db.mpp.execution.fragment.FragmentInstanceStateMachine;
 +import org.apache.iotdb.db.mpp.execution.operator.process.TimeJoinOperator;
 +import org.apache.iotdb.db.mpp.execution.operator.process.merge.AscTimeComparator;
++import org.apache.iotdb.db.mpp.execution.operator.process.merge.DescTimeComparator;
 +import org.apache.iotdb.db.mpp.execution.operator.process.merge.SingleColumnMerger;
 +import org.apache.iotdb.db.mpp.execution.operator.source.AlignedSeriesScanOperator;
 +import org.apache.iotdb.db.mpp.execution.operator.source.SeriesScanOperator;
 +import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
 +import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.InputLocation;
 +import org.apache.iotdb.db.mpp.plan.statement.component.OrderBy;
 +import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
 +import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 +import org.apache.iotdb.tsfile.read.common.block.TsBlock;
 +import org.apache.iotdb.tsfile.read.common.block.column.BinaryColumn;
 +import org.apache.iotdb.tsfile.read.common.block.column.BooleanColumn;
 +import org.apache.iotdb.tsfile.read.common.block.column.DoubleColumn;
 +import org.apache.iotdb.tsfile.read.common.block.column.FloatColumn;
 +import org.apache.iotdb.tsfile.read.common.block.column.IntColumn;
 +import org.apache.iotdb.tsfile.read.common.block.column.LongColumn;
 +import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
 +import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 +
- import org.junit.After;
- import org.junit.Before;
++import org.junit.AfterClass;
++import org.junit.BeforeClass;
 +import org.junit.Test;
 +
 +import java.io.IOException;
 +import java.util.ArrayList;
 +import java.util.Arrays;
 +import java.util.HashSet;
 +import java.util.List;
 +import java.util.Set;
 +import java.util.concurrent.ExecutorService;
 +import java.util.stream.Collectors;
 +
 +import static org.apache.iotdb.db.mpp.execution.fragment.FragmentInstanceContext.createFragmentInstanceContext;
 +import static org.junit.Assert.assertEquals;
 +import static org.junit.Assert.assertTrue;
 +import static org.junit.Assert.fail;
 +
 +public class AlignedSeriesScanOperatorTest {
 +
 +  private static final String SERIES_SCAN_OPERATOR_TEST_SG = "root.AlignedSeriesScanOperatorTest";
-   private final List<MeasurementSchema> measurementSchemas = new ArrayList<>();
++  private static final List<MeasurementSchema> measurementSchemas = new ArrayList<>();
 +
-   private final List<TsFileResource> seqResources = new ArrayList<>();
-   private final List<TsFileResource> unSeqResources = new ArrayList<>();
++  private static final List<TsFileResource> seqResources = new ArrayList<>();
++  private static final List<TsFileResource> unSeqResources = new ArrayList<>();
 +
 +  private static final double DELTA = 0.000001;
 +
-   @Before
-   public void setUp() throws MetadataException, IOException, WriteProcessException {
++  @BeforeClass
++  public static void setUp() throws MetadataException, IOException, WriteProcessException {
 +    AlignedSeriesTestUtil.setUp(
 +        measurementSchemas, seqResources, unSeqResources, SERIES_SCAN_OPERATOR_TEST_SG);
 +  }
 +
-   @After
-   public void tearDown() throws IOException {
++  @AfterClass
++  public static void tearDown() throws IOException {
 +    AlignedSeriesTestUtil.tearDown(seqResources, unSeqResources);
 +  }
 +
 +  @Test
 +  public void batchTest1() {
 +    ExecutorService instanceNotificationExecutor =
 +        IoTDBThreadPoolFactory.newFixedThreadPool(1, "test-instance-notification");
 +    try {
 +      AlignedPath alignedPath =
 +          new AlignedPath(
 +              SERIES_SCAN_OPERATOR_TEST_SG + ".device0",
 +              measurementSchemas.stream()
 +                  .map(MeasurementSchema::getMeasurementId)
 +                  .collect(Collectors.toList()),
 +              measurementSchemas.stream()
 +                  .map(m -> (IMeasurementSchema) m)
 +                  .collect(Collectors.toList()));
 +      QueryId queryId = new QueryId("stub_query");
 +      FragmentInstanceId instanceId =
 +          new FragmentInstanceId(new PlanFragmentId(queryId, 0), "stub-instance");
 +      FragmentInstanceStateMachine stateMachine =
 +          new FragmentInstanceStateMachine(instanceId, instanceNotificationExecutor);
 +      FragmentInstanceContext fragmentInstanceContext =
 +          createFragmentInstanceContext(instanceId, stateMachine);
 +      PlanNodeId planNodeId = new PlanNodeId("1");
 +      fragmentInstanceContext.addOperatorContext(
 +          1, planNodeId, AlignedSeriesScanOperator.class.getSimpleName());
 +
 +      AlignedSeriesScanOperator seriesScanOperator =
 +          new AlignedSeriesScanOperator(
 +              planNodeId,
 +              alignedPath,
 +              fragmentInstanceContext.getOperatorContexts().get(0),
 +              null,
 +              null,
 +              true);
 +      seriesScanOperator.initQueryDataSource(new QueryDataSource(seqResources, unSeqResources));
 +      int count = 0;
 +      while (seriesScanOperator.hasNext()) {
 +        TsBlock tsBlock = seriesScanOperator.next();
 +        assertEquals(6, tsBlock.getValueColumnCount());
 +        assertTrue(tsBlock.getColumn(0) instanceof BooleanColumn);
 +        assertTrue(tsBlock.getColumn(1) instanceof IntColumn);
 +        assertTrue(tsBlock.getColumn(2) instanceof LongColumn);
 +        assertTrue(tsBlock.getColumn(3) instanceof FloatColumn);
 +        assertTrue(tsBlock.getColumn(4) instanceof DoubleColumn);
 +        assertTrue(tsBlock.getColumn(5) instanceof BinaryColumn);
 +
 +        assertEquals(20, tsBlock.getPositionCount());
 +        for (int i = 0; i < tsBlock.getPositionCount(); i++) {
 +          long expectedTime = i + 20L * count;
 +          assertEquals(expectedTime, tsBlock.getTimeByIndex(i));
 +          int delta = 0;
 +          if (expectedTime < 200) {
 +            delta = 20000;
 +          } else if (expectedTime < 260
 +              || (expectedTime >= 300 && expectedTime < 380)
 +              || expectedTime >= 400) {
 +            delta = 10000;
 +          }
 +          assertEquals((delta + expectedTime) % 2 == 0, tsBlock.getColumn(0).getBoolean(i));
 +          assertEquals(delta + expectedTime, tsBlock.getColumn(1).getInt(i));
 +          assertEquals(delta + expectedTime, tsBlock.getColumn(2).getLong(i));
 +          assertEquals(delta + expectedTime, tsBlock.getColumn(3).getFloat(i), DELTA);
 +          assertEquals(delta + expectedTime, tsBlock.getColumn(4).getDouble(i), DELTA);
 +          assertEquals(
 +              String.valueOf(delta + expectedTime), tsBlock.getColumn(5).getBinary(i).toString());
 +        }
 +        count++;
 +      }
 +      assertEquals(25, count);
 +    } catch (IllegalPathException e) {
 +      e.printStackTrace();
 +      fail();
 +    } finally {
 +      instanceNotificationExecutor.shutdown();
 +    }
 +  }
 +
 +  @Test
 +  public void batchTest2() {
 +    ExecutorService instanceNotificationExecutor =
 +        IoTDBThreadPoolFactory.newFixedThreadPool(1, "test-instance-notification");
 +    try {
 +      AlignedPath alignedPath1 =
 +          new AlignedPath(
 +              SERIES_SCAN_OPERATOR_TEST_SG + ".device0",
 +              measurementSchemas.stream()
 +                  .map(MeasurementSchema::getMeasurementId)
 +                  .collect(Collectors.toList()),
 +              measurementSchemas.stream()
 +                  .map(m -> (IMeasurementSchema) m)
 +                  .collect(Collectors.toList()));
 +      QueryId queryId = new QueryId("stub_query");
 +      FragmentInstanceId instanceId =
 +          new FragmentInstanceId(new PlanFragmentId(queryId, 0), "stub-instance");
 +      FragmentInstanceStateMachine stateMachine =
 +          new FragmentInstanceStateMachine(instanceId, instanceNotificationExecutor);
 +      FragmentInstanceContext fragmentInstanceContext =
 +          createFragmentInstanceContext(instanceId, stateMachine);
 +      PlanNodeId planNodeId1 = new PlanNodeId("1");
 +      fragmentInstanceContext.addOperatorContext(
 +          1, planNodeId1, AlignedSeriesScanOperator.class.getSimpleName());
 +      PlanNodeId planNodeId2 = new PlanNodeId("2");
 +      fragmentInstanceContext.addOperatorContext(
 +          2, planNodeId2, AlignedSeriesScanOperator.class.getSimpleName());
 +      PlanNodeId planNodeId3 = new PlanNodeId("3");
 +      fragmentInstanceContext.addOperatorContext(
 +          3, planNodeId3, SeriesScanOperator.class.getSimpleName());
 +      PlanNodeId planNodeId4 = new PlanNodeId("4");
 +      fragmentInstanceContext.addOperatorContext(
 +          4, planNodeId4, SeriesScanOperator.class.getSimpleName());
 +      PlanNodeId planNodeId5 = new PlanNodeId("5");
 +      fragmentInstanceContext.addOperatorContext(
 +          5, planNodeId5, SeriesScanOperator.class.getSimpleName());
 +      PlanNodeId planNodeId6 = new PlanNodeId("6");
 +      fragmentInstanceContext.addOperatorContext(
 +          6, planNodeId6, SeriesScanOperator.class.getSimpleName());
 +      PlanNodeId planNodeId7 = new PlanNodeId("7");
 +      fragmentInstanceContext.addOperatorContext(
 +          7, planNodeId7, SeriesScanOperator.class.getSimpleName());
 +      PlanNodeId planNodeId8 = new PlanNodeId("8");
 +      fragmentInstanceContext.addOperatorContext(
 +          8, planNodeId8, SeriesScanOperator.class.getSimpleName());
 +      fragmentInstanceContext.addOperatorContext(
 +          9, new PlanNodeId("9"), TimeJoinOperator.class.getSimpleName());
 +      AlignedSeriesScanOperator seriesScanOperator1 =
 +          new AlignedSeriesScanOperator(
 +              planNodeId1,
 +              alignedPath1,
 +              fragmentInstanceContext.getOperatorContexts().get(0),
 +              null,
 +              null,
 +              true);
 +      seriesScanOperator1.initQueryDataSource(new QueryDataSource(seqResources, unSeqResources));
 +
 +      AlignedPath alignedPath2 =
 +          new AlignedPath(
 +              SERIES_SCAN_OPERATOR_TEST_SG + ".device1",
 +              measurementSchemas.stream()
 +                  .map(MeasurementSchema::getMeasurementId)
 +                  .collect(Collectors.toList()),
 +              measurementSchemas.stream()
 +                  .map(m -> (IMeasurementSchema) m)
 +                  .collect(Collectors.toList()));
 +      AlignedSeriesScanOperator seriesScanOperator2 =
 +          new AlignedSeriesScanOperator(
 +              planNodeId2,
 +              alignedPath2,
 +              fragmentInstanceContext.getOperatorContexts().get(1),
 +              null,
 +              null,
 +              true);
 +      seriesScanOperator2.initQueryDataSource(new QueryDataSource(seqResources, unSeqResources));
 +
 +      Set<String> allSensors = new HashSet<>();
 +      allSensors.add("sensor0");
 +      allSensors.add("sensor1");
 +      allSensors.add("sensor2");
 +      allSensors.add("sensor3");
 +      allSensors.add("sensor4");
 +      allSensors.add("sensor5");
 +
 +      MeasurementPath measurementPath3 =
 +          new MeasurementPath(
 +              SERIES_SCAN_OPERATOR_TEST_SG + ".device2.sensor0", TSDataType.BOOLEAN);
 +      SeriesScanOperator seriesScanOperator3 =
 +          new SeriesScanOperator(
 +              planNodeId3,
 +              measurementPath3,
 +              allSensors,
 +              TSDataType.BOOLEAN,
 +              fragmentInstanceContext.getOperatorContexts().get(2),
 +              null,
 +              null,
 +              true);
 +      seriesScanOperator3.initQueryDataSource(new QueryDataSource(seqResources, unSeqResources));
 +
 +      MeasurementPath measurementPath4 =
 +          new MeasurementPath(SERIES_SCAN_OPERATOR_TEST_SG + ".device2.sensor1", TSDataType.INT32);
 +      SeriesScanOperator seriesScanOperator4 =
 +          new SeriesScanOperator(
 +              planNodeId4,
 +              measurementPath4,
 +              allSensors,
 +              TSDataType.INT32,
 +              fragmentInstanceContext.getOperatorContexts().get(3),
 +              null,
 +              null,
 +              true);
 +      seriesScanOperator4.initQueryDataSource(new QueryDataSource(seqResources, unSeqResources));
 +
 +      MeasurementPath measurementPath5 =
 +          new MeasurementPath(SERIES_SCAN_OPERATOR_TEST_SG + ".device2.sensor2", TSDataType.INT64);
 +      SeriesScanOperator seriesScanOperator5 =
 +          new SeriesScanOperator(
 +              planNodeId5,
 +              measurementPath5,
 +              allSensors,
 +              TSDataType.INT64,
 +              fragmentInstanceContext.getOperatorContexts().get(4),
 +              null,
 +              null,
 +              true);
 +      seriesScanOperator5.initQueryDataSource(new QueryDataSource(seqResources, unSeqResources));
 +
 +      MeasurementPath measurementPath6 =
 +          new MeasurementPath(SERIES_SCAN_OPERATOR_TEST_SG + ".device2.sensor3", TSDataType.FLOAT);
 +      SeriesScanOperator seriesScanOperator6 =
 +          new SeriesScanOperator(
 +              planNodeId6,
 +              measurementPath6,
 +              allSensors,
 +              TSDataType.FLOAT,
 +              fragmentInstanceContext.getOperatorContexts().get(5),
 +              null,
 +              null,
 +              true);
 +      seriesScanOperator6.initQueryDataSource(new QueryDataSource(seqResources, unSeqResources));
 +
 +      MeasurementPath measurementPath7 =
 +          new MeasurementPath(SERIES_SCAN_OPERATOR_TEST_SG + ".device2.sensor4", TSDataType.DOUBLE);
 +      SeriesScanOperator seriesScanOperator7 =
 +          new SeriesScanOperator(
 +              planNodeId7,
 +              measurementPath7,
 +              allSensors,
 +              TSDataType.DOUBLE,
 +              fragmentInstanceContext.getOperatorContexts().get(6),
 +              null,
 +              null,
 +              true);
 +      seriesScanOperator7.initQueryDataSource(new QueryDataSource(seqResources, unSeqResources));
 +
 +      MeasurementPath measurementPath8 =
 +          new MeasurementPath(SERIES_SCAN_OPERATOR_TEST_SG + ".device2.sensor5", TSDataType.DOUBLE);
 +      SeriesScanOperator seriesScanOperator8 =
 +          new SeriesScanOperator(
 +              planNodeId8,
 +              measurementPath8,
 +              allSensors,
 +              TSDataType.TEXT,
 +              fragmentInstanceContext.getOperatorContexts().get(7),
 +              null,
 +              null,
 +              true);
 +      seriesScanOperator8.initQueryDataSource(new QueryDataSource(seqResources, unSeqResources));
 +
 +      TimeJoinOperator timeJoinOperator =
 +          new TimeJoinOperator(
 +              fragmentInstanceContext.getOperatorContexts().get(8),
 +              Arrays.asList(
 +                  seriesScanOperator1,
 +                  seriesScanOperator2,
 +                  seriesScanOperator3,
 +                  seriesScanOperator4,
 +                  seriesScanOperator5,
 +                  seriesScanOperator6,
 +                  seriesScanOperator7,
 +                  seriesScanOperator8),
 +              OrderBy.TIMESTAMP_ASC,
 +              Arrays.asList(
 +                  TSDataType.BOOLEAN,
 +                  TSDataType.INT32,
 +                  TSDataType.INT64,
 +                  TSDataType.FLOAT,
 +                  TSDataType.DOUBLE,
 +                  TSDataType.TEXT,
 +                  TSDataType.BOOLEAN,
 +                  TSDataType.INT32,
 +                  TSDataType.INT64,
 +                  TSDataType.FLOAT,
 +                  TSDataType.DOUBLE,
 +                  TSDataType.TEXT,
 +                  TSDataType.BOOLEAN,
 +                  TSDataType.INT32,
 +                  TSDataType.INT64,
 +                  TSDataType.FLOAT,
 +                  TSDataType.DOUBLE,
 +                  TSDataType.TEXT),
 +              Arrays.asList(
 +                  new SingleColumnMerger(new InputLocation(0, 0), new AscTimeComparator()),
 +                  new SingleColumnMerger(new InputLocation(0, 1), new AscTimeComparator()),
 +                  new SingleColumnMerger(new InputLocation(0, 2), new AscTimeComparator()),
 +                  new SingleColumnMerger(new InputLocation(0, 3), new AscTimeComparator()),
 +                  new SingleColumnMerger(new InputLocation(0, 4), new AscTimeComparator()),
 +                  new SingleColumnMerger(new InputLocation(0, 5), new AscTimeComparator()),
 +                  new SingleColumnMerger(new InputLocation(1, 0), new AscTimeComparator()),
 +                  new SingleColumnMerger(new InputLocation(1, 1), new AscTimeComparator()),
 +                  new SingleColumnMerger(new InputLocation(1, 2), new AscTimeComparator()),
 +                  new SingleColumnMerger(new InputLocation(1, 3), new AscTimeComparator()),
 +                  new SingleColumnMerger(new InputLocation(1, 4), new AscTimeComparator()),
 +                  new SingleColumnMerger(new InputLocation(1, 5), new AscTimeComparator()),
 +                  new SingleColumnMerger(new InputLocation(2, 0), new AscTimeComparator()),
 +                  new SingleColumnMerger(new InputLocation(3, 0), new AscTimeComparator()),
 +                  new SingleColumnMerger(new InputLocation(4, 0), new AscTimeComparator()),
 +                  new SingleColumnMerger(new InputLocation(5, 0), new AscTimeComparator()),
 +                  new SingleColumnMerger(new InputLocation(6, 0), new AscTimeComparator()),
 +                  new SingleColumnMerger(new InputLocation(7, 0), new AscTimeComparator())),
 +              new AscTimeComparator());
 +      int count = 0;
 +      while (timeJoinOperator.hasNext()) {
 +        TsBlock tsBlock = timeJoinOperator.next();
 +        assertEquals(18, tsBlock.getValueColumnCount());
 +        assertTrue(tsBlock.getColumn(0) instanceof BooleanColumn);
 +        assertTrue(tsBlock.getColumn(1) instanceof IntColumn);
 +        assertTrue(tsBlock.getColumn(2) instanceof LongColumn);
 +        assertTrue(tsBlock.getColumn(3) instanceof FloatColumn);
 +        assertTrue(tsBlock.getColumn(4) instanceof DoubleColumn);
 +        assertTrue(tsBlock.getColumn(5) instanceof BinaryColumn);
 +        assertTrue(tsBlock.getColumn(6) instanceof BooleanColumn);
 +        assertTrue(tsBlock.getColumn(7) instanceof IntColumn);
 +        assertTrue(tsBlock.getColumn(8) instanceof LongColumn);
 +        assertTrue(tsBlock.getColumn(9) instanceof FloatColumn);
 +        assertTrue(tsBlock.getColumn(10) instanceof DoubleColumn);
 +        assertTrue(tsBlock.getColumn(11) instanceof BinaryColumn);
 +        assertTrue(tsBlock.getColumn(12) instanceof BooleanColumn);
 +        assertTrue(tsBlock.getColumn(13) instanceof IntColumn);
 +        assertTrue(tsBlock.getColumn(14) instanceof LongColumn);
 +        assertTrue(tsBlock.getColumn(15) instanceof FloatColumn);
 +        assertTrue(tsBlock.getColumn(16) instanceof DoubleColumn);
 +        assertTrue(tsBlock.getColumn(17) instanceof BinaryColumn);
 +
 +        assertEquals(20, tsBlock.getPositionCount());
 +        for (int i = 0; i < tsBlock.getPositionCount(); i++) {
 +          long expectedTime = i + 20L * count;
 +          assertEquals(expectedTime, tsBlock.getTimeByIndex(i));
 +          int delta = 0;
 +          if (expectedTime < 200) {
 +            delta = 20000;
 +          } else if (expectedTime < 260
 +              || (expectedTime >= 300 && expectedTime < 380)
 +              || expectedTime >= 400) {
 +            delta = 10000;
 +          }
 +          assertEquals((delta + expectedTime) % 2 == 0, tsBlock.getColumn(0).getBoolean(i));
 +          assertEquals((delta + expectedTime) % 2 == 0, tsBlock.getColumn(6).getBoolean(i));
 +          assertEquals((delta + expectedTime) % 2 == 0, tsBlock.getColumn(12).getBoolean(i));
 +          assertEquals(delta + expectedTime, tsBlock.getColumn(1).getInt(i));
 +          assertEquals(delta + expectedTime, tsBlock.getColumn(7).getInt(i));
 +          assertEquals(delta + expectedTime, tsBlock.getColumn(13).getInt(i));
 +          assertEquals(delta + expectedTime, tsBlock.getColumn(2).getLong(i));
 +          assertEquals(delta + expectedTime, tsBlock.getColumn(8).getLong(i));
 +          assertEquals(delta + expectedTime, tsBlock.getColumn(14).getLong(i));
 +          assertEquals(delta + expectedTime, tsBlock.getColumn(3).getFloat(i), DELTA);
 +          assertEquals(delta + expectedTime, tsBlock.getColumn(9).getFloat(i), DELTA);
 +          assertEquals(delta + expectedTime, tsBlock.getColumn(15).getFloat(i), DELTA);
 +          assertEquals(delta + expectedTime, tsBlock.getColumn(4).getDouble(i), DELTA);
 +          assertEquals(delta + expectedTime, tsBlock.getColumn(10).getDouble(i), DELTA);
 +          assertEquals(delta + expectedTime, tsBlock.getColumn(16).getDouble(i), DELTA);
 +          assertEquals(
 +              String.valueOf(delta + expectedTime), tsBlock.getColumn(5).getBinary(i).toString());
 +          assertEquals(
 +              String.valueOf(delta + expectedTime), tsBlock.getColumn(11).getBinary(i).toString());
 +          assertEquals(
 +              String.valueOf(delta + expectedTime), tsBlock.getColumn(17).getBinary(i).toString());
 +        }
 +        count++;
 +      }
 +      assertEquals(25, count);
 +    } catch (IllegalPathException e) {
 +      e.printStackTrace();
 +      fail();
 +    } finally {
 +      instanceNotificationExecutor.shutdown();
 +    }
 +  }
++
++  /** order by time desc */
++  @Test
++  public void batchTest3() {
++    ExecutorService instanceNotificationExecutor =
++        IoTDBThreadPoolFactory.newFixedThreadPool(1, "test-instance-notification");
++    try {
++      AlignedPath alignedPath1 =
++          new AlignedPath(
++              SERIES_SCAN_OPERATOR_TEST_SG + ".device0",
++              measurementSchemas.stream()
++                  .map(MeasurementSchema::getMeasurementId)
++                  .collect(Collectors.toList()),
++              measurementSchemas.stream()
++                  .map(m -> (IMeasurementSchema) m)
++                  .collect(Collectors.toList()));
++      QueryId queryId = new QueryId("stub_query");
++      FragmentInstanceId instanceId =
++          new FragmentInstanceId(new PlanFragmentId(queryId, 0), "stub-instance");
++      FragmentInstanceStateMachine stateMachine =
++          new FragmentInstanceStateMachine(instanceId, instanceNotificationExecutor);
++      FragmentInstanceContext fragmentInstanceContext =
++          createFragmentInstanceContext(instanceId, stateMachine);
++      PlanNodeId planNodeId1 = new PlanNodeId("1");
++      fragmentInstanceContext.addOperatorContext(
++          1, planNodeId1, AlignedSeriesScanOperator.class.getSimpleName());
++      PlanNodeId planNodeId2 = new PlanNodeId("2");
++      fragmentInstanceContext.addOperatorContext(
++          2, planNodeId2, AlignedSeriesScanOperator.class.getSimpleName());
++      PlanNodeId planNodeId3 = new PlanNodeId("3");
++      fragmentInstanceContext.addOperatorContext(
++          3, planNodeId3, SeriesScanOperator.class.getSimpleName());
++      PlanNodeId planNodeId4 = new PlanNodeId("4");
++      fragmentInstanceContext.addOperatorContext(
++          4, planNodeId4, SeriesScanOperator.class.getSimpleName());
++      PlanNodeId planNodeId5 = new PlanNodeId("5");
++      fragmentInstanceContext.addOperatorContext(
++          5, planNodeId5, SeriesScanOperator.class.getSimpleName());
++      PlanNodeId planNodeId6 = new PlanNodeId("6");
++      fragmentInstanceContext.addOperatorContext(
++          6, planNodeId6, SeriesScanOperator.class.getSimpleName());
++      PlanNodeId planNodeId7 = new PlanNodeId("7");
++      fragmentInstanceContext.addOperatorContext(
++          7, planNodeId7, SeriesScanOperator.class.getSimpleName());
++      PlanNodeId planNodeId8 = new PlanNodeId("8");
++      fragmentInstanceContext.addOperatorContext(
++          8, planNodeId8, SeriesScanOperator.class.getSimpleName());
++      fragmentInstanceContext.addOperatorContext(
++          9, new PlanNodeId("9"), TimeJoinOperator.class.getSimpleName());
++      AlignedSeriesScanOperator seriesScanOperator1 =
++          new AlignedSeriesScanOperator(
++              planNodeId1,
++              alignedPath1,
++              fragmentInstanceContext.getOperatorContexts().get(0),
++              null,
++              null,
++              false);
++      seriesScanOperator1.initQueryDataSource(new QueryDataSource(seqResources, unSeqResources));
++
++      AlignedPath alignedPath2 =
++          new AlignedPath(
++              SERIES_SCAN_OPERATOR_TEST_SG + ".device1",
++              measurementSchemas.stream()
++                  .map(MeasurementSchema::getMeasurementId)
++                  .collect(Collectors.toList()),
++              measurementSchemas.stream()
++                  .map(m -> (IMeasurementSchema) m)
++                  .collect(Collectors.toList()));
++      AlignedSeriesScanOperator seriesScanOperator2 =
++          new AlignedSeriesScanOperator(
++              planNodeId2,
++              alignedPath2,
++              fragmentInstanceContext.getOperatorContexts().get(1),
++              null,
++              null,
++              false);
++      seriesScanOperator2.initQueryDataSource(new QueryDataSource(seqResources, unSeqResources));
++
++      Set<String> allSensors = new HashSet<>();
++      allSensors.add("sensor0");
++      allSensors.add("sensor1");
++      allSensors.add("sensor2");
++      allSensors.add("sensor3");
++      allSensors.add("sensor4");
++      allSensors.add("sensor5");
++
++      MeasurementPath measurementPath3 =
++          new MeasurementPath(
++              SERIES_SCAN_OPERATOR_TEST_SG + ".device2.sensor0", TSDataType.BOOLEAN);
++      SeriesScanOperator seriesScanOperator3 =
++          new SeriesScanOperator(
++              planNodeId3,
++              measurementPath3,
++              allSensors,
++              TSDataType.BOOLEAN,
++              fragmentInstanceContext.getOperatorContexts().get(2),
++              null,
++              null,
++              false);
++      seriesScanOperator3.initQueryDataSource(new QueryDataSource(seqResources, unSeqResources));
++
++      MeasurementPath measurementPath4 =
++          new MeasurementPath(SERIES_SCAN_OPERATOR_TEST_SG + ".device2.sensor1", TSDataType.INT32);
++      SeriesScanOperator seriesScanOperator4 =
++          new SeriesScanOperator(
++              planNodeId4,
++              measurementPath4,
++              allSensors,
++              TSDataType.INT32,
++              fragmentInstanceContext.getOperatorContexts().get(3),
++              null,
++              null,
++              false);
++      seriesScanOperator4.initQueryDataSource(new QueryDataSource(seqResources, unSeqResources));
++
++      MeasurementPath measurementPath5 =
++          new MeasurementPath(SERIES_SCAN_OPERATOR_TEST_SG + ".device2.sensor2", TSDataType.INT64);
++      SeriesScanOperator seriesScanOperator5 =
++          new SeriesScanOperator(
++              planNodeId5,
++              measurementPath5,
++              allSensors,
++              TSDataType.INT64,
++              fragmentInstanceContext.getOperatorContexts().get(4),
++              null,
++              null,
++              false);
++      seriesScanOperator5.initQueryDataSource(new QueryDataSource(seqResources, unSeqResources));
++
++      MeasurementPath measurementPath6 =
++          new MeasurementPath(SERIES_SCAN_OPERATOR_TEST_SG + ".device2.sensor3", TSDataType.FLOAT);
++      SeriesScanOperator seriesScanOperator6 =
++          new SeriesScanOperator(
++              planNodeId6,
++              measurementPath6,
++              allSensors,
++              TSDataType.FLOAT,
++              fragmentInstanceContext.getOperatorContexts().get(5),
++              null,
++              null,
++              false);
++      seriesScanOperator6.initQueryDataSource(new QueryDataSource(seqResources, unSeqResources));
++
++      MeasurementPath measurementPath7 =
++          new MeasurementPath(SERIES_SCAN_OPERATOR_TEST_SG + ".device2.sensor4", TSDataType.DOUBLE);
++      SeriesScanOperator seriesScanOperator7 =
++          new SeriesScanOperator(
++              planNodeId7,
++              measurementPath7,
++              allSensors,
++              TSDataType.DOUBLE,
++              fragmentInstanceContext.getOperatorContexts().get(6),
++              null,
++              null,
++              false);
++      seriesScanOperator7.initQueryDataSource(new QueryDataSource(seqResources, unSeqResources));
++
++      MeasurementPath measurementPath8 =
++          new MeasurementPath(SERIES_SCAN_OPERATOR_TEST_SG + ".device2.sensor5", TSDataType.DOUBLE);
++      SeriesScanOperator seriesScanOperator8 =
++          new SeriesScanOperator(
++              planNodeId8,
++              measurementPath8,
++              allSensors,
++              TSDataType.TEXT,
++              fragmentInstanceContext.getOperatorContexts().get(7),
++              null,
++              null,
++              false);
++      seriesScanOperator8.initQueryDataSource(new QueryDataSource(seqResources, unSeqResources));
++
++      TimeJoinOperator timeJoinOperator =
++          new TimeJoinOperator(
++              fragmentInstanceContext.getOperatorContexts().get(8),
++              Arrays.asList(
++                  seriesScanOperator1,
++                  seriesScanOperator2,
++                  seriesScanOperator3,
++                  seriesScanOperator4,
++                  seriesScanOperator5,
++                  seriesScanOperator6,
++                  seriesScanOperator7,
++                  seriesScanOperator8),
++              OrderBy.TIMESTAMP_DESC,
++              Arrays.asList(
++                  TSDataType.BOOLEAN,
++                  TSDataType.INT32,
++                  TSDataType.INT64,
++                  TSDataType.FLOAT,
++                  TSDataType.DOUBLE,
++                  TSDataType.TEXT,
++                  TSDataType.BOOLEAN,
++                  TSDataType.INT32,
++                  TSDataType.INT64,
++                  TSDataType.FLOAT,
++                  TSDataType.DOUBLE,
++                  TSDataType.TEXT,
++                  TSDataType.BOOLEAN,
++                  TSDataType.INT32,
++                  TSDataType.INT64,
++                  TSDataType.FLOAT,
++                  TSDataType.DOUBLE,
++                  TSDataType.TEXT),
++              Arrays.asList(
++                  new SingleColumnMerger(new InputLocation(0, 0), new DescTimeComparator()),
++                  new SingleColumnMerger(new InputLocation(0, 1), new DescTimeComparator()),
++                  new SingleColumnMerger(new InputLocation(0, 2), new DescTimeComparator()),
++                  new SingleColumnMerger(new InputLocation(0, 3), new DescTimeComparator()),
++                  new SingleColumnMerger(new InputLocation(0, 4), new DescTimeComparator()),
++                  new SingleColumnMerger(new InputLocation(0, 5), new DescTimeComparator()),
++                  new SingleColumnMerger(new InputLocation(1, 0), new DescTimeComparator()),
++                  new SingleColumnMerger(new InputLocation(1, 1), new DescTimeComparator()),
++                  new SingleColumnMerger(new InputLocation(1, 2), new DescTimeComparator()),
++                  new SingleColumnMerger(new InputLocation(1, 3), new DescTimeComparator()),
++                  new SingleColumnMerger(new InputLocation(1, 4), new DescTimeComparator()),
++                  new SingleColumnMerger(new InputLocation(1, 5), new DescTimeComparator()),
++                  new SingleColumnMerger(new InputLocation(2, 0), new DescTimeComparator()),
++                  new SingleColumnMerger(new InputLocation(3, 0), new DescTimeComparator()),
++                  new SingleColumnMerger(new InputLocation(4, 0), new DescTimeComparator()),
++                  new SingleColumnMerger(new InputLocation(5, 0), new DescTimeComparator()),
++                  new SingleColumnMerger(new InputLocation(6, 0), new DescTimeComparator()),
++                  new SingleColumnMerger(new InputLocation(7, 0), new DescTimeComparator())),
++              new DescTimeComparator());
++
++      int count = 25;
++      while (timeJoinOperator.hasNext()) {
++        TsBlock tsBlock = timeJoinOperator.next();
++        assertEquals(18, tsBlock.getValueColumnCount());
++        assertTrue(tsBlock.getColumn(0) instanceof BooleanColumn);
++        assertTrue(tsBlock.getColumn(1) instanceof IntColumn);
++        assertTrue(tsBlock.getColumn(2) instanceof LongColumn);
++        assertTrue(tsBlock.getColumn(3) instanceof FloatColumn);
++        assertTrue(tsBlock.getColumn(4) instanceof DoubleColumn);
++        assertTrue(tsBlock.getColumn(5) instanceof BinaryColumn);
++        assertTrue(tsBlock.getColumn(6) instanceof BooleanColumn);
++        assertTrue(tsBlock.getColumn(7) instanceof IntColumn);
++        assertTrue(tsBlock.getColumn(8) instanceof LongColumn);
++        assertTrue(tsBlock.getColumn(9) instanceof FloatColumn);
++        assertTrue(tsBlock.getColumn(10) instanceof DoubleColumn);
++        assertTrue(tsBlock.getColumn(11) instanceof BinaryColumn);
++        assertTrue(tsBlock.getColumn(12) instanceof BooleanColumn);
++        assertTrue(tsBlock.getColumn(13) instanceof IntColumn);
++        assertTrue(tsBlock.getColumn(14) instanceof LongColumn);
++        assertTrue(tsBlock.getColumn(15) instanceof FloatColumn);
++        assertTrue(tsBlock.getColumn(16) instanceof DoubleColumn);
++        assertTrue(tsBlock.getColumn(17) instanceof BinaryColumn);
++
++        assertEquals(20, tsBlock.getPositionCount());
++        for (int i = 0; i < tsBlock.getPositionCount(); i++) {
++          long expectedTime = tsBlock.getPositionCount() - i - 1 + 20L * (count - 1);
++          assertEquals(expectedTime, tsBlock.getTimeByIndex(i));
++          int delta = 0;
++          if (expectedTime < 200) {
++            delta = 20000;
++          } else if (expectedTime < 260
++              || (expectedTime >= 300 && expectedTime < 380)
++              || expectedTime >= 400) {
++            delta = 10000;
++          }
++          assertEquals((delta + expectedTime) % 2 == 0, tsBlock.getColumn(0).getBoolean(i));
++          assertEquals((delta + expectedTime) % 2 == 0, tsBlock.getColumn(6).getBoolean(i));
++          assertEquals((delta + expectedTime) % 2 == 0, tsBlock.getColumn(12).getBoolean(i));
++          assertEquals(delta + expectedTime, tsBlock.getColumn(1).getInt(i));
++          assertEquals(delta + expectedTime, tsBlock.getColumn(7).getInt(i));
++          assertEquals(delta + expectedTime, tsBlock.getColumn(13).getInt(i));
++          assertEquals(delta + expectedTime, tsBlock.getColumn(2).getLong(i));
++          assertEquals(delta + expectedTime, tsBlock.getColumn(8).getLong(i));
++          assertEquals(delta + expectedTime, tsBlock.getColumn(14).getLong(i));
++          assertEquals(delta + expectedTime, tsBlock.getColumn(3).getFloat(i), DELTA);
++          assertEquals(delta + expectedTime, tsBlock.getColumn(9).getFloat(i), DELTA);
++          assertEquals(delta + expectedTime, tsBlock.getColumn(15).getFloat(i), DELTA);
++          assertEquals(delta + expectedTime, tsBlock.getColumn(4).getDouble(i), DELTA);
++          assertEquals(delta + expectedTime, tsBlock.getColumn(10).getDouble(i), DELTA);
++          assertEquals(delta + expectedTime, tsBlock.getColumn(16).getDouble(i), DELTA);
++          assertEquals(
++              String.valueOf(delta + expectedTime), tsBlock.getColumn(5).getBinary(i).toString());
++          assertEquals(
++              String.valueOf(delta + expectedTime), tsBlock.getColumn(11).getBinary(i).toString());
++          assertEquals(
++              String.valueOf(delta + expectedTime), tsBlock.getColumn(17).getBinary(i).toString());
++        }
++        count--;
++      }
++      assertEquals(0, count);
++    } catch (IllegalPathException e) {
++      e.printStackTrace();
++      fail();
++    } finally {
++      instanceNotificationExecutor.shutdown();
++    }
++  }
 +}
diff --cc server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/AlignedSeriesTestUtil.java
index 32ea855b57,0000000000..681e818223
mode 100644,000000..100644
--- a/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/AlignedSeriesTestUtil.java
+++ b/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/AlignedSeriesTestUtil.java
@@@ -1,260 -1,0 +1,260 @@@
 +/*
 + * 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.mpp.execution.operator;
 +
++import org.apache.iotdb.commons.exception.MetadataException;
++import org.apache.iotdb.commons.path.PartialPath;
 +import org.apache.iotdb.db.constant.TestConstant;
 +import org.apache.iotdb.db.engine.cache.ChunkCache;
 +import org.apache.iotdb.db.engine.cache.TimeSeriesMetadataCache;
 +import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 +import org.apache.iotdb.db.engine.storagegroup.TsFileResourceStatus;
- import org.apache.iotdb.db.exception.metadata.MetadataException;
- import org.apache.iotdb.db.metadata.path.PartialPath;
 +import org.apache.iotdb.db.query.control.FileReaderManager;
 +import org.apache.iotdb.db.service.IoTDB;
 +import org.apache.iotdb.db.utils.EnvironmentUtils;
 +import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
 +import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
 +import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 +import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 +import org.apache.iotdb.tsfile.read.common.Path;
 +import org.apache.iotdb.tsfile.write.TsFileWriter;
 +import org.apache.iotdb.tsfile.write.record.TSRecord;
 +import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
 +import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 +
 +import org.junit.Assert;
 +
 +import java.io.File;
 +import java.io.IOException;
 +import java.util.Collections;
 +import java.util.List;
 +import java.util.stream.Collectors;
 +
 +import static org.apache.iotdb.commons.conf.IoTDBConstant.PATH_SEPARATOR;
 +
 +/**
 + * This util contains 5 seqFiles and 5 unseqFiles in default.
 + *
 + * <p>Sequence time range of data: [0, 99], [100, 199], [200, 299], [300, 399], [400, 499]
 + *
 + * <p>UnSequence time range of data: [0, 19], [100, 139], [200, 259], [300, 379], [400, 499], [0,
 + * 199]
 + *
 + * <p>d0 and d1 are aligned, d2 is nonAligned
 + */
 +public class AlignedSeriesTestUtil {
 +
 +  public static void setUp(
 +      List<MeasurementSchema> measurementSchemas,
 +      List<TsFileResource> seqResources,
 +      List<TsFileResource> unseqResources,
 +      String sgName)
 +      throws MetadataException, IOException, WriteProcessException {
 +    IoTDB.configManager.init();
 +    prepareSeries(measurementSchemas, sgName);
 +    prepareFiles(seqResources, unseqResources, measurementSchemas, sgName);
 +  }
 +
 +  public static void tearDown(
 +      List<TsFileResource> seqResources, List<TsFileResource> unseqResources) throws IOException {
 +    removeFiles(seqResources, unseqResources);
 +    seqResources.clear();
 +    unseqResources.clear();
 +    ChunkCache.getInstance().clear();
 +    TimeSeriesMetadataCache.getInstance().clear();
 +    IoTDB.configManager.clear();
 +    EnvironmentUtils.cleanAllDir();
 +  }
 +
 +  private static void prepareFiles(
 +      List<TsFileResource> seqResources,
 +      List<TsFileResource> unseqResources,
 +      List<MeasurementSchema> measurementSchemas,
 +      String sgName)
 +      throws IOException, WriteProcessException {
 +    int seqFileNum = 5;
 +    long ptNum = 100;
 +    for (int i = 0; i < seqFileNum; i++) {
 +      File file = new File(TestConstant.getTestTsFilePath(sgName, 0, 0, i));
 +      TsFileResource tsFileResource = new TsFileResource(file);
 +      tsFileResource.setStatus(TsFileResourceStatus.CLOSED);
 +      tsFileResource.setMinPlanIndex(i);
 +      tsFileResource.setMaxPlanIndex(i);
 +      tsFileResource.setVersion(i);
 +      seqResources.add(tsFileResource);
 +      prepareFile(sgName, tsFileResource, i * ptNum, ptNum, 0, measurementSchemas);
 +    }
 +    int unseqFileNum = 5;
 +    for (int i = 0; i < unseqFileNum; i++) {
 +      File file = new File(TestConstant.getTestTsFilePath(sgName, 0, 0, i + seqFileNum));
 +      TsFileResource tsFileResource = new TsFileResource(file);
 +      tsFileResource.setStatus(TsFileResourceStatus.CLOSED);
 +      tsFileResource.setMinPlanIndex(i + seqFileNum);
 +      tsFileResource.setMaxPlanIndex(i + seqFileNum);
 +      tsFileResource.setVersion(i + seqFileNum);
 +      unseqResources.add(tsFileResource);
 +      prepareFile(
 +          sgName,
 +          tsFileResource,
 +          i * ptNum,
 +          ptNum * (i + 1) / unseqFileNum,
 +          10000,
 +          measurementSchemas);
 +    }
 +
 +    File file = new File(TestConstant.getTestTsFilePath(sgName, 0, 0, seqFileNum + unseqFileNum));
 +    TsFileResource tsFileResource = new TsFileResource(file);
 +    tsFileResource.setStatus(TsFileResourceStatus.CLOSED);
 +    tsFileResource.setMinPlanIndex(seqFileNum + unseqFileNum);
 +    tsFileResource.setMaxPlanIndex(seqFileNum + unseqFileNum);
 +    tsFileResource.setVersion(seqFileNum + unseqFileNum);
 +    unseqResources.add(tsFileResource);
 +    prepareFile(sgName, tsFileResource, 0, ptNum * 2, 20000, measurementSchemas);
 +  }
 +
 +  private static void prepareFile(
 +      String sgName,
 +      TsFileResource tsFileResource,
 +      long timeOffset,
 +      long ptNum,
 +      long valueOffset,
 +      List<MeasurementSchema> measurementSchemas)
 +      throws IOException, WriteProcessException {
 +    File file = tsFileResource.getTsFile();
 +    if (!file.getParentFile().exists()) {
 +      Assert.assertTrue(file.getParentFile().mkdirs());
 +    }
 +    TsFileWriter fileWriter = new TsFileWriter(file);
 +
 +    String device0 = sgName + PATH_SEPARATOR + "device0";
 +    String device1 = sgName + PATH_SEPARATOR + "device1";
 +    String device2 = sgName + PATH_SEPARATOR + "device2";
 +
 +    fileWriter.registerAlignedTimeseries(new Path(device0), measurementSchemas);
 +    fileWriter.registerAlignedTimeseries(new Path(device1), measurementSchemas);
 +    fileWriter.registerTimeseries(new Path(device2), measurementSchemas);
 +    for (long i = timeOffset; i < timeOffset + ptNum; i++) {
 +
 +      TSRecord record = new TSRecord(i, device0);
 +      int index = 0;
 +      for (MeasurementSchema measurementSchema : measurementSchemas) {
 +        record.addTuple(
 +            DataPoint.getDataPoint(
 +                measurementSchema.getType(),
 +                measurementSchema.getMeasurementId(),
 +                index == 0
 +                    ? String.valueOf((i + valueOffset) % 2 == 0)
 +                    : String.valueOf((i + valueOffset))));
 +        index++;
 +      }
 +      fileWriter.writeAligned(record);
 +      tsFileResource.updateStartTime(device0, i);
 +      tsFileResource.updateEndTime(device0, i);
 +
 +      record.deviceId = device1;
 +      fileWriter.writeAligned(record);
 +      tsFileResource.updateStartTime(device1, i);
 +      tsFileResource.updateEndTime(device1, i);
 +
 +      record.deviceId = device2;
 +      fileWriter.write(record);
 +      tsFileResource.updateStartTime(device2, i);
 +      tsFileResource.updateEndTime(device2, i);
 +
 +      long flushInterval = 20;
 +      if ((i + 1) % flushInterval == 0) {
 +        fileWriter.flushAllChunkGroups();
 +      }
 +    }
 +    fileWriter.close();
 +  }
 +
 +  private static void prepareSeries(List<MeasurementSchema> measurementSchemas, String sgName)
 +      throws MetadataException {
 +
 +    measurementSchemas.add(
 +        new MeasurementSchema(
 +            "sensor0", TSDataType.BOOLEAN, TSEncoding.PLAIN, CompressionType.SNAPPY));
 +    measurementSchemas.add(
 +        new MeasurementSchema("sensor1", TSDataType.INT32, TSEncoding.RLE, CompressionType.SNAPPY));
 +    measurementSchemas.add(
 +        new MeasurementSchema(
 +            "sensor2", TSDataType.INT64, TSEncoding.TS_2DIFF, CompressionType.SNAPPY));
 +    measurementSchemas.add(
 +        new MeasurementSchema(
 +            "sensor3", TSDataType.FLOAT, TSEncoding.GORILLA, CompressionType.SNAPPY));
 +    measurementSchemas.add(
 +        new MeasurementSchema(
 +            "sensor4", TSDataType.DOUBLE, TSEncoding.GORILLA, CompressionType.SNAPPY));
 +    measurementSchemas.add(
 +        new MeasurementSchema(
 +            "sensor5", TSDataType.TEXT, TSEncoding.PLAIN, CompressionType.SNAPPY));
 +
 +    IoTDB.schemaProcessor.setStorageGroup(new PartialPath(sgName));
 +    IoTDB.schemaProcessor.createAlignedTimeSeries(
 +        new PartialPath(sgName + PATH_SEPARATOR + "device0"),
 +        measurementSchemas.stream()
 +            .map(MeasurementSchema::getMeasurementId)
 +            .collect(Collectors.toList()),
 +        measurementSchemas.stream().map(MeasurementSchema::getType).collect(Collectors.toList()),
 +        measurementSchemas.stream()
 +            .map(MeasurementSchema::getEncodingType)
 +            .collect(Collectors.toList()),
 +        measurementSchemas.stream()
 +            .map(MeasurementSchema::getCompressor)
 +            .collect(Collectors.toList()));
 +    IoTDB.schemaProcessor.createAlignedTimeSeries(
 +        new PartialPath(sgName + PATH_SEPARATOR + "device1"),
 +        measurementSchemas.stream()
 +            .map(MeasurementSchema::getMeasurementId)
 +            .collect(Collectors.toList()),
 +        measurementSchemas.stream().map(MeasurementSchema::getType).collect(Collectors.toList()),
 +        measurementSchemas.stream()
 +            .map(MeasurementSchema::getEncodingType)
 +            .collect(Collectors.toList()),
 +        measurementSchemas.stream()
 +            .map(MeasurementSchema::getCompressor)
 +            .collect(Collectors.toList()));
 +    for (MeasurementSchema measurementSchema : measurementSchemas) {
 +      IoTDB.schemaProcessor.createTimeseries(
 +          new PartialPath(
 +              sgName
 +                  + PATH_SEPARATOR
 +                  + "device2"
 +                  + PATH_SEPARATOR
 +                  + measurementSchema.getMeasurementId()),
 +          measurementSchema.getType(),
 +          measurementSchema.getEncodingType(),
 +          measurementSchema.getCompressor(),
 +          Collections.emptyMap());
 +    }
 +  }
 +
 +  private static void removeFiles(
 +      List<TsFileResource> seqResources, List<TsFileResource> unseqResources) throws IOException {
 +    for (TsFileResource tsFileResource : seqResources) {
 +      tsFileResource.remove();
 +    }
 +    for (TsFileResource tsFileResource : unseqResources) {
 +      tsFileResource.remove();
 +    }
 +
 +    FileReaderManager.getInstance().closeAndRemoveAllOpenedReaders();
 +  }
 +}