This is an automated email from the ASF dual-hosted git repository. jackietien pushed a commit to branch new_vector in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit ae1aab985db43a268f88afc8c801780ed9ca3573 Merge: c95efc9 27ff250 Author: JackieTien97 <[email protected]> AuthorDate: Mon Nov 1 10:51:29 2021 +0800 resolve conflicts .../cluster/client/sync/SyncClientAdaptor.java | 2 +- .../iotdb/cluster/coordinator/Coordinator.java | 2 +- .../cluster/log/applier/AsyncDataLogApplier.java | 2 +- .../iotdb/cluster/log/applier/BaseApplier.java | 2 +- .../iotdb/cluster/log/applier/DataLogApplier.java | 2 +- .../manage/FilePartitionedSnapshotLogManager.java | 2 +- .../log/manage/MetaSingleSnapshotLogManager.java | 2 +- .../log/manage/PartitionedSnapshotLogManager.java | 2 +- .../iotdb/cluster/log/snapshot/FileSnapshot.java | 2 +- .../cluster/log/snapshot/MetaSimpleSnapshot.java | 2 +- .../apache/iotdb/cluster/metadata/CMManager.java | 19 +- .../apache/iotdb/cluster/metadata/MetaPuller.java | 2 +- .../iotdb/cluster/partition/PartitionTable.java | 2 +- .../cluster/query/ClusterDataQueryExecutor.java | 2 +- .../cluster/query/ClusterPhysicalGenerator.java | 4 +- .../iotdb/cluster/query/ClusterPlanExecutor.java | 2 +- .../iotdb/cluster/query/ClusterPlanRouter.java | 2 +- .../iotdb/cluster/query/LocalQueryExecutor.java | 2 +- .../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 | 12 +- .../cluster/query/reader/ClusterTimeGenerator.java | 2 +- .../query/reader/mult/MultDataSourceInfo.java | 2 +- .../cluster/server/member/DataGroupMember.java | 2 +- .../cluster/server/member/MetaGroupMember.java | 2 +- .../iotdb/cluster/utils/ClusterQueryUtils.java | 12 +- .../apache/iotdb/cluster/utils/ClusterUtils.java | 2 +- .../cluster/utils/nodetool/ClusterMonitor.java | 2 +- .../cluster/client/sync/SyncClientAdaptorTest.java | 2 +- .../org/apache/iotdb/cluster/common/IoTDBTest.java | 2 +- .../iotdb/cluster/common/TestLogApplier.java | 2 +- .../org/apache/iotdb/cluster/common/TestUtils.java | 2 +- .../apache/iotdb/cluster/log/LogParserTest.java | 2 +- .../log/applier/AsyncDataLogApplierTest.java | 2 +- .../cluster/log/applier/DataLogApplierTest.java | 2 +- .../cluster/log/applier/MetaLogApplierTest.java | 2 +- .../cluster/log/logtypes/SerializeLogTest.java | 2 +- .../FilePartitionedSnapshotLogManagerTest.java | 2 +- .../manage/MetaSingleSnapshotLogManagerTest.java | 2 +- .../cluster/log/snapshot/DataSnapshotTest.java | 2 +- .../cluster/log/snapshot/FileSnapshotTest.java | 2 +- .../log/snapshot/MetaSimpleSnapshotTest.java | 2 +- .../log/snapshot/PartitionedSnapshotTest.java | 2 +- .../cluster/log/snapshot/PullSnapshotTaskTest.java | 2 +- .../cluster/partition/SlotPartitionTableTest.java | 2 +- .../apache/iotdb/cluster/query/BaseQueryTest.java | 2 +- .../query/ClusterAggregateExecutorTest.java | 2 +- .../query/ClusterDataQueryExecutorTest.java | 2 +- .../query/ClusterPhysicalGeneratorTest.java | 2 +- .../cluster/query/ClusterPlanExecutorTest.java | 2 +- .../cluster/query/ClusterQueryRouterTest.java | 2 +- .../query/fill/ClusterFillExecutorTest.java | 2 +- .../ClusterGroupByNoVFilterDataSetTest.java | 2 +- .../groupby/ClusterGroupByVFilterDataSetTest.java | 2 +- .../query/groupby/MergeGroupByExecutorTest.java | 2 +- .../query/groupby/RemoteGroupByExecutorTest.java | 2 +- .../query/reader/ClusterReaderFactoryTest.java | 2 +- .../query/reader/ClusterTimeGeneratorTest.java | 2 +- .../mult/AssignPathManagedMergeReaderTest.java | 2 +- .../reader/mult/RemoteMultSeriesReaderTest.java | 2 +- .../clusterinfo/ClusterInfoServiceImplTest.java | 2 +- .../handlers/forwarder/ForwardPlanHandlerTest.java | 2 +- .../iotdb/cluster/server/member/BaseMember.java | 2 +- .../cluster/server/member/DataGroupMemberTest.java | 2 +- .../cluster/server/member/MetaGroupMemberTest.java | 2 +- .../iotdb/cluster/utils/SerializeUtilTest.java | 2 +- docs/UserGuide/Advanced-Features/Triggers.md | 2 +- docs/zh/UserGuide/Advanced-Features/Triggers.md | 2 +- .../org/apache/iotdb/trigger/TriggerExample.java | 2 +- .../org/apache/iotdb/db/auth/AuthorityChecker.java | 2 +- .../apache/iotdb/db/cq/ContinuousQueryTask.java | 2 +- .../org/apache/iotdb/db/engine/StorageEngine.java | 2 +- .../inplace/manage/CrossSpaceMergeContext.java | 2 +- .../inplace/manage/CrossSpaceMergeResource.java | 2 +- .../cross/inplace/recover/LogAnalyzer.java | 2 +- .../cross/inplace/recover/MergeLogger.java | 2 +- .../cross/inplace/selector/IMergePathSelector.java | 2 +- .../cross/inplace/selector/NaivePathSelector.java | 2 +- .../cross/inplace/task/CrossSpaceMergeTask.java | 2 +- .../cross/inplace/task/MergeFileTask.java | 2 +- .../cross/inplace/task/MergeMultiChunkTask.java | 2 +- .../cross/inplace/task/RecoverCrossMergeTask.java | 2 +- .../inner/utils/InnerSpaceCompactionUtils.java | 2 +- .../iotdb/db/engine/memtable/AbstractMemTable.java | 9 +- .../apache/iotdb/db/engine/memtable/IMemTable.java | 2 +- .../db/engine/memtable/VectorWritableMemChunk.java | 16 +- .../iotdb/db/engine/memtable/WritableMemChunk.java | 3 +- .../iotdb/db/engine/modification/Deletion.java | 2 +- .../iotdb/db/engine/modification/Modification.java | 2 +- .../io/LocalTextModificationAccessor.java | 2 +- .../selectinto/InsertTabletPlanGenerator.java | 2 +- .../selectinto/InsertTabletPlansIterator.java | 2 +- .../engine/storagegroup/StorageGroupProcessor.java | 2 +- .../db/engine/storagegroup/TsFileProcessor.java | 161 +++++++++------ .../virtualSg/HashVirtualPartitioner.java | 2 +- .../storagegroup/virtualSg/VirtualPartitioner.java | 2 +- .../virtualSg/VirtualStorageGroupManager.java | 2 +- .../service/TriggerRegistrationInformation.java | 2 +- .../service/TriggerRegistrationService.java | 2 +- .../sink/local/LocalIoTDBConfiguration.java | 2 +- .../trigger/sink/local/LocalIoTDBHandler.java | 2 +- .../trigger/sink/mqtt/MQTTConfiguration.java | 2 +- .../org/apache/iotdb/db/metadata/MManager.java | 57 +++--- .../iotdb/db/metadata/VectorPartialPath.java | 166 --------------- .../db/metadata/lastCache/LastCacheManager.java | 2 +- .../iotdb/db/metadata/logfile/MLogUpgrader.java | 2 +- .../iotdb/db/metadata/logfile/MLogWriter.java | 2 +- .../org/apache/iotdb/db/metadata/mnode/IMNode.java | 2 +- .../iotdb/db/metadata/mnode/IMeasurementMNode.java | 3 + .../org/apache/iotdb/db/metadata/mnode/MNode.java | 2 +- .../iotdb/db/metadata/mnode/MeasurementMNode.java | 13 ++ .../org/apache/iotdb/db/metadata/mtree/MTree.java | 19 +- .../db/metadata/mtree/traverser/Traverser.java | 2 +- .../traverser/collector/CollectorTraverser.java | 2 +- .../mtree/traverser/collector/EntityCollector.java | 2 +- .../mtree/traverser/collector/MNodeCollector.java | 2 +- .../traverser/collector/MeasurementCollector.java | 2 +- .../traverser/collector/StorageGroupCollector.java | 2 +- .../mtree/traverser/counter/CounterTraverser.java | 2 +- .../mtree/traverser/counter/EntityCounter.java | 2 +- .../mtree/traverser/counter/MNodeLevelCounter.java | 2 +- .../traverser/counter/MeasurementCounter.java | 2 +- .../traverser/counter/StorageGroupCounter.java | 2 +- .../apache/iotdb/db/metadata/path/AlignedPath.java | 227 +++++++++++++++++++++ .../iotdb/db/metadata/path/MeasurementPath.java | 125 ++++++++++++ .../iotdb/db/metadata/{ => path}/PartialPath.java | 85 ++++---- .../apache/iotdb/db/metadata/tag/TagManager.java | 2 +- .../iotdb/db/metadata/utils/MetaFormatUtils.java | 2 +- .../apache/iotdb/db/metadata/utils/MetaUtils.java | 2 +- .../org/apache/iotdb/db/monitor/StatMonitor.java | 2 +- .../org/apache/iotdb/db/mqtt/PublishHandler.java | 2 +- .../apache/iotdb/db/qp/constant/SQLConstant.java | 2 +- .../apache/iotdb/db/qp/executor/IPlanExecutor.java | 2 +- .../apache/iotdb/db/qp/executor/PlanExecutor.java | 2 +- .../qp/logical/crud/AggregationQueryOperator.java | 2 +- .../db/qp/logical/crud/BasicFunctionOperator.java | 2 +- .../db/qp/logical/crud/DeleteDataOperator.java | 2 +- .../iotdb/db/qp/logical/crud/FilterOperator.java | 2 +- .../iotdb/db/qp/logical/crud/FromComponent.java | 2 +- .../iotdb/db/qp/logical/crud/InOperator.java | 2 +- .../iotdb/db/qp/logical/crud/InsertOperator.java | 2 +- .../iotdb/db/qp/logical/crud/LikeOperator.java | 2 +- .../iotdb/db/qp/logical/crud/QueryOperator.java | 10 +- .../iotdb/db/qp/logical/crud/RegexpOperator.java | 2 +- .../iotdb/db/qp/logical/crud/SelectComponent.java | 2 +- .../db/qp/logical/crud/SelectIntoOperator.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 +- .../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 +- .../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 +- .../org/apache/iotdb/db/qp/physical/BatchPlan.java | 2 +- .../apache/iotdb/db/qp/physical/PhysicalPlan.java | 2 +- .../iotdb/db/qp/physical/crud/AggregationPlan.java | 2 +- .../db/qp/physical/crud/AlignByDevicePlan.java | 2 +- .../db/qp/physical/crud/CreateTemplatePlan.java | 2 +- .../db/qp/physical/crud/DeletePartitionPlan.java | 2 +- .../iotdb/db/qp/physical/crud/DeletePlan.java | 2 +- .../db/qp/physical/crud/InsertMultiTabletPlan.java | 2 +- .../iotdb/db/qp/physical/crud/InsertPlan.java | 2 +- .../iotdb/db/qp/physical/crud/InsertRowPlan.java | 2 +- .../physical/crud/InsertRowsOfOneDevicePlan.java | 2 +- .../iotdb/db/qp/physical/crud/InsertRowsPlan.java | 2 +- .../db/qp/physical/crud/InsertTabletPlan.java | 2 +- .../iotdb/db/qp/physical/crud/QueryPlan.java | 2 +- .../db/qp/physical/crud/RawDataQueryPlan.java | 8 +- .../iotdb/db/qp/physical/crud/SelectIntoPlan.java | 2 +- .../db/qp/physical/crud/SetSchemaTemplatePlan.java | 2 +- .../apache/iotdb/db/qp/physical/crud/UDTFPlan.java | 2 +- .../qp/physical/crud/UnsetSchemaTemplatePlan.java | 2 +- .../db/qp/physical/sys/AlterTimeSeriesPlan.java | 2 +- .../iotdb/db/qp/physical/sys/AuthorPlan.java | 2 +- .../qp/physical/sys/AutoCreateDeviceMNodePlan.java | 2 +- .../iotdb/db/qp/physical/sys/ChangeAliasPlan.java | 2 +- .../db/qp/physical/sys/ChangeTagOffsetPlan.java | 2 +- .../iotdb/db/qp/physical/sys/ClearCachePlan.java | 2 +- .../apache/iotdb/db/qp/physical/sys/CountPlan.java | 2 +- .../physical/sys/CreateAlignedTimeSeriesPlan.java | 2 +- .../qp/physical/sys/CreateContinuousQueryPlan.java | 2 +- .../db/qp/physical/sys/CreateFunctionPlan.java | 2 +- .../iotdb/db/qp/physical/sys/CreateIndexPlan.java | 2 +- .../qp/physical/sys/CreateMultiTimeSeriesPlan.java | 2 +- .../db/qp/physical/sys/CreateSnapshotPlan.java | 2 +- .../db/qp/physical/sys/CreateTimeSeriesPlan.java | 2 +- .../db/qp/physical/sys/CreateTriggerPlan.java | 2 +- .../iotdb/db/qp/physical/sys/DataAuthPlan.java | 2 +- .../db/qp/physical/sys/DeleteStorageGroupPlan.java | 2 +- .../db/qp/physical/sys/DeleteTimeSeriesPlan.java | 2 +- .../qp/physical/sys/DropContinuousQueryPlan.java | 2 +- .../iotdb/db/qp/physical/sys/DropFunctionPlan.java | 2 +- .../iotdb/db/qp/physical/sys/DropIndexPlan.java | 2 +- .../iotdb/db/qp/physical/sys/DropTriggerPlan.java | 2 +- .../apache/iotdb/db/qp/physical/sys/FlushPlan.java | 2 +- .../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 | 2 +- .../iotdb/db/qp/physical/sys/OperateFilePlan.java | 2 +- .../db/qp/physical/sys/SetStorageGroupPlan.java | 2 +- .../db/qp/physical/sys/SetSystemModePlan.java | 2 +- .../iotdb/db/qp/physical/sys/SetTTLPlan.java | 2 +- .../physical/sys/SetUsingSchemaTemplatePlan.java | 2 +- .../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 | 2 +- .../iotdb/db/qp/physical/sys/ShowLockInfoPlan.java | 2 +- .../apache/iotdb/db/qp/physical/sys/ShowPlan.java | 2 +- .../db/qp/physical/sys/ShowStorageGroupPlan.java | 2 +- .../iotdb/db/qp/physical/sys/ShowTTLPlan.java | 2 +- .../db/qp/physical/sys/ShowTimeSeriesPlan.java | 2 +- .../iotdb/db/qp/physical/sys/StartTriggerPlan.java | 2 +- .../iotdb/db/qp/physical/sys/StopTriggerPlan.java | 2 +- .../db/qp/physical/sys/StorageGroupMNodePlan.java | 2 +- .../iotdb/db/qp/physical/sys/TracingPlan.java | 2 +- .../apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java | 2 +- .../iotdb/db/qp/strategy/LogicalGenerator.java | 2 +- .../iotdb/db/qp/strategy/PhysicalGenerator.java | 4 +- .../qp/strategy/optimizer/ConcatPathOptimizer.java | 2 +- .../optimizer/MergeSingleFilterOptimizer.java | 2 +- .../qp/strategy/optimizer/RemoveNotOptimizer.java | 2 +- .../iotdb/db/qp/utils/GroupByLevelController.java | 2 +- .../apache/iotdb/db/qp/utils/WildcardsRemover.java | 2 +- .../iotdb/db/query/context/QueryContext.java | 2 +- .../db/query/control/QueryResourceManager.java | 2 +- .../db/query/dataset/AlignByDeviceDataSet.java | 6 +- .../apache/iotdb/db/query/dataset/ListDataSet.java | 2 +- .../db/query/dataset/NonAlignEngineDataSet.java | 2 +- .../dataset/RawQueryDataSetWithValueFilter.java | 2 +- .../dataset/RawQueryDataSetWithoutValueFilter.java | 16 +- .../query/dataset/ShowContinuousQueriesResult.java | 2 +- .../iotdb/db/query/dataset/ShowDevicesDataSet.java | 2 +- .../db/query/dataset/ShowTimeseriesDataSet.java | 2 +- .../iotdb/db/query/dataset/SingleDataSet.java | 2 +- .../apache/iotdb/db/query/dataset/UDTFDataSet.java | 2 +- .../query/dataset/groupby/GroupByFillDataSet.java | 2 +- .../query/dataset/groupby/GroupByLevelDataSet.java | 2 +- .../groupby/GroupByWithValueFilterDataSet.java | 2 +- .../groupby/GroupByWithoutValueFilterDataSet.java | 2 +- .../dataset/groupby/LocalGroupByExecutor.java | 2 +- .../db/query/executor/AggregationExecutor.java | 20 +- .../iotdb/db/query/executor/FillQueryExecutor.java | 2 +- .../iotdb/db/query/executor/LastQueryExecutor.java | 8 +- .../iotdb/db/query/executor/QueryRouter.java | 2 +- .../db/query/executor/RawDataQueryExecutor.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 +- .../iotdb/db/query/expression/Expression.java | 2 +- .../iotdb/db/query/expression/ResultColumn.java | 2 +- .../query/expression/binary/BinaryExpression.java | 2 +- .../query/expression/unary/FunctionExpression.java | 2 +- .../query/expression/unary/NegationExpression.java | 2 +- .../query/expression/unary/TimeSeriesOperand.java | 2 +- .../chunk/metadata/DiskChunkMetadataLoader.java | 2 +- .../chunk/metadata/MemChunkMetadataLoader.java | 2 +- ...rSeriesReader.java => AlignedSeriesReader.java} | 64 ++++-- .../query/reader/series/SeriesAggregateReader.java | 14 +- .../reader/series/SeriesRawDataBatchReader.java | 32 ++- .../iotdb/db/query/reader/series/SeriesReader.java | 32 +-- .../reader/series/SeriesReaderByTimestamp.java | 7 +- .../reader/series/VectorSeriesAggregateReader.java | 8 +- .../query/timegenerator/ServerTimeGenerator.java | 2 +- .../api/customizer/parameter/UDFParameters.java | 2 +- .../query/udf/core/layer/RawQueryInputLayer.java | 2 +- .../org/apache/iotdb/db/service/SettleService.java | 2 +- .../org/apache/iotdb/db/service/TSServiceImpl.java | 2 +- .../apache/iotdb/db/tools/TsFileRewriteTool.java | 2 +- .../org/apache/iotdb/db/tools/mlog/MLogParser.java | 2 +- .../db/tools/virtualsg/DeviceMappingViewer.java | 2 +- .../org/apache/iotdb/db/utils/FileLoaderUtils.java | 13 +- .../java/org/apache/iotdb/db/utils/MemUtils.java | 49 ++--- .../java/org/apache/iotdb/db/utils/MergeUtils.java | 2 +- .../org/apache/iotdb/db/utils/SchemaUtils.java | 2 +- .../iotdb/db/utils/datastructure/TVList.java | 5 +- .../iotdb/db/utils/datastructure/VectorTVList.java | 6 +- .../iotdb/db/writelog/recover/LogReplayer.java | 2 +- .../apache/iotdb/db/auth/AuthorityCheckerTest.java | 2 +- .../iotdb/db/engine/MetadataManagerHelper.java | 2 +- .../iotdb/db/engine/cache/ChunkCacheTest.java | 2 +- .../engine/compaction/CompactionSchedulerTest.java | 2 +- .../compaction/cross/CrossSpaceCompactionTest.java | 2 +- .../engine/compaction/cross/MergeOverLapTest.java | 2 +- .../db/engine/compaction/cross/MergeTaskTest.java | 2 +- .../db/engine/compaction/cross/MergeTest.java | 2 +- .../inner/InnerCompactionMoreDataTest.java | 2 +- .../compaction/inner/InnerCompactionTest.java | 2 +- .../compaction/inner/InnerSeqCompactionTest.java | 2 +- .../compaction/inner/InnerUnseqCompactionTest.java | 2 +- .../SizeTieredCompactionRecoverTest.java | 2 +- .../inner/sizetiered/SizeTieredCompactionTest.java | 2 +- .../compaction/utils/CompactionCheckerUtils.java | 2 +- .../utils/CompactionFileGeneratorUtils.java | 2 +- .../db/engine/memtable/MemTableTestUtils.java | 2 +- .../db/engine/memtable/PrimitiveMemTableTest.java | 2 +- .../engine/modification/DeletionFileNodeTest.java | 2 +- .../db/engine/modification/DeletionQueryTest.java | 2 +- .../engine/modification/ModificationFileTest.java | 2 +- .../io/LocalTextModificationAccessorTest.java | 2 +- .../storagegroup/FileNodeManagerBenchmark.java | 2 +- .../storagegroup/StorageGroupProcessorTest.java | 2 +- .../iotdb/db/engine/storagegroup/TTLTest.java | 2 +- .../virtualSg/HashVirtualPartitionerTest.java | 2 +- .../iotdb/db/integration/IoTDBArithmeticIT.java | 2 +- .../db/integration/IoTDBEngineTimeGeneratorIT.java | 2 +- .../iotdb/db/integration/IoTDBFilePathUtilsIT.java | 2 +- .../apache/iotdb/db/integration/IoTDBLastIT.java | 2 +- ...IoTDBLoadExternalTsFileWithTimePartitionIT.java | 2 +- .../db/integration/IoTDBLoadExternalTsfileIT.java | 2 +- .../integration/IoTDBManageTsFileResourceIT.java | 2 +- .../iotdb/db/integration/IoTDBNestedQueryIT.java | 2 +- .../db/integration/IoTDBNewTsFileCompactionIT.java | 2 +- .../db/integration/IoTDBRemovePartitionIT.java | 2 +- .../iotdb/db/integration/IoTDBSelectIntoIT.java | 2 +- .../db/integration/IoTDBSequenceDataQueryIT.java | 2 +- .../iotdb/db/integration/IoTDBSeriesReaderIT.java | 2 +- .../iotdb/db/integration/IoTDBSimpleQueryIT.java | 2 +- .../db/integration/IoTDBTriggerExecutionIT.java | 2 +- .../db/integration/IoTDBTriggerManagementIT.java | 2 +- .../iotdb/db/integration/IoTDBUDFManagementIT.java | 2 +- .../db/integration/IoTDBUDFWindowQueryIT.java | 2 +- .../integration/IoTDBUDTFAlignByTimeQueryIT.java | 2 +- .../db/integration/IoTDBUDTFBuiltinFunctionIT.java | 2 +- .../db/integration/IoTDBUDTFHybridQueryIT.java | 2 +- .../db/integration/IoTDBUDTFNonAlignQueryIT.java | 2 +- .../iotdb/db/metadata/MManagerAdvancedTest.java | 1 + .../iotdb/db/metadata/MManagerBasicTest.java | 61 +++--- .../iotdb/db/metadata/MManagerImproveTest.java | 1 + .../org/apache/iotdb/db/metadata/MTreeTest.java | 1 + .../apache/iotdb/db/metadata/PartialPathTest.java | 1 + .../iotdb/db/metadata/mlog/MLogUpgraderTest.java | 2 +- .../java/org/apache/iotdb/db/qp/PlannerTest.java | 2 +- .../iotdb/db/qp/logical/LogicalPlanSmallTest.java | 2 +- .../iotdb/db/qp/other/TSPlanContextAuthorTest.java | 2 +- .../iotdb/db/qp/physical/ConcatOptimizerTest.java | 2 +- .../iotdb/db/qp/physical/InsertRowPlanTest.java | 2 +- .../qp/physical/InsertRowsOfOneDevicePlanTest.java | 2 +- .../db/qp/physical/InsertTabletMultiPlanTest.java | 2 +- .../iotdb/db/qp/physical/InsertTabletPlanTest.java | 8 +- .../db/qp/physical/PhysicalPlanSerializeTest.java | 2 +- .../iotdb/db/qp/physical/PhysicalPlanTest.java | 2 +- .../iotdb/db/qp/physical/SerializationTest.java | 2 +- .../query/dataset/UDTFAlignByTimeDataSetTest.java | 2 +- .../reader/series/SeriesAggregateReaderTest.java | 2 +- .../reader/series/SeriesReaderByTimestampTest.java | 2 +- .../db/query/reader/series/SeriesReaderTest.java | 2 +- .../query/reader/series/SeriesReaderTestUtil.java | 2 +- .../iotdb/db/rescon/ResourceManagerTest.java | 2 +- .../org/apache/iotdb/db/sink/MQTTSinkTest.java | 2 +- .../db/sync/receiver/load/FileLoaderTest.java | 2 +- .../recover/SyncReceiverLogAnalyzerTest.java | 2 +- .../db/sync/sender/manage/SyncFileManagerTest.java | 2 +- .../sender/recover/SyncSenderLogAnalyzerTest.java | 2 +- .../org/apache/iotdb/db/tools/MLogParserTest.java | 2 +- .../iotdb/db/tools/TsFileAndModSettleToolTest.java | 2 +- .../org/apache/iotdb/db/tools/WalCheckerTest.java | 2 +- .../org/apache/iotdb/db/utils/MemUtilsTest.java | 2 +- .../org/apache/iotdb/db/utils/SchemaUtilsTest.java | 2 +- .../iotdb/db/utils/TsFileRewriteToolTest.java | 2 +- .../db/utils/datastructure/VectorTVListTest.java | 21 +- .../apache/iotdb/db/writelog/PerformanceTest.java | 2 +- .../iotdb/db/writelog/WriteLogNodeManagerTest.java | 2 +- .../apache/iotdb/db/writelog/WriteLogNodeTest.java | 2 +- .../iotdb/db/writelog/io/LogWriterReaderTest.java | 2 +- .../db/writelog/io/MultiFileLogReaderTest.java | 2 +- .../db/writelog/recover/DeviceStringTest.java | 2 +- .../iotdb/db/writelog/recover/LogReplayerTest.java | 2 +- .../recover/RecoverResourceFromReaderTest.java | 2 +- .../db/writelog/recover/SeqTsFileRecoverTest.java | 2 +- .../writelog/recover/UnseqTsFileRecoverTest.java | 2 +- .../apache/iotdb/session/IoTDBSessionSimpleIT.java | 2 +- 401 files changed, 1173 insertions(+), 876 deletions(-) diff --cc cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterReaderFactory.java index 9a35b61,902f827..fcdff7c --- a/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterReaderFactory.java +++ b/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterReaderFactory.java @@@ -560,7 -560,16 +560,15 @@@ public class ClusterReaderFactory QueryDataSource queryDataSource = QueryResourceManager.getInstance().getQueryDataSource(path, context, timeFilter); valueFilter = queryDataSource.updateFilterUsingTTL(valueFilter); - return path.createSeriesReader(allSensors, dataType, context, queryDataSource, timeFilter, valueFilter, new SlotTsFileFilter(requiredSlots), ascending); - return new SeriesReader( - path, ++ return path.createSeriesReader( + allSensors, + dataType, + context, + queryDataSource, + timeFilter, + valueFilter, + new SlotTsFileFilter(requiredSlots), + ascending); } /** diff --cc server/src/main/java/org/apache/iotdb/db/metadata/path/AlignedPath.java index 0000000,ad7af21..88e1348 mode 000000,100644..100644 --- a/server/src/main/java/org/apache/iotdb/db/metadata/path/AlignedPath.java +++ b/server/src/main/java/org/apache/iotdb/db/metadata/path/AlignedPath.java @@@ -1,0 -1,174 +1,227 @@@ + /* + * 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.metadata.path; + ++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.query.context.QueryContext; ++import org.apache.iotdb.db.query.filter.TsFileFilter; ++import org.apache.iotdb.db.query.reader.series.AlignedSeriesReader; ++import org.apache.iotdb.db.utils.TestOnly; + import org.apache.iotdb.tsfile.common.constant.TsFileConstant; + import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; + import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding; ++import org.apache.iotdb.tsfile.read.filter.basic.Filter; + import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema; + import org.apache.iotdb.tsfile.write.schema.VectorMeasurementSchema; + + import java.util.ArrayList; + import java.util.Collections; + import java.util.List; + import java.util.Objects; ++import java.util.Set; + + /** + * VectorPartialPath represents a vector's fullPath. It not only contains the full path of vector's + * own name, but also has subSensorsList which contain all the fullPath of vector's sub sensors. + * e.g. VectorPartialPath1(root.sg1.d1.vector1, [root.sg1.d1.vector1.s1, root.sg1.d1.vector1.s2]) + * VectorPartialPath2(root.sg1.d1.vector2, [root.sg1.d1.vector2.s1, root.sg1.d1.vector2.s2]) + */ + public class AlignedPath extends PartialPath { + + // todo improve vector implementation by remove this placeholder + private static final String VECTOR_PLACEHOLDER = ""; + + private List<String> measurementList; + private List<IMeasurementSchema> schemaList; + + public AlignedPath() {} + + public AlignedPath(String vectorPath, List<String> subSensorsList) throws IllegalPathException { + super(vectorPath); + this.measurementList = subSensorsList; + } + + public AlignedPath(String vectorPath, String subSensor) throws IllegalPathException { + super(vectorPath); + measurementList = new ArrayList<>(); + measurementList.add(subSensor); + } + + public AlignedPath(PartialPath vectorPath, String subSensor) { + super(vectorPath.getNodes()); + measurementList = new ArrayList<>(); + measurementList.add(subSensor); + } + + public AlignedPath(MeasurementPath path) { + super(path.getDevicePath().getNodes()); + measurementList = new ArrayList<>(); + measurementList.add(path.getMeasurement()); + schemaList = new ArrayList<>(); + schemaList.add(path.getMeasurementSchema()); + } + + public List<String> getMeasurementList() { + return measurementList; + } + + public String getMeasurement(int index) { + return measurementList.get(index); + } + + public PartialPath getPathWithMeasurement(int index) { + return new PartialPath(nodes).concatNode(measurementList.get(index)); + } + + public void setMeasurementList(List<String> measurementList) { + this.measurementList = measurementList; + } + + public void addMeasurement(String subSensor) { + this.measurementList.add(subSensor); + } + + public void addMeasurement(List<String> subSensors) { + this.measurementList.addAll(subSensors); + } + + public void addMeasurement(List<String> measurementList, List<IMeasurementSchema> schemaList) { + this.measurementList.addAll(measurementList); + if (schemaList == null) { + schemaList = new ArrayList<>(); + } + this.schemaList.addAll(schemaList); + } + + public List<IMeasurementSchema> getSchemaList() { + return this.schemaList == null ? Collections.emptyList() : this.schemaList; + } + + public VectorMeasurementSchema getMeasurementSchema() { + TSDataType[] types = new TSDataType[measurementList.size()]; + TSEncoding[] encodings = new TSEncoding[measurementList.size()]; + + for (int i = 0; i < measurementList.size(); i++) { + types[i] = schemaList.get(i).getType(); + encodings[i] = schemaList.get(i).getEncodingType(); + } + String[] array = new String[measurementList.size()]; + for (int i = 0; i < array.length; i++) { + array[i] = measurementList.get(i); + } + return new VectorMeasurementSchema( + VECTOR_PLACEHOLDER, array, types, encodings, schemaList.get(0).getCompressor()); + } + + @Override + public PartialPath copy() { + AlignedPath result = new AlignedPath(); + result.nodes = nodes; + result.fullPath = fullPath; + result.device = device; + result.measurementList = new ArrayList<>(measurementList); + return result; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + if (!super.equals(o)) { + return false; + } + AlignedPath that = (AlignedPath) o; + return Objects.equals(measurementList, that.measurementList); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), measurementList); + } + + @Override + public PartialPath getExactPath() { + PartialPath path = super.getExactPath(); + if (measurementList.size() == 1) { + return path.concatNode(measurementList.get(0)); + } + return path; + } + + @Override + public String getExactFullPath() { + fullPath = getFullPath(); + if (measurementList.size() == 1) { + return fullPath + TsFileConstant.PATH_SEPARATOR + measurementList.get(0); + } + return fullPath; + } ++ ++ @Override ++ public AlignedSeriesReader createSeriesReader( ++ Set<String> allSensors, ++ TSDataType dataType, ++ QueryContext context, ++ QueryDataSource dataSource, ++ Filter timeFilter, ++ Filter valueFilter, ++ TsFileFilter fileFilter, ++ boolean ascending) { ++ return new AlignedSeriesReader( ++ this, ++ allSensors, ++ dataType, ++ context, ++ dataSource, ++ timeFilter, ++ valueFilter, ++ fileFilter, ++ ascending); ++ } ++ ++ @Override ++ @TestOnly ++ public AlignedSeriesReader createSeriesReader( ++ Set<String> allSensors, ++ TSDataType dataType, ++ QueryContext context, ++ List<TsFileResource> seqFileResource, ++ List<TsFileResource> unseqFileResource, ++ Filter timeFilter, ++ Filter valueFilter, ++ boolean ascending) { ++ return new AlignedSeriesReader( ++ this, ++ allSensors, ++ dataType, ++ context, ++ seqFileResource, ++ unseqFileResource, ++ timeFilter, ++ valueFilter, ++ ascending); ++ } + } diff --cc server/src/main/java/org/apache/iotdb/db/metadata/path/MeasurementPath.java index 0000000,5562da7..a8ea436 mode 000000,100644..100644 --- a/server/src/main/java/org/apache/iotdb/db/metadata/path/MeasurementPath.java +++ b/server/src/main/java/org/apache/iotdb/db/metadata/path/MeasurementPath.java @@@ -1,0 -1,71 +1,125 @@@ + /* + * 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.metadata.path; + + import org.apache.iotdb.db.conf.IoTDBConstant; ++import org.apache.iotdb.db.engine.querycontext.QueryDataSource; ++import org.apache.iotdb.db.engine.storagegroup.TsFileResource; ++import org.apache.iotdb.db.query.context.QueryContext; ++import org.apache.iotdb.db.query.filter.TsFileFilter; ++import org.apache.iotdb.db.query.reader.series.SeriesReader; ++import org.apache.iotdb.db.utils.TestOnly; ++import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; ++import org.apache.iotdb.tsfile.read.filter.basic.Filter; + import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema; + ++import java.util.List; ++import java.util.Set; ++ + public class MeasurementPath extends PartialPath { + + private IMeasurementSchema measurementSchema; + // alias of measurement, null pointer cannot be serialized in thrift so empty string is instead + private String measurementAlias = ""; + + public MeasurementPath() {} + + public MeasurementPath(PartialPath measurementPath) { + super(measurementPath.getNodes()); + } + + public IMeasurementSchema getMeasurementSchema() { + return measurementSchema; + } + + public void setMeasurementSchema(IMeasurementSchema measurementSchema) { + this.measurementSchema = measurementSchema; + } + + public String getMeasurementAlias() { + return measurementAlias; + } + + public void setMeasurementAlias(String measurementAlias) { + if (measurementAlias != null) { + this.measurementAlias = measurementAlias; + } + } + + public boolean isMeasurementAliasExists() { + return measurementAlias != null && !measurementAlias.isEmpty(); + } + + @Override + public String getFullPathWithAlias() { + return getDevice() + IoTDBConstant.PATH_SEPARATOR + measurementAlias; + } + + public PartialPath copy() { + MeasurementPath result = new MeasurementPath(); + result.nodes = nodes; + result.fullPath = fullPath; + result.device = device; + result.measurementAlias = measurementAlias; + return result; + } ++ ++ public SeriesReader createSeriesReader( ++ Set<String> allSensors, ++ TSDataType dataType, ++ QueryContext context, ++ QueryDataSource dataSource, ++ Filter timeFilter, ++ Filter valueFilter, ++ TsFileFilter fileFilter, ++ boolean ascending) { ++ return new SeriesReader( ++ this, ++ allSensors, ++ dataType, ++ context, ++ dataSource, ++ timeFilter, ++ valueFilter, ++ fileFilter, ++ ascending); ++ } ++ ++ @TestOnly ++ public SeriesReader createSeriesReader( ++ Set<String> allSensors, ++ TSDataType dataType, ++ QueryContext context, ++ List<TsFileResource> seqFileResource, ++ List<TsFileResource> unseqFileResource, ++ Filter timeFilter, ++ Filter valueFilter, ++ boolean ascending) { ++ return new SeriesReader( ++ this, ++ allSensors, ++ dataType, ++ context, ++ seqFileResource, ++ unseqFileResource, ++ timeFilter, ++ valueFilter, ++ ascending); ++ } + } diff --cc server/src/main/java/org/apache/iotdb/db/metadata/path/PartialPath.java index b4cf014,cc033b1..e4420af mode 100755,100644..100644 --- a/server/src/main/java/org/apache/iotdb/db/metadata/path/PartialPath.java +++ b/server/src/main/java/org/apache/iotdb/db/metadata/path/PartialPath.java @@@ -16,33 -16,28 +16,36 @@@ * specific language governing permissions and limitations * under the License. */ - package org.apache.iotdb.db.metadata; + package org.apache.iotdb.db.metadata.path; - import static org.apache.iotdb.db.conf.IoTDBConstant.MULTI_LEVEL_PATH_WILDCARD; - import static org.apache.iotdb.db.conf.IoTDBConstant.ONE_LEVEL_PATH_WILDCARD; - - import java.util.ArrayList; - import java.util.Arrays; - import java.util.Collections; - import java.util.List; - import java.util.Set; - import java.util.regex.Pattern; - import org.apache.iotdb.db.conf.IoTDBConstant; +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.utils.MetaUtils; +import org.apache.iotdb.db.query.context.QueryContext; +import org.apache.iotdb.db.query.filter.TsFileFilter; +import org.apache.iotdb.db.query.reader.series.SeriesReader; import org.apache.iotdb.db.utils.TestOnly; import org.apache.iotdb.tsfile.common.constant.TsFileConstant; +import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.read.common.Path; +import org.apache.iotdb.tsfile.read.filter.basic.Filter; + import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; + import java.util.ArrayList; + import java.util.Arrays; + import java.util.Collections; + import java.util.List; ++import java.util.Set; + import java.util.regex.Pattern; + + import static org.apache.iotdb.db.conf.IoTDBConstant.MULTI_LEVEL_PATH_WILDCARD; + import static org.apache.iotdb.db.conf.IoTDBConstant.ONE_LEVEL_PATH_WILDCARD; + /** * A prefix path, suffix path or fullPath generated from SQL. Usually used in the IoTDB server * module @@@ -52,12 -47,8 +55,9 @@@ public class PartialPath extends Path i private static final Logger logger = LoggerFactory.getLogger(PartialPath.class); protected String[] nodes; - // alias of measurement, null pointer cannot be serialized in thrift so empty string is instead - protected String measurementAlias = ""; - public PartialPath() { - } + public PartialPath() {} + /** * Construct the PartialPath using a String, will split the given String into String[] E.g., path * = "root.sg.\"d.1\".\"s.1\"" nodes = {"root", "sg", "\"d.1\"", "\"s.1\""} @@@ -368,37 -370,4 +379,29 @@@ public String getExactFullPath() { return getFullPath(); } + - public SeriesReader createSeriesReader(Set<String> allSensors, ++ public SeriesReader createSeriesReader( ++ Set<String> allSensors, + TSDataType dataType, + QueryContext context, + QueryDataSource dataSource, + Filter timeFilter, + Filter valueFilter, + TsFileFilter fileFilter, + boolean ascending) { - return new SeriesReader( - this, - allSensors, - dataType, - context, - dataSource, - timeFilter, - valueFilter, - fileFilter, - ascending); ++ throw new UnsupportedOperationException("Should call exact sub class"); + } + + @TestOnly - public SeriesReader createSeriesReader(Set<String> allSensors, ++ public SeriesReader createSeriesReader( ++ Set<String> allSensors, + TSDataType dataType, + QueryContext context, + List<TsFileResource> seqFileResource, + List<TsFileResource> unseqFileResource, + Filter timeFilter, + Filter valueFilter, + boolean ascending) { - return new SeriesReader(this, allSensors, dataType, context, seqFileResource, unseqFileResource, - timeFilter, valueFilter, ascending); ++ throw new UnsupportedOperationException("Should call exact sub class"); + } } diff --cc server/src/main/java/org/apache/iotdb/db/query/reader/series/AlignedSeriesReader.java index db47258,0000000..4b91a0f mode 100644,000000..100644 --- a/server/src/main/java/org/apache/iotdb/db/query/reader/series/AlignedSeriesReader.java +++ b/server/src/main/java/org/apache/iotdb/db/query/reader/series/AlignedSeriesReader.java @@@ -1,65 -1,0 +1,95 @@@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.iotdb.db.query.reader.series; + - import java.io.IOException; - import java.util.List; - import java.util.Set; +import org.apache.iotdb.db.engine.querycontext.QueryDataSource; +import org.apache.iotdb.db.engine.storagegroup.TsFileResource; - import org.apache.iotdb.db.metadata.PartialPath; - import org.apache.iotdb.db.metadata.VectorPartialPath; ++import org.apache.iotdb.db.metadata.path.AlignedPath; ++import org.apache.iotdb.db.metadata.path.PartialPath; +import org.apache.iotdb.db.query.context.QueryContext; +import org.apache.iotdb.db.query.filter.TsFileFilter; +import org.apache.iotdb.db.utils.FileLoaderUtils; ++import org.apache.iotdb.db.utils.TestOnly; +import org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata; +import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; +import org.apache.iotdb.tsfile.read.filter.basic.Filter; + - public class VectorSeriesReader extends SeriesReader { ++import java.io.IOException; ++import java.util.List; ++import java.util.Set; ++ ++public class AlignedSeriesReader extends SeriesReader { + - public VectorSeriesReader(PartialPath seriesPath, ++ public AlignedSeriesReader( ++ PartialPath seriesPath, + Set<String> allSensors, + TSDataType dataType, + QueryContext context, + QueryDataSource dataSource, + Filter timeFilter, + Filter valueFilter, - TsFileFilter fileFilter, boolean ascending) { - super(seriesPath, allSensors, dataType, context, dataSource, timeFilter, valueFilter, ++ TsFileFilter fileFilter, ++ boolean ascending) { ++ super( ++ seriesPath, ++ allSensors, ++ dataType, ++ context, ++ dataSource, ++ timeFilter, ++ valueFilter, + fileFilter, + ascending); + } + - public VectorSeriesReader(PartialPath seriesPath, Set<String> allSensors, - TSDataType dataType, QueryContext context, ++ @TestOnly ++ public AlignedSeriesReader( ++ PartialPath seriesPath, ++ Set<String> allSensors, ++ TSDataType dataType, ++ QueryContext context, + List<TsFileResource> seqFileResource, + List<TsFileResource> unseqFileResource, - Filter timeFilter, Filter valueFilter, boolean ascending) { - super(seriesPath, allSensors, dataType, context, seqFileResource, unseqFileResource, timeFilter, - valueFilter, ascending); ++ Filter timeFilter, ++ Filter valueFilter, ++ boolean ascending) { ++ super( ++ seriesPath, ++ allSensors, ++ dataType, ++ context, ++ seqFileResource, ++ unseqFileResource, ++ timeFilter, ++ valueFilter, ++ ascending); + } + + @Override - protected ITimeSeriesMetadata loadTimeSeriesMetadata(TsFileResource resource, - PartialPath seriesPath, QueryContext context, Filter filter, Set<String> allSensors) ++ protected ITimeSeriesMetadata loadTimeSeriesMetadata( ++ TsFileResource resource, ++ PartialPath seriesPath, ++ QueryContext context, ++ Filter filter, ++ Set<String> allSensors) + throws IOException { - return FileLoaderUtils.loadTimeSeriesMetadata(resource, (VectorPartialPath) seriesPath, context, filter, allSensors); ++ return FileLoaderUtils.loadTimeSeriesMetadata( ++ resource, (AlignedPath) seriesPath, context, filter, allSensors); + } +} diff --cc server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesAggregateReader.java index 91f161f,f3f64bd..b1fc057 --- a/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesAggregateReader.java +++ b/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesAggregateReader.java @@@ -44,8 -44,17 +44,16 @@@ public class SeriesAggregateReader impl Filter valueFilter, TsFileFilter fileFilter, boolean ascending) { - this.seriesReader = seriesPath.createSeriesReader(allSensors, dataType, context, dataSource, - timeFilter, valueFilter, fileFilter, ascending); + this.seriesReader = - new SeriesReader( - seriesPath, ++ seriesPath.createSeriesReader( + allSensors, + dataType, + context, + dataSource, + timeFilter, + valueFilter, + fileFilter, + ascending); } @Override diff --cc server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesRawDataBatchReader.java index c944ca4,2035747..c2f1c90 --- a/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesRawDataBatchReader.java +++ b/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesRawDataBatchReader.java @@@ -57,8 -57,17 +57,16 @@@ public class SeriesRawDataBatchReader i Filter valueFilter, TsFileFilter fileFilter, boolean ascending) { - this.seriesReader = seriesPath.createSeriesReader(allSensors, dataType, context, dataSource, - timeFilter, valueFilter, fileFilter, ascending); + this.seriesReader = - new SeriesReader( - seriesPath, ++ seriesPath.createSeriesReader( + allSensors, + dataType, + context, + dataSource, + timeFilter, + valueFilter, + fileFilter, + ascending); } @TestOnly @@@ -74,14 -83,17 +82,16 @@@ boolean ascending) { Set<String> allSensors = new HashSet<>(); allSensors.add(seriesPath.getMeasurement()); - this.seriesReader = seriesPath.createSeriesReader(allSensors, - dataType, - context, - seqFileResource, - unseqFileResource, - timeFilter, - valueFilter, - ascending); + this.seriesReader = - new SeriesReader( - seriesPath, ++ seriesPath.createSeriesReader( + allSensors, + dataType, + context, + seqFileResource, + unseqFileResource, + timeFilter, + valueFilter, + ascending); } /** diff --cc server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReader.java index 16a508c,f03f7f1..5dda91a --- a/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReader.java +++ b/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReader.java @@@ -18,19 -18,11 +18,9 @@@ */ package org.apache.iotdb.db.query.reader.series; - import java.io.IOException; - import java.io.Serializable; - import java.util.Comparator; - import java.util.LinkedList; - import java.util.List; - import java.util.Objects; - import java.util.PriorityQueue; - import java.util.Set; - import java.util.function.ToLongFunction; - import java.util.stream.Collectors; -import org.apache.iotdb.db.conf.IoTDBConfig; -import org.apache.iotdb.db.conf.IoTDBDescriptor; import org.apache.iotdb.db.engine.querycontext.QueryDataSource; import org.apache.iotdb.db.engine.storagegroup.TsFileResource; - import org.apache.iotdb.db.metadata.PartialPath; + import org.apache.iotdb.db.metadata.path.PartialPath; import org.apache.iotdb.db.query.context.QueryContext; import org.apache.iotdb.db.query.control.QueryTimeManager; import org.apache.iotdb.db.query.control.tracing.TracingManager; @@@ -55,8 -47,20 +45,19 @@@ import org.apache.iotdb.tsfile.read.fil import org.apache.iotdb.tsfile.read.reader.IPageReader; import org.apache.iotdb.tsfile.read.reader.page.VectorPageReader; + import java.io.IOException; + import java.io.Serializable; + import java.util.Comparator; + import java.util.LinkedList; + import java.util.List; + import java.util.Objects; + import java.util.PriorityQueue; + import java.util.Set; + import java.util.function.ToLongFunction; + import java.util.stream.Collectors; + public class SeriesReader { - private static final IoTDBConfig CONFIG = IoTDBDescriptor.getInstance().getConfig(); // inner class of SeriesReader for order purpose protected TimeOrderUtils orderUtils; @@@ -1033,14 -1037,6 +1034,17 @@@ } } - protected ITimeSeriesMetadata loadTimeSeriesMetadata(TsFileResource resource, ++ protected ITimeSeriesMetadata loadTimeSeriesMetadata( ++ TsFileResource resource, + PartialPath seriesPath, + QueryContext context, + Filter filter, - Set<String> allSensors) throws IOException { - return FileLoaderUtils.loadTimeSeriesMetadata(resource, seriesPath, context, filter, allSensors); ++ Set<String> allSensors) ++ throws IOException { ++ return FileLoaderUtils.loadTimeSeriesMetadata( ++ resource, seriesPath, context, filter, allSensors); + } + protected Filter getAnyFilter() { return timeFilter != null ? timeFilter : valueFilter; } diff --cc server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReaderByTimestamp.java index bd68bed,198454c..70506e9 --- a/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReaderByTimestamp.java +++ b/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReaderByTimestamp.java @@@ -47,8 -47,17 +47,9 @@@ public class SeriesReaderByTimestamp im boolean ascending) { UnaryFilter timeFilter = ascending ? TimeFilter.gtEq(Long.MIN_VALUE) : TimeFilter.ltEq(Long.MAX_VALUE); - this.seriesReader = seriesPath.createSeriesReader(allSensors, dataType, context, dataSource, - timeFilter, null, fileFilter, ascending); + this.seriesReader = - new SeriesReader( - seriesPath, - allSensors, - dataType, - context, - dataSource, - timeFilter, - null, - fileFilter, - ascending); ++ seriesPath.createSeriesReader( ++ allSensors, dataType, context, dataSource, timeFilter, null, fileFilter, ascending); this.ascending = ascending; } diff --cc server/src/main/java/org/apache/iotdb/db/query/reader/series/VectorSeriesAggregateReader.java index 8db2bd2,c8320ae..29cb347 --- a/server/src/main/java/org/apache/iotdb/db/query/reader/series/VectorSeriesAggregateReader.java +++ b/server/src/main/java/org/apache/iotdb/db/query/reader/series/VectorSeriesAggregateReader.java @@@ -53,7 -53,7 +53,7 @@@ public class VectorSeriesAggregateReade TsFileFilter fileFilter, boolean ascending) { this.seriesReader = - new VectorSeriesReader( - new SeriesReader( ++ new AlignedSeriesReader( seriesPath, allSensors, dataType, diff --cc server/src/main/java/org/apache/iotdb/db/utils/FileLoaderUtils.java index 9626991,9755b52..0a28ab6 --- a/server/src/main/java/org/apache/iotdb/db/utils/FileLoaderUtils.java +++ b/server/src/main/java/org/apache/iotdb/db/utils/FileLoaderUtils.java @@@ -154,9 -159,9 +154,9 @@@ public class FileLoaderUtils * [root.sg1.d1.vector.s1, root.sg1.d1.vector.s2]) * @param allSensors all sensors belonging to this device that appear in query */ - private static VectorTimeSeriesMetadata loadVectorTimeSeriesMetadata( + public static VectorTimeSeriesMetadata loadTimeSeriesMetadata( TsFileResource resource, - VectorPartialPath vectorPath, + AlignedPath vectorPath, QueryContext context, Filter filter, Set<String> allSensors)
