This is an automated email from the ASF dual-hosted git repository. shuwenwei pushed a commit to branch read_tsfile_table_function in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 5c9027555065275bf8481cf9eed7909527f511c2 Merge: 53919670547 66d0c07bb09 Author: shuwenwei <[email protected]> AuthorDate: Wed Jun 3 17:39:44 2026 +0800 Merge branch 'iotdb_master' into readTsFileTableFunction .../iotdb/ainode/it/AINodeSharedClusterIT.java | 83 +++++ .../iotdb/db/it/IoTDBLoadTsFileWithModIT.java | 22 +- .../iotdb/db/it/quotas/IoTDBSpaceQuotaIT.java | 30 +- .../iotdb/db/it/schema/IoTDBMetadataFetchIT.java | 28 ++ .../regionscan/IoTDBActiveSchemaQueryIT.java | 47 +++ .../manual/enhanced/IoTDBPipeClusterIT.java | 28 +- .../auto/enhanced/IoTDBPipeClusterIT.java | 28 +- .../single/IoTDBLegacyPipeReceiverSecurityIT.java | 113 ++++++ .../relational/it/db/it/IoTDBInsertTableIT.java | 35 ++ .../api/customizer/parameter/PipeParameters.java | 1 + iotdb-client/client-cpp/src/main/Column.cpp | 20 ++ iotdb-client/client-cpp/src/main/Column.h | 5 + iotdb-client/client-cpp/src/main/Common.cpp | 2 +- iotdb-client/client-cpp/src/main/Session.cpp | 4 +- iotdb-client/client-cpp/src/main/Session.h | 26 +- .../client-cpp/src/main/SessionDataSet.cpp | 25 +- iotdb-client/client-cpp/src/main/SessionPool.cpp | 281 +++++++++++++++ iotdb-client/client-cpp/src/main/SessionPool.h | 392 +++++++++++++++++++++ iotdb-client/client-cpp/src/test/cpp/sessionIT.cpp | 157 ++++++++- .../org/apache/iotdb/isession/SessionDataSet.java | 27 +- .../org/apache/iotdb/rpc/IoTDBJDBCDataSet.java | 47 ++- .../java/org/apache/iotdb/rpc/TSStatusCode.java | 1 + .../iotdb/rpc/stmt/PreparedParameterSerde.java | 13 +- .../java/org/apache/iotdb/session/Session.java | 186 +++++----- .../request_scheduler/basic_request_scheduler.py | 19 +- .../core/model/chronos2/pipeline_chronos2.py | 1 - .../org/apache/iotdb/db/qp/sql/IdentifierParser.g4 | 3 + .../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 | 27 ++ .../antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4 | 12 + .../iotdb/confignode/i18n/ConfigNodeMessages.java | 4 +- .../iotdb/confignode/i18n/ConfigNodeMessages.java | 4 +- .../iotdb/confignode/i18n/ManagerMessages.java | 14 +- .../consensus/request/read/cq/ShowCQPlan.java | 13 + .../consensus/request/write/cq/ActiveCQPlan.java | 20 +- .../consensus/request/write/cq/AddCQPlan.java | 20 +- .../consensus/request/write/cq/DropCQPlan.java | 20 +- .../request/write/cq/UpdateCQLastExecTimePlan.java | 23 +- .../iotdb/confignode/manager/cq/CQManager.java | 102 +++++- .../confignode/manager/cq/CQScheduleTask.java | 58 ++- .../iotdb/confignode/persistence/UDFInfo.java | 54 +-- .../iotdb/confignode/persistence/cq/CQInfo.java | 76 ++-- .../persistence/executor/ConfigPlanExecutor.java | 3 +- .../procedure/impl/cq/CreateCQProcedure.java | 80 ++++- .../request/ConfigPhysicalPlanSerDeTest.java | 8 +- .../apache/iotdb/confignode/cq/CQManagerTest.java | 107 ++++++ .../iotdb/confignode/persistence/CQInfoTest.java | 64 +++- .../iotdb/confignode/persistence/UDFInfoTest.java | 92 +++-- .../procedure/impl/CreateCQProcedureTest.java | 26 ++ .../impl/cq/CreateCQProcedureRecoveryTest.java | 117 ++++++ .../iotdb/consensus/config/ConsensusConfig.java | 15 + .../apache/iotdb/consensus/iot/IoTConsensus.java | 32 +- .../consensus/iot/IoTConsensusServerImpl.java | 96 +++-- .../apache/iotdb/consensus/iot/ReplicateTest.java | 27 ++ .../apache/iotdb/consensus/iot/StabilityTest.java | 8 + .../iotdb/consensus/ratis/RecoverReadTest.java | 9 +- .../apache/iotdb/consensus/ratis/TestUtils.java | 70 +++- .../apache/iotdb/db/i18n/DataNodePipeMessages.java | 21 ++ .../apache/iotdb/db/i18n/DataNodePipeMessages.java | 74 ++-- .../iotdb/db/i18n/DataNodeSchemaMessages.java | 10 +- .../org/apache/iotdb/db/auth/LoginLockManager.java | 7 +- .../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 13 +- .../org/apache/iotdb/db/conf/IoTDBDescriptor.java | 6 + .../db/consensus/DataRegionConsensusImpl.java | 2 + .../dataregion/DataExecutionVisitor.java | 5 - .../pipe/agent/plugin/PipeDataNodePluginAgent.java | 22 +- .../task/subtask/sink/PipeSinkSubtaskManager.java | 54 ++- .../common/tsfile/PipeTsFileInsertionEvent.java | 10 +- .../tsfile/parser/TsFileInsertionEventParser.java | 2 +- .../scan/AlignedSinglePageWholeChunkReader.java | 55 ++- .../parser/scan/MemoryControlledChunkReader.java | 76 ++++ .../parser/scan/SinglePageWholeChunkReader.java | 193 +++++++++- .../scan/TsFileInsertionEventScanParser.java | 53 +-- .../metric/sink/PipeDataRegionSinkMetrics.java | 10 +- .../iotconsensusv2/IoTConsensusV2Receiver.java | 6 +- .../legacy/IoTDBLegacyPipeReceiverAgent.java | 40 ++- .../protocol/thrift/IoTDBDataNodeReceiver.java | 68 +++- .../visitor/PipeStatementExceptionVisitor.java | 7 + .../client/IoTDBDataNodeAsyncClientManager.java | 28 +- .../protocol/airgap/IoTDBDataRegionAirGapSink.java | 5 +- .../iotconsensusv2/IoTConsensusV2AsyncSink.java | 103 ++++-- .../handler/IoTConsensusV2DeleteEventHandler.java | 16 +- .../IoTConsensusV2TabletBatchEventHandler.java | 20 +- .../IoTConsensusV2TabletInsertionEventHandler.java | 17 +- .../IoTConsensusV2TsFileInsertionEventHandler.java | 18 +- .../sink/protocol/legacy/IoTDBLegacyPipeSink.java | 29 +- .../thrift/async/IoTDBDataRegionAsyncSink.java | 40 ++- .../handler/PipeTransferTrackableHandler.java | 21 +- .../async/handler/PipeTransferTsFileHandler.java | 23 +- .../thrift/sync/IoTDBDataRegionSyncSink.java | 5 +- .../pipe/sink/util/builder/PipeTsFileBuilder.java | 6 +- .../PipeRealtimeDataRegionHybridSource.java | 4 +- .../realtime/PipeRealtimeDataRegionLogSource.java | 5 +- .../realtime/PipeRealtimeDataRegionSource.java | 8 +- .../PipeRealtimeDataRegionTsFileSource.java | 5 +- .../realtime/assigner/DisruptorQueue.java | 19 +- .../realtime/assigner/PipeDataRegionAssigner.java | 41 ++- .../realtime/disruptor/BatchEventProcessor.java | 11 +- .../realtime/disruptor/MultiProducerSequencer.java | 21 ++ .../dataregion/realtime/disruptor/RingBuffer.java | 22 +- .../iotdb/db/protocol/session/SessionManager.java | 6 +- .../protocol/thrift/impl/ClientRPCServiceImpl.java | 53 ++- .../impl/DataNodeInternalRPCServiceImpl.java | 6 +- .../db/queryengine/common/TimeseriesContext.java | 294 +++++++++++++++- .../execution/executor/RegionReadExecutor.java | 23 +- .../fragment/FragmentInstanceManager.java | 79 +++-- .../schema/CountGroupByLevelScanOperator.java | 15 +- .../operator/schema/SchemaCountOperator.java | 4 + .../operator/schema/source/ISchemaSource.java | 4 + .../schema/source/SchemaSourceFactory.java | 18 +- .../schema/source/TimeSeriesSchemaSource.java | 20 ++ .../source/ActiveTimeSeriesRegionScanOperator.java | 92 +++-- .../queryengine/plan/analyze/AnalyzeVisitor.java | 189 +++++++++- .../db/queryengine/plan/parser/ASTVisitor.java | 12 +- .../plan/planner/LogicalPlanBuilder.java | 16 +- .../plan/planner/LogicalPlanVisitor.java | 8 +- .../plan/planner/OperatorTreeGenerator.java | 52 ++- .../plan/planner/distribution/SourceRewriter.java | 10 +- .../metadata/read/LevelTimeSeriesCountNode.java | 48 ++- .../node/metadata/read/TimeSeriesCountNode.java | 49 ++- .../plan/node/source/TimeseriesRegionScanNode.java | 7 + .../planner/plan/node/write/DeleteDataNode.java | 10 +- .../planner/plan/node/write/InsertRowNode.java | 10 +- .../planner/plan/node/write/InsertRowsNode.java | 10 +- .../planner/plan/node/write/InsertTabletNode.java | 17 +- .../plan/planner/plan/node/write/ObjectNode.java | 10 +- .../plan/node/write/RelationalDeleteDataNode.java | 10 +- .../plan/node/write/RelationalInsertRowNode.java | 4 +- .../plan/node/write/RelationalInsertRowsNode.java | 4 +- .../node/write/RelationalInsertTabletNode.java | 7 +- .../plan/planner/plan/node/write/SearchNode.java | 49 +++ .../fetcher/TableDeviceSchemaValidator.java | 44 ++- .../fetcher/cache/TableDeviceSchemaCache.java | 6 +- .../iterative/rule/PruneTableScanColumns.java | 54 ++- .../planner/optimizations/SortElimination.java | 46 +++ .../security/TreeAccessCheckVisitor.java | 99 +++++- .../plan/relational/sql/ast/InsertTablet.java | 17 +- .../scheduler/FragmentInstanceDispatcherImpl.java | 15 + .../plan/statement/crud/LoadTsFileStatement.java | 25 ++ .../plan/statement/metadata/CountStatement.java | 9 + .../apache/iotdb/db/schemaengine/SchemaEngine.java | 9 +- .../mtree/impl/mem/MTreeBelowSGMemoryImpl.java | 81 ++++- .../mtree/impl/mem/mnode/IMemMNode.java | 23 +- .../mtree/impl/mem/mnode/basic/BasicMNode.java | 21 +- .../impl/mem/mnode/impl/AboveDatabaseMNode.java | 10 - .../mtree/impl/mem/mnode/impl/DatabaseMNode.java | 10 - .../impl/mem/mnode/impl/MeasurementMNode.java | 10 - .../mtree/impl/pbtree/MTreeBelowSGCachedImpl.java | 83 ++++- .../mtree/impl/pbtree/mnode/ICachedMNode.java | 19 + .../impl/pbtree/mnode/basic/CachedBasicMNode.java | 40 ++- .../schemaregion/mtree/traverser/Traverser.java | 102 ++++++ .../traverser/basic/MeasurementTraverser.java | 5 + .../iotdb/db/storageengine/StorageEngine.java | 16 +- .../db/storageengine/dataregion/DataRegion.java | 84 ++++- .../execute/task/InnerSpaceCompactionTask.java | 2 +- .../impl/SizeTieredCompactionSelector.java | 2 +- .../filescan/impl/ClosedFileScanHandleImpl.java | 35 +- .../filescan/impl/UnclosedFileScanHandleImpl.java | 83 +++-- .../dataregion/snapshot/SnapshotLoader.java | 106 +++--- .../dataregion/tsfile/TsFileManager.java | 21 +- .../tsfile/generator/TsFileNameGenerator.java | 4 +- .../tsfile/timeindex/ArrayDeviceTimeIndex.java | 2 +- .../allocation/AbstractNodeAllocationStrategy.java | 6 +- .../dataregion/wal/buffer/WALBuffer.java | 14 +- .../dataregion/wal/buffer/WALInfoEntry.java | 43 ++- .../storageengine/dataregion/wal/node/WALNode.java | 11 +- .../db/storageengine/load/LoadTsFileManager.java | 6 +- .../storageengine/load/disk/ILoadDiskSelector.java | 2 +- .../InheritSystemMultiDisksStrategySelector.java | 2 +- .../db/storageengine/load/disk/MinIOSelector.java | 2 +- .../iotdb/db/storageengine/load/util/LoadUtil.java | 6 +- .../db/storageengine/rescon/disk/TierManager.java | 11 +- .../apache/iotdb/db/utils/ErrorHandlingUtils.java | 2 +- .../apache/iotdb/db/utils/ModificationUtils.java | 57 ++- .../apache/iotdb/db/utils/QueryDataSetUtils.java | 171 ++------- .../org/apache/iotdb/db/auth/TreeAccessTest.java | 133 +++++++ .../strategy/DirectoryStrategyTest.java | 10 +- .../i18n/DataNodeSchemaMessagesZhFormatTest.java | 99 ++++++ .../cache/TreeDeviceSchemaCacheManagerTest.java | 49 +++ .../mtree/lock/StampedWriterPreferredLockTest.java | 42 ++- .../schemaRegion/SchemaRegionBasicTest.java | 22 ++ .../pipe/event/TsFileInsertionEventParserTest.java | 258 +++++++++++++- .../receiver/PipeStatementTsStatusVisitorTest.java | 14 + .../legacy/IoTDBLegacyPipeReceiverAgentTest.java | 122 +++++++ .../protocol/thrift/IoTDBDataNodeReceiverTest.java | 110 ++++++ .../realtime/disruptor/DisruptorShutdownTest.java | 56 +++ .../execution/executor/RegionReadExecutorTest.java | 46 +++ .../execution/operator/LimitOperatorTest.java | 3 + .../operator/schema/SchemaCountOperatorTest.java | 113 ++++++ .../schema/source/TimeSeriesSchemaSourceTest.java | 183 ++++++++++ .../distribution/RegionScanPlanningTest.java | 81 +++++ .../logical/RegionScanLogicalPlannerTest.java | 47 +++ .../metadata/read/SchemaCountNodeSerdeTest.java | 8 +- .../planner/node/write/InsertRowNodeSerdeTest.java | 90 +++++ .../node/write/InsertRowsNodeSerdeTest.java | 141 ++++++++ .../node/write/InsertTabletNodeSerdeTest.java | 67 ++++ .../IPlanVisitorInheritanceConstraintTest.java | 54 ++- .../plan/relational/analyzer/SortTest.java | 44 +++ .../fetcher/TableDeviceSchemaValidatorTest.java | 29 +- .../plan/relational/sql/ast/InsertTabletTest.java | 69 ++++ .../mtree/impl/mem/MTreeBelowSGMemoryImplTest.java | 281 +++++++++++++++ .../impl/pbtree/MTreeBelowSGCachedImplTest.java | 217 ++++++++++++ .../iotdb/db/storageengine/dataregion/TTLTest.java | 4 +- .../BatchedCompactionWithTsFileSplitterTest.java | 16 +- ...actionWithReadPointPerformerValidationTest.java | 4 +- .../utils/CompactionFileGeneratorUtils.java | 2 +- .../utils/MultiTsFileDeviceIteratorTest.java | 7 +- .../dataregion/snapshot/IoTDBSnapshotTest.java | 115 +++++- .../dataregion/wal/io/WALFileTest.java | 57 +++ .../wal/node/WALNodeWaitForRollFileTest.java | 29 +- .../rescon/disk/FolderManagerTest.java | 5 +- .../conf/iotdb-system.properties.template | 6 + .../apache/iotdb/commons/i18n/PipeMessages.java | 14 + .../apache/iotdb/commons/i18n/UtilMessages.java | 12 + .../apache/iotdb/commons/i18n/PipeMessages.java | 14 + .../apache/iotdb/commons/i18n/UtilMessages.java | 12 + .../apache/iotdb/commons}/disk/FolderManager.java | 53 ++- .../commons}/disk/strategy/DirectoryStrategy.java | 12 +- .../disk/strategy/DirectoryStrategyType.java | 2 +- .../strategy/MaxDiskUsableSpaceFirstStrategy.java | 4 +- .../MinFolderOccupiedSpaceFirstStrategy.java | 8 +- .../strategy/RandomOnDiskUsableSpaceStrategy.java | 4 +- .../commons}/disk/strategy/SequenceStrategy.java | 4 +- .../exception/DiskSpaceInsufficientException.java | 4 +- .../executable/ReferenceCountedJarMetaKeeper.java | 136 +++++++ .../org/apache/iotdb/commons/path/PartialPath.java | 28 +- .../meta/ConfigNodePipePluginMetaKeeper.java | 50 +-- .../plugin/env/PipeTaskSinkRuntimeEnvironment.java | 9 + .../pipe/datastructure/pattern/TreePattern.java | 36 +- .../commons/pipe/sink/protocol/IoTDBSink.java | 7 +- .../node/common/AbstractAboveDatabaseMNode.java | 4 + .../commons/schema/node/utils/IMNodeIterator.java | 2 +- .../commons/schema/tree/AbstractTreeVisitor.java | 4 + .../ReferenceCountedJarMetaKeeperTest.java | 116 ++++++ 233 files changed, 8419 insertions(+), 1327 deletions(-) diff --cc iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/PruneTableScanColumns.java index 97dc0672b55,bf02d62f546..5a7ab6eadfa --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/PruneTableScanColumns.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/PruneTableScanColumns.java @@@ -27,9 -27,10 +27,11 @@@ import org.apache.iotdb.db.queryengine. import org.apache.iotdb.db.queryengine.plan.relational.planner.SymbolsExtractor; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.AggregationTableScanNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.DeviceTableScanNode; +import org.apache.iotdb.db.queryengine.plan.relational.planner.node.ExternalTsFileScanNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.InformationSchemaTableScanNode; + import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TreeAlignedDeviceViewScanNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TreeDeviceViewScanNode; + import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TreeNonAlignedDeviceViewScanNode; import java.util.ArrayList; import java.util.LinkedHashMap; @@@ -127,24 -172,10 +173,26 @@@ public class PruneTableScanColumns exte deviceTableScanNode.getPushDownLimit(), deviceTableScanNode.getPushDownOffset(), deviceTableScanNode.isPushLimitToEachDevice(), - deviceTableScanNode.containsNonAlignedDevice())); + deviceTableScanNode.containsNonAlignedDevice()); + prunedNode.setRegionReplicaSet(deviceTableScanNode.getRegionReplicaSet()); + return Optional.of(prunedNode); } + } else if (node instanceof ExternalTsFileScanNode) { + ExternalTsFileScanNode externalTsFileScanNode = (ExternalTsFileScanNode) node; + return Optional.of( + new ExternalTsFileScanNode( + externalTsFileScanNode.getPlanNodeId(), + externalTsFileScanNode.getQualifiedObjectName(), + newOutputs, + newAssignments, + externalTsFileScanNode.getPushDownPredicate(), + externalTsFileScanNode.getPushDownLimit(), + externalTsFileScanNode.getPushDownOffset(), + externalTsFileScanNode.getTagPredicate().orElse(null), + externalTsFileScanNode.getTimePredicate().orElse(null), + externalTsFileScanNode.getScanOrder(), + externalTsFileScanNode.getPushedOrderingScheme().orElse(null), + externalTsFileScanNode.getTsFilePaths())); } else if (node instanceof InformationSchemaTableScanNode) { // For the convenience of process in execution stage, column-prune for // InformationSchemaTableScanNode is
