This is an automated email from the ASF dual-hosted git repository. ycycse pushed a commit to branch ycy/supportEA in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit a419d2d0d705685c27a63707dbca8237500762f1 Merge: 1e89595b948 24a00905ff2 Author: ycycse <[email protected]> AuthorDate: Sun Nov 24 00:33:41 2024 +0800 Merge remote-tracking branch 'origin/master' into supportEA # Conflicts: # iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TableOperatorGenerator.java # iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/TableLogicalPlanner.java LICENSE | 43 +- LICENSE-binary | 118 ++-- README_ZH.md | 2 +- RELEASE_NOTES.md | 363 ++++++++++ .../org/apache/iotdb/TableModelSessionExample.java | 107 ++- .../apache/iotdb/TableModelSessionPoolExample.java | 110 ++- .../iotdb/it/env/cluster/env/AbstractEnv.java | 95 ++- .../iotdb/it/env/remote/env/RemoteServerEnv.java | 91 ++- .../org/apache/iotdb/it/utils/TsFileGenerator.java | 11 +- .../java/org/apache/iotdb/itbase/env/BaseEnv.java | 34 +- .../org/apache/iotdb/db/it/IoTDBDeletionIT.java | 207 +++--- .../pipe/it/tablemodel/IoTDBPipeExtractorIT.java | 4 + .../pipe/it/tablemodel/IoTDBPipeLifeCycleIT.java | 2 + .../it/tablemodel/IoTDBTablePatternFormatIT.java | 2 +- .../iotdb/pipe/it/tablemodel/TableModelUtils.java | 10 +- .../relational/it/db/it/IoTDBDeletionTableIT.java | 754 +++++++++++++++++++++ .../relational/it/db/it/IoTDBInsertTableIT.java | 66 +- .../db/it/IoTDBMultiIDsWithAttributesTableIT.java | 7 +- .../it/query/old/orderBy/IoTDBOrderByTableIT.java | 42 +- .../it/query/old/query/IoTDBInTableIT.java | 89 ++- .../it/query/recent/IoTDBTableAggregationIT.java | 78 +++ .../relational/it/schema/IoTDBDatabaseIT.java | 30 +- .../iotdb/relational/it/schema/IoTDBDeviceIT.java | 7 +- .../iotdb/relational/it/schema/IoTDBTableIT.java | 42 +- .../it/session/IoTDBTableModelSessionIT.java | 6 +- .../pool/IoTDBInsertTableSessionPoolIT.java | 30 +- .../session/pool/IoTDBTableModelSessionPoolIT.java | 17 +- .../iotdb/session/it/IoTDBSessionRelationalIT.java | 401 +++-------- .../java/org/apache/iotdb/isession/ISession.java | 16 - .../org/apache/iotdb/isession/ITableSession.java | 89 +++ .../apache/iotdb/isession/pool/ISessionPool.java | 3 - .../iotdb/isession/pool/ITableSessionPool.java | 48 ++ iotdb-client/jdbc/src/main/feature/feature.xml | 2 +- .../iotdb/session/AbstractSessionBuilder.java | 71 ++ .../java/org/apache/iotdb/session/Session.java | 133 +--- .../org/apache/iotdb/session/TableSession.java} | 77 ++- .../apache/iotdb/session/TableSessionBuilder.java | 275 ++++++++ .../session/pool/AbstractSessionPoolBuilder.java | 35 +- .../org/apache/iotdb/session/pool/SessionPool.java | 84 +-- .../iotdb/session/pool/TableSessionPool.java | 40 +- .../session/pool/TableSessionPoolBuilder.java | 293 ++++++++ ...essionWrapper.java => TableSessionWrapper.java} | 123 +--- .../iotdb/session/SessionCacheLeaderTest.java | 2 +- .../CnToDnInternalServiceAsyncRequestManager.java | 10 +- .../request/write/database/DatabaseSchemaPlan.java | 12 +- .../pipe/runtime/PipeHandleMetaChangePlan.java | 8 +- .../response/pipe/task/PipeTableResp.java | 5 +- .../statemachine/ConfigRegionStateMachine.java | 6 +- .../iotdb/confignode/manager/ConfigManager.java | 33 +- .../iotdb/confignode/manager/ProcedureManager.java | 80 ++- .../manager/load/balancer/RouteBalancer.java | 2 +- .../manager/partition/PartitionManager.java | 8 +- .../manager/partition/PartitionMetrics.java | 8 +- .../pipe/agent/task/PipeConfigNodeTaskAgent.java | 4 +- .../runtime/PipeLeaderChangeHandler.java | 2 +- .../runtime/heartbeat/PipeHeartbeat.java | 3 +- .../runtime/heartbeat/PipeHeartbeatParser.java | 5 +- .../pipe/coordinator/task/PipeTaskCoordinator.java | 29 +- .../manager/pipe/metric/PipeConfigNodeMetrics.java | 4 +- ... => PipeTemporaryMetaInCoordinatorMetrics.java} | 29 +- .../manager/schema/ClusterSchemaManager.java | 21 +- .../persistence/executor/ConfigPlanExecutor.java | 4 +- .../persistence/partition/PartitionInfo.java | 97 +-- .../confignode/persistence/pipe/PipeInfo.java | 16 +- .../confignode/persistence/pipe/PipeTaskInfo.java | 4 +- .../persistence/schema/ClusterSchemaInfo.java | 22 +- .../confignode/persistence/schema/ConfigMTree.java | 10 +- .../procedure/env/RegionMaintainHandler.java | 5 +- .../procedure/env/RemoveDataNodeHandler.java | 20 +- .../impl/node/RemoveDataNodesProcedure.java | 26 + .../impl/pipe/task/AlterPipeProcedureV2.java | 2 +- .../impl/pipe/task/CreatePipeProcedureV2.java | 4 +- .../impl/schema/table/CreateTableProcedure.java | 9 +- .../impl/schema/table/DeleteDevicesProcedure.java | 54 +- .../thrift/ConfigNodeRPCServiceProcessor.java | 14 +- .../confignode/manager/ProcedureManagerTest.java | 24 + .../schema/table/DeleteDevicesProcedureTest.java | 7 +- .../apache/iotdb/consensus/config/RatisConfig.java | 28 - .../pipe/consensuspipe/ConsensusPipeManager.java | 6 + .../apache/iotdb/consensus/ratis/utils/Utils.java | 23 +- .../org/apache/iotdb/db/conf/IoTDBDescriptor.java | 62 +- .../db/conf/rest/IoTDBRestServiceDescriptor.java | 88 ++- .../dataregion/DataExecutionVisitor.java | 12 + .../dataregion/DataRegionStateMachine.java | 2 +- .../exception/metadata/DatabaseModelException.java | 15 + .../db/pipe/agent/runtime/PipeAgentLauncher.java | 2 +- .../db/pipe/agent/task/PipeDataNodeTaskAgent.java | 30 +- .../connector/PipeConnectorSubtaskLifeCycle.java | 4 +- .../subtask/processor/PipeProcessorSubtask.java | 4 +- .../evolvable/batch/PipeTabletEventPlainBatch.java | 10 +- .../connector/payload/legacy/DeletionPipeData.java | 2 +- .../PipeConsensusTabletBatchEventHandler.java | 10 +- .../request/PipeConsensusDeleteNodeReq.java | 7 +- .../async/IoTDBDataRegionAsyncConnector.java | 2 +- .../PipeTransferTabletBatchEventHandler.java | 6 +- .../pipe/consensus/deletion/DeletionResource.java | 15 +- .../deletion/DeletionResourceManager.java | 8 +- .../common/deletion/PipeDeleteDataNodeEvent.java | 9 +- .../tablet/PipeInsertNodeTabletInsertionEvent.java | 30 +- .../common/tablet/PipeRawTabletInsertionEvent.java | 6 +- .../common/tsfile/PipeTsFileInsertionEvent.java | 26 +- .../scan/TsFileInsertionEventScanParser.java | 14 +- .../event/realtime/PipeRealtimeEventFactory.java | 4 +- ...oricalDataRegionTsFileAndDeletionExtractor.java | 38 ++ .../PipeRealtimeDataRegionHybridExtractor.java | 12 +- .../listener/PipeInsertionDataNodeListener.java | 10 +- .../protocol/legacy/loader/DeletionLoader.java | 2 +- .../pipeconsensus/PipeConsensusReceiver.java | 38 +- .../resource/tsfile/PipeTsFileResourceManager.java | 10 +- .../iotdb/db/protocol/client/ConfigNodeClient.java | 2 +- .../iotdb/db/protocol/client/ConfigNodeInfo.java | 3 +- .../impl/DataNodeInternalRPCServiceImpl.java | 78 ++- .../common/header/ColumnHeaderConstant.java | 2 + .../execution/executor/RegionWriteExecutor.java | 14 + .../execution/fragment/QueryContext.java | 40 +- .../execution/operator/source/FileLoaderUtils.java | 10 +- .../relational/aggregation/AccumulatorFactory.java | 15 +- .../aggregation/TableMaxMinByBaseAccumulator.java | 10 +- .../grouped/GroupedFirstByAccumulator.java | 2 + .../grouped/GroupedLastByAccumulator.java | 1 + .../relational/ColumnTransformerBuilder.java | 12 +- .../iotdb/db/queryengine/plan/Coordinator.java | 35 +- .../db/queryengine/plan/analyze/AnalyzeUtils.java | 255 +++++++ .../queryengine/plan/analyze/PredicateUtils.java | 9 +- .../analyze/load/LoadTsFileTableSchemaCache.java | 11 +- .../analyze/load/LoadTsFileTreeSchemaCache.java | 11 +- .../execution/config/TableConfigTaskVisitor.java | 40 +- .../config/executor/ClusterConfigTaskExecutor.java | 45 +- .../config/metadata/relational/ShowDBTask.java | 35 +- .../TableModelStatementMemorySourceVisitor.java | 11 +- .../plan/planner/TableOperatorGenerator.java | 154 +++-- .../plan/planner/plan/node/PlanNodeType.java | 11 +- .../plan/planner/plan/node/PlanVisitor.java | 5 + .../plan/node/load/LoadSingleTsFileNode.java | 4 +- .../plan/node/pipe/PipeEnrichedDeleteDataNode.java | 2 + .../plan/node/write/AbstractDeleteDataNode.java | 81 +++ .../planner/plan/node/write/DeleteDataNode.java | 36 +- .../planner/plan/node/write/DeleteNodeType.java | 68 ++ .../plan/node/write/RelationalDeleteDataNode.java | 281 ++++++++ .../plan/relational/analyzer/Analysis.java | 3 +- .../relational/analyzer/StatementAnalyzer.java | 18 +- .../predicate/ConvertPredicateToFilterVisitor.java | 48 +- .../ConvertPredicateToTimeFilterVisitor.java | 60 +- .../fetcher/TableDeviceSchemaValidator.java | 11 + .../plan/relational/planner/IrTypeAnalyzer.java | 12 + .../plan/relational/planner/PlanBuilder.java | 4 +- .../plan/relational/planner/QueryPlanner.java | 24 +- .../plan/relational/planner/RelationPlan.java | 14 +- .../plan/relational/planner/RelationPlanner.java | 45 +- .../relational/planner/TableLogicalPlanner.java | 67 +- .../plan/relational/planner/TableModelPlanner.java | 20 +- .../distribute/TableDistributedPlanGenerator.java | 42 +- .../distribute/TableDistributedPlanner.java | 43 +- .../TableModelTypeProviderExtractor.java | 5 + .../relational/planner/ir/ExpressionRewriter.java | 12 + .../planner/ir/ExpressionTreeRewriter.java | 32 +- .../ir/GlobalTimePredicateExtractVisitor.java | 37 +- ...AddTableScanColumnsToTypeProviderOptimizer.java | 66 -- .../iterative/rule/PruneTableScanColumns.java | 12 +- .../relational/planner/node/TableScanNode.java | 18 + .../optimizations/LogicalOptimizeFactory.java | 4 +- .../planner/optimizations/PlanOptimizer.java | 8 - .../PushAggregationIntoTableScan.java | 12 +- .../PushLimitOffsetIntoTableScan.java | 3 +- .../optimizations/PushPredicateIntoTableScan.java | 101 +-- .../planner/optimizations/SortElimination.java | 16 +- .../optimizations/TransformSortToStreamSort.java | 5 +- .../plan/relational/sql/ast/CurrentDatabase.java | 13 +- .../plan/relational/sql/ast/CurrentUser.java | 13 +- .../plan/relational/sql/ast/Delete.java | 33 + .../plan/relational/sql/ast/DeleteDevice.java | 35 +- .../relational/sql/ast/TableExpressionType.java | 4 +- .../plan/relational/sql/ast/TimeRange.java | 16 +- .../plan/relational/sql/parser/AstBuilder.java | 6 +- .../plan/scheduler/load/LoadTsFileScheduler.java | 22 + .../apache/iotdb/db/schemaengine/SchemaEngine.java | 33 +- .../rescon/ISchemaRegionStatistics.java | 6 +- .../rescon/MemSchemaRegionStatistics.java | 6 + .../mtree/impl/mem/MTreeBelowSGMemoryImpl.java | 12 +- .../read/resp/info/impl/ShowDevicesResult.java | 4 +- .../schemaregion/utils/ResourceByPathUtils.java | 14 +- .../db/storageengine/dataregion/DataRegion.java | 636 +++++++++-------- .../performer/impl/FastCompactionPerformer.java | 25 +- .../RepairUnsortedFileCompactionPerformer.java | 7 +- .../execute/recover/CompactionRecoverTask.java | 37 +- .../execute/task/AbstractCompactionTask.java | 6 +- .../execute/task/InnerSpaceCompactionTask.java | 32 +- .../task/InsertionCrossSpaceCompactionTask.java | 13 +- .../task/RepairUnsortedFileCompactionTask.java | 13 +- .../execute/task/SettleCompactionTask.java | 6 +- .../subtask/FastCompactionPerformerSubTask.java | 8 +- .../compaction/execute/utils/CompactionUtils.java | 101 +-- .../execute/utils/MultiTsFileDeviceIterator.java | 52 +- ...BatchedFastAlignedSeriesCompactionExecutor.java | 8 +- .../fast/FastAlignedSeriesCompactionExecutor.java | 8 +- .../FastNonAlignedSeriesCompactionExecutor.java | 4 +- .../executor/fast/SeriesCompactionExecutor.java | 14 +- .../execute/utils/log/TsFileIdentifier.java | 7 +- .../estimator/CompactionEstimateUtils.java | 4 +- .../selector/estimator/CompactionTaskInfo.java | 6 +- .../selector/impl/SettleSelectorImpl.java | 34 +- .../compaction/settle/SettleRequestHandler.java | 4 +- .../dataregion/memtable/AbstractMemTable.java | 109 +-- .../memtable/AlignedWritableMemChunk.java | 20 +- .../memtable/AlignedWritableMemChunkGroup.java | 41 +- .../dataregion/memtable/IMemTable.java | 22 +- .../memtable/IWritableMemChunkGroup.java | 7 +- .../dataregion/memtable/TsFileProcessor.java | 96 +-- .../dataregion/memtable/WritableMemChunkGroup.java | 61 +- .../dataregion/modification/DeletionPredicate.java | 181 +++++ .../dataregion/modification/IDPredicate.java | 397 +++++++++++ .../dataregion/modification/ModEntry.java | 195 ++++++ .../modification/ModFileManagement.java} | 31 +- .../dataregion/modification/ModificationFile.java | 391 ++++++----- .../modification/PartitionLevelModFileManager.java | 159 +++++ .../modification/TableDeletionEntry.java | 149 ++++ .../dataregion/modification/TreeDeletionEntry.java | 225 ++++++ .../dataregion/modification/{ => v1}/Deletion.java | 2 +- .../modification/{ => v1}/Modification.java | 2 +- .../ModificationFileV1.java} | 33 +- .../{ => v1}/io/LocalTextModificationAccessor.java | 6 +- .../{ => v1}/io/ModificationReader.java | 4 +- .../{ => v1}/io/ModificationWriter.java | 4 +- .../filescan/impl/ClosedFileScanHandleImpl.java | 19 +- .../metadata/DiskAlignedChunkMetadataLoader.java | 10 +- .../chunk/metadata/DiskChunkMetadataLoader.java | 6 +- .../dataregion/snapshot/SnapshotFileSet.java | 2 + .../dataregion/snapshot/SnapshotTaker.java | 31 +- .../dataregion/tsfile/TsFileManager.java | 25 + .../dataregion/tsfile/TsFileResource.java | 366 ++++++++-- .../tsfile/timeindex/ArrayDeviceTimeIndex.java | 12 + .../dataregion/wal/buffer/WALBuffer.java | 3 + .../dataregion/wal/buffer/WALEntry.java | 6 + .../dataregion/wal/buffer/WALEntryType.java | 4 +- .../dataregion/wal/buffer/WALInfoEntry.java | 1 + .../dataregion/wal/node/IWALNode.java | 4 + .../dataregion/wal/node/WALFakeNode.java | 6 + .../storageengine/dataregion/wal/node/WALNode.java | 13 + .../wal/recover/file/TsFilePlanRedoer.java | 72 +- .../file/UnsealedTsFileRecoverPerformer.java | 99 ++- .../dataregion/wal/utils/WALEntryHandler.java | 12 +- .../db/storageengine/load/LoadTsFileManager.java | 10 +- .../storageengine/load/splitter/DeletionData.java | 18 +- .../load/splitter/TsFileSplitter.java | 32 +- .../task/subtask/SubscriptionConnectorSubtask.java | 12 +- .../SubscriptionConnectorSubtaskLifeCycle.java | 8 +- .../iotdb/db/tools/TsFileSplitByPartitionTool.java | 59 +- .../org/apache/iotdb/db/tools/TsFileSplitTool.java | 3 +- .../db/tools/settle/TsFileAndModSettleTool.java | 2 +- .../TsFileOverlapValidationAndRepairTool.java | 5 +- .../apache/iotdb/db/utils/ModificationUtils.java | 159 ++--- .../db/utils/datastructure/AlignedTVList.java | 123 +++- .../utils/datastructure/PatternTreeMapFactory.java | 64 +- .../io/BufferSerializable.java} | 30 +- .../io/StreamSerializable.java} | 32 +- .../iotdb/db/metadata/path/PatternTreeMapTest.java | 78 +-- .../db/pipe/consensus/DeletionRecoverTest.java | 48 +- .../db/pipe/consensus/DeletionResourceTest.java | 70 +- .../resource/PipeTsFileResourceManagerTest.java | 16 +- .../operator/sink/IdentitySinkOperatorTest.java | 35 +- .../node/write/RelationalDeleteDataNodeTest.java | 105 +++ .../plan/relational/analyzer/AggregationTest.java | 114 +++- .../plan/relational/analyzer/AnalyzerTest.java | 188 +++-- .../plan/relational/analyzer/JoinTest.java | 54 +- .../analyzer/LimitOffsetPushDownTest.java | 50 +- .../plan/relational/analyzer/SortTest.java | 164 ++++- .../plan/relational/analyzer/SubQueryTest.java | 39 +- .../plan/relational/analyzer/TestMatadata.java | 30 + .../plan/relational/analyzer/TestUtils.java | 6 +- .../plan/relational/planner/PlanTester.java | 3 +- .../storageengine/dataregion/DataRegionTest.java | 44 +- .../TsFileResourceProgressIndexTest.java | 5 + .../compaction/AbstractCompactionTest.java | 4 +- .../compaction/CompactionTaskComparatorTest.java | 8 +- .../compaction/ReadChunkInnerCompactionTest.java | 80 +-- ...tchedAlignedSeriesCrossSpaceCompactionTest.java | 18 +- .../cross/CrossSpaceCompactionExceptionTest.java | 24 +- .../InsertionCrossSpaceCompactionRecoverTest.java | 34 +- .../dataregion/compaction/cross/MergeTest.java | 2 - .../RewriteCrossSpaceCompactionRecoverTest.java | 52 +- ...eCrossSpaceCompactionWithFastPerformerTest.java | 68 +- ...sSpaceCompactionWithReadPointPerformerTest.java | 68 +- ...atchedAlignedSeriesFastInnerCompactionTest.java | 22 +- ...atchedAlignedSeriesReadChunkCompactionTest.java | 36 +- .../InnerSeqCompactionWithFastPerformerTest.java | 20 +- ...nerSeqCompactionWithReadChunkPerformerTest.java | 20 +- .../inner/InnerSpaceCompactionExceptionTest.java | 40 +- .../inner/InnerSpaceCompactionSelectorTest.java | 17 +- ...nkCompactionPerformerWithAlignedSeriesTest.java | 46 +- .../ReadChunkCompactionPerformerAlignedTest.java | 8 +- .../NewSizeTieredCompactionSelectorTest.java | 40 +- .../SizeTieredCompactionRecoverTest.java | 30 +- .../repair/RepairUnsortedFileCompactionTest.java | 17 +- .../settle/SettleCompactionRecoverTest.java | 86 +-- .../settle/SettleCompactionSelectorTest.java | 78 +-- .../tablemodel/CompactionWithAllNullRowsTest.java | 32 +- .../TableModelCompactionWithTTLTest.java | 3 +- .../compaction/utils/CompactionCheckerUtils.java | 26 +- .../utils/CompactionFileGeneratorUtils.java | 16 +- .../dataregion/memtable/PrimitiveMemTableTest.java | 16 +- .../dataregion/memtable/TsFileProcessorTest.java | 88 +-- .../modification/ModificationFileTest.java | 71 +- .../modification/TableDeletionEntryTest.java | 208 ++++++ .../modification/TreeDeletionEntryTest.java | 153 +++++ .../io/LocalTextModificationAccessorTest.java | 6 +- .../wal/recover/file/TsFilePlanRedoerTest.java | 4 +- .../file/UnsealedTsFileRecoverPerformerTest.java | 8 +- .../iotdb/db/tools/TsFileAndModSettleToolTest.java | 20 +- .../reporter/iotdb/IoTDBSessionReporter.java | 2 +- .../commons/consensus/index/ProgressIndex.java | 12 +- .../consensus/index/impl/HybridProgressIndex.java | 36 +- .../consensus/index/impl/IoTProgressIndex.java | 12 + .../consensus/index/impl/MetaProgressIndex.java | 9 +- .../consensus/index/impl/MinimumProgressIndex.java | 5 + .../consensus/index/impl/RecoverProgressIndex.java | 13 + .../consensus/index/impl/SimpleProgressIndex.java | 9 +- .../consensus/index/impl/StateProgressIndex.java | 17 +- .../index/impl/TimeWindowStateProgressIndex.java | 24 + .../iotdb/commons/partition/DataPartition.java | 18 + .../apache/iotdb/commons/path/PatternTreeMap.java | 25 +- .../commons/pipe/agent/task/PipeTaskAgent.java | 49 ++ .../agent/task/execution/PipeSubtaskExecutor.java | 6 +- .../commons/pipe/agent/task/meta/PipeMeta.java | 17 +- .../pipe/agent/task/meta/PipeTemporaryMeta.java | 73 +- .../agent/task/meta/PipeTemporaryMetaInAgent.java | 107 +++ ...ta.java => PipeTemporaryMetaInCoordinator.java} | 5 +- .../pipe/agent/task/progress/CommitterKey.java | 2 +- .../task/progress/PipeEventCommitManager.java | 12 +- .../task/subtask/PipeAbstractConnectorSubtask.java | 6 +- .../pipe/agent/task/subtask/PipeSubtask.java | 4 +- .../config/constant/PipeExtractorConstant.java | 2 + .../pipe/datastructure/pattern/TablePattern.java | 28 +- .../iotdb/commons/pipe/event/EnrichedEvent.java | 6 - .../commons/pipe/receiver/IoTDBFileReceiver.java | 5 +- .../apache/iotdb/commons/schema/table/TsTable.java | 53 +- .../org/apache/iotdb/commons/utils/FileUtils.java | 5 +- .../iotdb/commons/pipe/task/PipeMetaDeSerTest.java | 19 +- iotdb-doap.rdf | 8 + .../src/main/thrift/confignode.thrift | 2 + .../src/main/thrift/datanode.thrift | 14 +- pom.xml | 4 +- 341 files changed, 10554 insertions(+), 4404 deletions(-) diff --cc iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TableOperatorGenerator.java index 24f7f424380,fe0e8671f4a..64a98c10111 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TableOperatorGenerator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TableOperatorGenerator.java @@@ -34,7 -34,6 +34,8 @@@ import org.apache.iotdb.db.queryengine. import org.apache.iotdb.db.queryengine.execution.exchange.sink.ISinkHandle; import org.apache.iotdb.db.queryengine.execution.exchange.sink.ShuffleSinkHandle; import org.apache.iotdb.db.queryengine.execution.exchange.source.ISourceHandle; +import org.apache.iotdb.db.queryengine.execution.operator.ExplainAnalyzeOperator; ++import org.apache.iotdb.db.queryengine.execution.operator.ExplainAnalyzeOperator; import org.apache.iotdb.db.queryengine.execution.operator.Operator; import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext; import org.apache.iotdb.db.queryengine.execution.operator.process.CollectOperator; @@@ -83,7 -81,6 +83,8 @@@ import org.apache.iotdb.db.queryengine. import org.apache.iotdb.db.queryengine.execution.operator.source.relational.aggregation.grouped.StreamingHashAggregationOperator; import org.apache.iotdb.db.queryengine.execution.relational.ColumnTransformerBuilder; import org.apache.iotdb.db.queryengine.plan.analyze.TypeProvider; +import org.apache.iotdb.db.queryengine.plan.planner.plan.node.ExplainAnalyzeNode; ++import org.apache.iotdb.db.queryengine.plan.planner.plan.node.ExplainAnalyzeNode; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId; import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor; @@@ -1757,21 -1798,8 +1802,22 @@@ public class TableOperatorGenerator ext return aggTableScanOperator; } + @Override + public Operator visitExplainAnalyze(ExplainAnalyzeNode node, LocalExecutionPlanContext context) { - Operator operator = node.getChild().accept(this, context); - OperatorContext operatorContext = - context - .getDriverContext() - .addOperatorContext( - context.getNextOperatorId(), - node.getPlanNodeId(), - ExplainAnalyzeOperator.class.getSimpleName()); - return new ExplainAnalyzeOperator( - operatorContext, operator, node.getQueryId(), node.isVerbose(), node.getTimeout()); - } ++ Operator operator = node.getChild().accept(this, context); ++ OperatorContext operatorContext = ++ context ++ .getDriverContext() ++ .addOperatorContext( ++ context.getNextOperatorId(), ++ node.getPlanNodeId(), ++ ExplainAnalyzeOperator.class.getSimpleName()); ++ return new ExplainAnalyzeOperator( ++ operatorContext, operator, node.getQueryId(), node.isVerbose(), node.getTimeout()); ++ } + - private boolean[] checkStatisticAndScanOrder(AggregationTableScanNode node) { + private boolean[] checkStatisticAndScanOrder( + AggregationTableScanNode node, String timeColumnName) { boolean canUseStatistic = true; int ascendingCount = 0, descendingCount = 0; diff --cc iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/TableLogicalPlanner.java index c659ca3a3bc,2692690c82f..8ef7b4a4407 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/TableLogicalPlanner.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/TableLogicalPlanner.java @@@ -49,8 -47,8 +49,9 @@@ import org.apache.iotdb.db.queryengine. import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.AbstractTraverseDevice; import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.CountDevice; import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.CreateOrUpdateDevice; + import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Delete; import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Explain; +import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ExplainAnalyze; import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.FetchDevice; import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.LoadTsFile; import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.PipeEnriched; @@@ -64,9 -62,8 +65,11 @@@ import org.apache.iotdb.db.queryengine. import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; + import org.apache.tsfile.read.common.type.LongType; + import org.apache.tsfile.read.common.type.TypeFactory; +import org.apache.tsfile.enums.TSDataType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.List; @@@ -206,9 -184,9 +190,12 @@@ public class TableLogicalPlanner if (statement instanceof PipeEnriched) { return createRelationPlan(analysis, (PipeEnriched) statement); } + if (statement instanceof Delete) { + return createRelationPlan(analysis, (Delete) statement); + } + if (statement instanceof ExplainAnalyze) { + return planExplainAnalyze((ExplainAnalyze) statement, analysis); + } throw new IllegalStateException( "Unsupported statement type: " + statement.getClass().getSimpleName()); }
