This is an automated email from the ASF dual-hosted git repository. shuwenwei pushed a commit to branch table_disk_usage_statistics in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit ccfb4ece63b6ff86b317db0c78b345636cd240d0 Merge: 098392ddd24 a7f1527d04c Author: shuwenwei <[email protected]> AuthorDate: Mon Nov 17 12:15:10 2025 +0800 Merge branch 'iotdb_master' into table_disk_usage_statistics .github/workflows/cluster-it-1c1d1a.yml | 2 +- integration-test/pom.xml | 1 + integration-test/src/assembly/mpp-test.xml | 2 +- .../it/env/cluster/config/MppCommonConfig.java | 4 +- .../env/cluster/config/MppSharedCommonConfig.java | 6 +- .../iotdb/it/env/cluster/node/AINodeWrapper.java | 25 +- .../apache/iotdb/itbase/constant/TestConstant.java | 14 +- .../org/apache/iotdb/itbase/env/CommonConfig.java | 2 +- .../ainode/it/AINodeConcurrentInferenceIT.java | 62 +-- .../confignode/it/IoTDBConfigNodeSnapshotIT.java | 31 +- .../it/database/IoTDBDatabaseSetAndDeleteIT.java | 66 +-- .../it/load/IoTDBConfigNodeSwitchLeaderIT.java | 2 +- .../partition/IoTDBAutoRegionGroupExtensionIT.java | 8 +- .../IoTDBCustomRegionGroupExtensionIT.java | 2 +- .../it/partition/IoTDBPartitionCreationIT.java | 4 +- .../it/partition/IoTDBPartitionDurableIT.java | 4 +- .../it/partition/IoTDBPartitionGetterIT.java | 41 +- .../commit/IoTDBRegionReconstructForIoTV1IT.java | 1 + .../confignode/it/utils/ConfigNodeTestUtils.java | 16 +- .../org/apache/iotdb/db/it/IoTDBDeletionIT.java | 21 + .../org/apache/iotdb/db/it/IoTDBExampleIT.java | 4 +- .../java/org/apache/iotdb/db/it/IoTDBFilterIT.java | 14 + .../org/apache/iotdb/db/it/IoTDBFlushQueryIT.java | 5 +- .../iotdb/db/it/IoTDBLoadTsFileWithModIT.java | 60 +- .../org/apache/iotdb/db/it/IoTDBRestServiceIT.java | 8 +- .../iotdb/db/it/IoTDBSetConfigurationIT.java | 2 +- .../org/apache/iotdb/db/it/IoTDBSimpleQueryIT.java | 2 +- .../db/it/IoTDBSyntaxConventionIdentifierIT.java | 2 +- .../iotdb/db/it/auth/IoTDBSystemPermissionIT.java | 3 +- .../it/auth/IoTDBSystemPermissionRelationalIT.java | 3 +- .../apache/iotdb/db/it/path/IoTDBQuotedPathIT.java | 4 +- .../it/schema/IoTDBAlterEncodingCompressorIT.java | 209 +++++++ .../db/it/schema/IoTDBAutoCreateSchemaIT.java | 14 +- .../db/it/schema/IoTDBDeactivateTemplateIT.java | 2 +- .../db/it/schema/IoTDBDeleteTimeSeriesIT.java | 2 +- .../iotdb/db/it/schema/IoTDBMetadataFetchIT.java | 2 +- .../org/apache/iotdb/db/it/schema/IoTDBTagIT.java | 2 +- .../auto/basic/IoTDBTreePatternFormatIT.java | 616 ++++++++++++--------- .../treemodel/manual/IoTDBPipeInclusionIT.java | 89 ++- .../IoTDBPipeTsFileDecompositionWithModsIT.java | 14 +- .../relational/it/db/it/IoTDBDeletionTableIT.java | 374 +++++++++++++ .../it/query/old/IoTDBSimpleQueryTableIT.java | 2 +- .../it/query/recent/IoTDBIntersectTableIT.java | 153 +++++ .../it/query/recent/IoTDBMaintainAuthIT.java | 8 +- .../it/query/recent/IoTDBTableAggregationIT.java | 24 + .../iotdb/session/it/IoTDBSessionSimpleIT.java | 22 +- .../session/it/IoTDBSessionSyntaxConventionIT.java | 6 +- .../java/org/apache/iotdb/cli/AbstractCli.java | 19 +- .../src/main/java/org/apache/iotdb/cli/Cli.java | 6 +- .../org/apache/iotdb/tool/common/Constants.java | 12 + .../org/apache/iotdb/tool/common/OptionsUtil.java | 30 + .../apache/iotdb/tool/data/AbstractDataTool.java | 41 +- .../apache/iotdb/tool/data/ExportDataTable.java | 10 +- .../org/apache/iotdb/tool/data/ExportDataTree.java | 29 +- .../apache/iotdb/tool/data/ImportDataTable.java | 10 +- .../org/apache/iotdb/tool/data/ImportDataTree.java | 10 +- .../iotdb/tool/schema/AbstractSchemaTool.java | 43 +- .../iotdb/tool/schema/ExportSchemaTable.java | 10 +- .../apache/iotdb/tool/schema/ExportSchemaTree.java | 12 +- .../iotdb/tool/schema/ImportSchemaTable.java | 10 +- .../apache/iotdb/tool/schema/ImportSchemaTree.java | 10 +- .../apache/iotdb/jdbc/IoTDBPreparedStatement.java | 17 +- .../iotdb/jdbc/IoTDBPreparedStatementTest.java | 154 +++++- .../iotdb/rpc/NettyTNonblockingTransport.java | 9 +- .../rpc/TCompressedElasticFramedTransport.java | 8 +- .../apache/iotdb/rpc/TElasticFramedTransport.java | 126 +++-- .../java/org/apache/iotdb/rpc/TSStatusCode.java | 1 + iotdb-core/ainode/.gitignore | 6 +- iotdb-core/ainode/ainode.spec | 199 +++++++ iotdb-core/ainode/ainode.xml | 17 +- iotdb-core/ainode/build_binary.py | 596 ++++++++++++++++++++ iotdb-core/ainode/iotdb/ainode/core/ai_node.py | 10 +- iotdb-core/ainode/iotdb/ainode/core/config.py | 28 +- iotdb-core/ainode/iotdb/ainode/core/constant.py | 18 +- .../iotdb/ainode/core/inference/pool_controller.py | 49 +- .../pool_scheduler/basic_pool_scheduler.py | 7 +- iotdb-core/ainode/iotdb/ainode/core/log.py | 4 +- .../iotdb/ainode/core/manager/inference_manager.py | 4 +- iotdb-core/ainode/iotdb/ainode/core/rpc/handler.py | 2 +- iotdb-core/ainode/iotdb/ainode/core/rpc/service.py | 1 + iotdb-core/ainode/iotdb/ainode/core/script.py | 80 +-- iotdb-core/ainode/poetry.lock | 111 +++- iotdb-core/ainode/pom.xml | 92 +-- iotdb-core/ainode/pyproject.toml | 29 +- .../ainode/resources/syncPythonVersion.groovy | 33 -- .../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 | 6 +- .../antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4 | 8 + .../client/async/CnToDnAsyncRequestType.java | 2 + .../CnToDnInternalServiceAsyncRequestManager.java | 6 + .../rpc/DataNodeAsyncRequestRPCHandler.java | 1 + .../confignode/conf/SystemPropertiesUtils.java | 2 + .../consensus/request/ConfigPhysicalPlan.java | 4 + .../consensus/request/ConfigPhysicalPlanType.java | 1 + .../request/ConfigPhysicalPlanVisitor.java | 8 + .../write/database/PreDeleteDatabasePlan.java | 22 +- .../payload/PipeAlterEncodingCompressorPlan.java | 130 +++++ .../iotdb/confignode/manager/ConfigManager.java | 46 +- .../apache/iotdb/confignode/manager/IManager.java | 19 +- .../iotdb/confignode/manager/ProcedureManager.java | 68 +++ .../iotdb/confignode/manager/load/LoadManager.java | 2 +- .../manager/load/balancer/RegionBalancer.java | 2 +- .../receiver/protocol/IoTDBConfigNodeReceiver.java | 69 ++- .../PipeConfigPhysicalPlanTSStatusVisitor.java | 11 + .../client/IoTDBConfigNodeSyncClientManager.java | 6 +- .../sink/protocol/IoTDBConfigRegionAirGapSink.java | 2 + .../pipe/sink/protocol/IoTDBConfigRegionSink.java | 6 +- .../pipe/source/ConfigRegionListeningFilter.java | 3 + .../pipe/source/IoTDBConfigRegionSource.java | 6 +- ...eConfigPhysicalPlanTreePatternParseVisitor.java | 69 ++- .../manager/schema/ClusterSchemaManager.java | 26 +- .../confignode/persistence/auth/AuthorInfo.java | 83 ++- .../persistence/auth/AuthorPlanExecutor.java | 7 +- .../persistence/executor/ConfigPlanExecutor.java | 1 + .../persistence/partition/PartitionInfo.java | 2 +- .../schema/AlterEncodingCompressorProcedure.java | 337 +++++++++++ .../impl/schema/DataNodeTSStatusTaskExecutor.java | 74 +++ .../impl/schema/DeactivateTemplateProcedure.java | 26 +- .../impl/schema/DeleteDatabaseProcedure.java | 28 +- .../impl/schema/DeleteLogicalViewProcedure.java | 26 +- .../impl/schema/DeleteTimeSeriesProcedure.java | 53 +- .../table/AbstractAlterOrDropTableProcedure.java | 29 +- ...tate.java => AlterEncodingCompressorState.java} | 9 +- ...ageGroupState.java => DeleteDatabaseState.java} | 2 +- .../procedure/store/ProcedureFactory.java | 9 + .../confignode/procedure/store/ProcedureType.java | 2 + .../thrift/ConfigNodeRPCServiceProcessor.java | 6 + ...figPhysicalPlanTreePatternParseVisitorTest.java | 7 +- .../pipe/receiver/PipeEnrichedProcedureTest.java | 28 + .../AlterEncodingCompressorProcedureTest.java | 62 +++ .../iotdb/consensus/ratis/RatisConsensus.java | 1 + .../assembly/resources/conf/logback-datanode.xml | 15 - .../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 25 +- .../org/apache/iotdb/db/conf/IoTDBDescriptor.java | 17 +- .../org/apache/iotdb/db/conf/IoTDBStartCheck.java | 4 + .../schemaregion/SchemaExecutionVisitor.java | 15 + .../db/pipe/agent/task/PipeDataNodeTaskAgent.java | 4 +- .../agent/task/connection/PipeEventCollector.java | 4 +- .../tsfile/parser/TsFileInsertionEventParser.java | 68 ++- .../parser/TsFileInsertionEventParserProvider.java | 6 +- .../query/TsFileInsertionEventQueryParser.java | 14 +- .../scan/TsFileInsertionEventScanParser.java | 12 +- .../table/TsFileInsertionEventTableParser.java | 15 +- .../overview/PipeTsFileToTabletsMetrics.java | 67 +++ .../protocol/thrift/IoTDBDataNodeReceiver.java | 27 +- .../visitor/PipeStatementTSStatusVisitor.java | 42 +- .../PipeStatementTreePatternParseVisitor.java | 22 +- .../client/IoTDBDataNodeAsyncClientManager.java | 9 +- .../client/IoTDBDataNodeSyncClientManager.java | 6 +- .../protocol/airgap/IoTDBDataNodeAirGapSink.java | 2 + .../thrift/async/IoTDBDataRegionAsyncSink.java | 24 +- .../thrift/sync/IoTDBDataNodeSyncSink.java | 6 +- .../source/dataregion/IoTDBDataRegionSource.java | 6 +- ...istoricalDataRegionTsFileAndDeletionSource.java | 18 +- .../realtime/assigner/DisruptorQueue.java | 4 +- .../PipePlanTreePatternParseVisitor.java | 41 +- .../iotdb/db/protocol/client/ConfigNodeClient.java | 7 + .../impl/DataNodeInternalRPCServiceImpl.java | 95 +++- .../execution/executor/RegionReadExecutor.java | 10 +- .../execution/operator/source/SeriesScanUtil.java | 5 + .../queryengine/plan/analyze/AnalyzeVisitor.java | 2 +- .../queryengine/plan/analyze/PredicateUtils.java | 16 +- .../schema/dualkeycache/impl/DualKeyCacheImpl.java | 6 +- .../plan/analyze/load/LoadTsFileAnalyzer.java | 13 +- .../plan/execution/config/ConfigExecution.java | 16 +- .../execution/config/TableConfigTaskVisitor.java | 1 - .../execution/config/TreeConfigTaskVisitor.java | 17 +- .../config/executor/ClusterConfigTaskExecutor.java | 62 +++ .../config/executor/IConfigTaskExecutor.java | 4 + .../metadata/AlterEncodingCompressorTask.java | 47 ++ .../db/queryengine/plan/parser/ASTVisitor.java | 101 +++- .../plan/planner/plan/node/PlanGraphPrinter.java | 10 + .../plan/planner/plan/node/PlanNodeType.java | 14 +- .../plan/planner/plan/node/PlanVisitor.java | 10 + .../write/AlterEncodingCompressorNode.java | 146 +++++ .../metadata/fetcher/TableDeviceSchemaFetcher.java | 6 +- .../plan/relational/planner/RelationPlanner.java | 24 +- .../distribute/TableDistributedPlanGenerator.java | 2 +- .../iterative/rule/ImplementIntersectAll.java | 95 ++++ .../rule/ImplementIntersectDistinctAsUnion.java | 88 +++ .../planner/iterative/rule/MergeUnion.java | 48 ++ .../iterative/rule/PruneDistinctAggregation.java | 9 + .../rule/PushDownOffsetIntoTableScan.java | 25 +- .../iterative/rule/PushLimitThroughUnion.java | 107 ++++ .../iterative/rule/PushProjectionThroughUnion.java | 111 ++++ .../iterative/rule/PushTopKThroughUnion.java | 102 ++++ .../iterative/rule/RemoveEmptyUnionBranches.java | 113 ++++ .../planner/iterative/rule/SetOperationMerge.java | 144 +++++ .../iterative/rule/SetOperationNodeTranslator.java | 355 ++++++++++++ .../planner/node/AggregationTableScanNode.java | 10 + .../relational/planner/node/IntersectNode.java | 98 ++++ .../plan/relational/planner/node/Patterns.java | 22 +- .../optimizations/LogicalOptimizeFactory.java | 52 +- .../PushLimitOffsetIntoTableScan.java | 2 +- .../optimizations/UnaliasSymbolReferences.java | 31 ++ .../security/TreeAccessCheckVisitor.java | 63 ++- .../db/queryengine/plan/statement/Statement.java | 4 + .../queryengine/plan/statement/StatementType.java | 1 + .../plan/statement/StatementVisitor.java | 12 +- .../crud/InsertMultiTabletsStatement.java | 8 + .../plan/statement/crud/InsertRowStatement.java | 24 + .../plan/statement/crud/InsertRowsStatement.java | 5 + .../plan/statement/crud/InsertTabletStatement.java | 17 + .../plan/statement/crud/LoadTsFileStatement.java | 16 +- .../metadata/AlterEncodingCompressorStatement.java | 126 +++++ .../statement/metadata/CountDatabaseStatement.java | 2 +- .../metadata/DeleteDatabaseStatement.java | 2 +- .../statement/metadata/ShowDatabaseStatement.java | 2 +- .../dag/input/QueryDataSetInputLayer.java | 10 +- .../schemaengine/schemaregion/ISchemaRegion.java | 8 +- .../schemaregion/SchemaRegionPlanType.java | 2 + .../schemaregion/SchemaRegionPlanVisitor.java | 6 + .../update/DeviceAttributeCacheUpdater.java | 8 +- .../schemaregion/impl/SchemaRegionMemoryImpl.java | 43 +- .../schemaregion/impl/SchemaRegionPBTreeImpl.java | 14 +- .../visitor/SchemaRegionPlanDeserializer.java | 7 + .../visitor/SchemaRegionPlanSerializer.java | 8 + .../mtree/impl/mem/MTreeBelowSGMemoryImpl.java | 111 ++-- .../schemaengine/schemaregion/utils/MetaUtils.java | 6 +- .../write/req/SchemaRegionWritePlanFactory.java | 3 + .../db/schemaengine/table/DataNodeTableCache.java | 17 + .../java/org/apache/iotdb/db/service/DataNode.java | 4 + .../db/storageengine/dataregion/DataRegion.java | 121 +++- .../execute/task/AbstractCompactionTask.java | 3 +- .../execute/task/InnerSpaceCompactionTask.java | 14 +- .../dataregion/read/QueryDataSource.java | 5 + .../load/active/ActiveLoadDirScanner.java | 26 +- .../load/active/ActiveLoadPathHelper.java | 282 ++++++++++ .../load/active/ActiveLoadPendingQueue.java | 17 +- .../load/active/ActiveLoadTsFileLoader.java | 36 +- .../storageengine/load/active/ActiveLoadUtil.java | 39 +- .../load/config/LoadTsFileConfigurator.java | 18 + .../db/pipe/pattern/TreePatternCoverageTest.java | 133 +++++ .../PipeStatementTreePatternParseVisitorTest.java | 202 ++++--- .../PipePlanTreePatternParseVisitorTest.java | 7 +- .../execution/operator/TransformOperatorTest.java | 142 +++++ .../plan/relational/analyzer/IntersectTest.java | 121 ++++ .../relational/analyzer/UnionOptimizeTest.java | 158 ++++++ .../compaction/utils/CompactionTestFileWriter.java | 6 +- .../conf/iotdb-system.properties.template | 4 +- .../apache/iotdb/commons/client/ThriftClient.java | 3 +- .../apache/iotdb/commons/conf/CommonConfig.java | 127 +++-- .../iotdb/commons/conf/ConfigurationFileUtils.java | 75 ++- .../apache/iotdb/commons/conf/IoTDBConstant.java | 1 - .../iotdb/commons/exception/MetadataException.java | 2 +- .../pipe/PipeRuntimeSinkCriticalException.java | 2 +- ...RuntimeSinkRetryTimesConfigurableException.java | 6 + .../commons/file/SystemPropertiesHandler.java | 2 + .../apache/iotdb/commons/path/PathPatternNode.java | 7 + .../apache/iotdb/commons/path/PathPatternTree.java | 13 +- .../task/progress/interval/PipeCommitInterval.java | 4 +- .../iotdb/commons/pipe/config/PipeConfig.java | 51 +- .../iotdb/commons/pipe/config/PipeDescriptor.java | 31 +- .../pipe/config/constant/PipeSourceConstant.java | 5 + .../datastructure/pattern/IoTDBTreePattern.java | 68 ++- .../pattern/IoTDBTreePatternOperations.java | 52 ++ .../datastructure/pattern/PrefixTreePattern.java | 70 ++- .../datastructure/pattern/SingleTreePattern.java | 59 -- .../pipe/datastructure/pattern/TreePattern.java | 369 ++++++++++-- .../pattern/UnionIoTDBTreePattern.java | 115 ++-- .../datastructure/pattern/UnionTreePattern.java | 17 +- .../pattern/WithExclusionIoTDBTreePattern.java | 213 +++++++ .../pattern/WithExclusionTreePattern.java | 119 ++++ .../commons/pipe/receiver/IoTDBFileReceiver.java | 6 + .../pipe/receiver/PipeReceiverStatusHandler.java | 152 ++--- .../pipe/sink/client/IoTDBClientManager.java | 5 +- .../pipe/sink/client/IoTDBSyncClientManager.java | 9 +- .../common/PipeTransferHandshakeConstant.java | 1 + .../commons/pipe/sink/protocol/IoTDBSink.java | 3 +- .../pipe/sink/protocol/IoTDBSslSyncSink.java | 6 +- .../pipe/source/IoTDBNonDataRegionSource.java | 14 +- .../schema/table/NonCommittableTsTable.java} | 31 +- .../apache/iotdb/commons/schema/table/TsTable.java | 24 +- .../service/AbstractThriftServiceThread.java | 15 +- .../iotdb/commons/service/metric/enums/Metric.java | 3 + .../apache/iotdb/commons/utils/SerializeUtils.java | 18 + .../pipe/datastructure/PipeCommitQueueTest.java | 2 + .../db/relational/grammar/sql/RelationalSql.g4 | 5 +- .../src/main/thrift/confignode.thrift | 12 + .../src/main/thrift/datanode.thrift | 14 + library-udf/pom.xml | 2 - pom.xml | 15 +- scripts/conf/ainode-env.sh | 138 ----- scripts/conf/windows/ainode-env.bat | 129 ----- scripts/sbin/start-ainode.sh | 56 +- scripts/sbin/windows/start-ainode.bat | 62 +-- 285 files changed, 9292 insertions(+), 2333 deletions(-) diff --cc iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNodeType.java index 6b5382b9836,1100793ca88..bdb4c4fcd6c --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNodeType.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNodeType.java @@@ -263,8 -263,7 +265,9 @@@ public enum PlanNodeType CONTINUOUS_SAME_SEARCH_INDEX_SEPARATOR((short) 97), LAST_QUERY_SCAN((short) 98), - SHOW_DISK_USAGE((short) 99), - TREE_COLLECT((short) 100), + ALTER_ENCODING_COMPRESSOR((short) 99), ++ SHOW_DISK_USAGE((short) 100), ++ TREE_COLLECT((short) 101), CREATE_OR_UPDATE_TABLE_DEVICE((short) 902), TABLE_DEVICE_QUERY_SCAN((short) 903), @@@ -592,9 -592,7 +596,11 @@@ case 98: return LastQueryScanNode.deserialize(buffer); case 99: - return ShowDiskUsageNode.deserialize(buffer); + return AlterEncodingCompressorNode.deserialize(buffer); + case 100: ++ return ShowDiskUsageNode.deserialize(buffer); ++ case 101: + return CollectNode.deserialize(buffer); case 902: return CreateOrUpdateTableDeviceNode.deserialize(buffer); case 903: diff --cc iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/PushDownOffsetIntoTableScan.java index 03bdc9d94ba,77143f90374..67b50ab31df --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/PushDownOffsetIntoTableScan.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/PushDownOffsetIntoTableScan.java @@@ -20,7 -20,8 +20,9 @@@ package org.apache.iotdb.db.queryengine.plan.relational.planner.iterative.rule; import org.apache.iotdb.db.queryengine.plan.relational.planner.iterative.Rule; + 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.InformationSchemaTableScanNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.OffsetNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TableScanNode; import org.apache.iotdb.db.queryengine.plan.relational.utils.matching.Capture; @@@ -53,16 -54,18 +55,19 @@@ public class PushDownOffsetIntoTableSca @Override public Result apply(OffsetNode parent, Captures captures, Context context) { TableScanNode tableScanNode = captures.get(CHILD); - if (tableScanNode instanceof DeviceTableScanNode - && ((DeviceTableScanNode) tableScanNode).isPushLimitToEachDevice()) { - return Result.empty(); - if ((tableScanNode instanceof DeviceTableScanNode - && !(tableScanNode instanceof AggregationTableScanNode)) - && !((DeviceTableScanNode) tableScanNode).isPushLimitToEachDevice()) { ++ if (tableScanNode instanceof InformationSchemaTableScanNode ++ || ((tableScanNode instanceof DeviceTableScanNode ++ && !(tableScanNode instanceof AggregationTableScanNode)) ++ && !((DeviceTableScanNode) tableScanNode).isPushLimitToEachDevice())) { + tableScanNode.setPushDownOffset(parent.getCount()); + // consider case that there is no limit + tableScanNode.setPushDownLimit( + tableScanNode.getPushDownLimit() == 0 + ? 0 + : tableScanNode.getPushDownLimit() - parent.getCount()); + return Result.ofPlanNode(tableScanNode); } - tableScanNode.setPushDownOffset(parent.getCount()); - // consider case that there is no limit - tableScanNode.setPushDownLimit( - tableScanNode.getPushDownLimit() == 0 - ? 0 - : tableScanNode.getPushDownLimit() - parent.getCount()); - return Result.ofPlanNode(tableScanNode); + + return Result.empty(); } } diff --cc iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/PushLimitOffsetIntoTableScan.java index 70daf444bf2,2bd9b778aec..927b05775b2 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/PushLimitOffsetIntoTableScan.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/PushLimitOffsetIntoTableScan.java @@@ -52,9 -50,9 +52,9 @@@ import java.util.Set import static org.apache.iotdb.db.queryengine.plan.relational.planner.optimizations.PushPredicateIntoTableScan.containsDiffFunction; /** - * <b>Optimization phase:</b> Distributed plan planning. + * <b>Optimization phase:</b> Logical plan planning. * - * <p>The LIMIT OFFSET condition can be pushed down to the DeviceTableScanNode, when the following + * <p>The LIMIT OFFSET condition can be pushed down to the TableScanNode, when the following * conditions are met: * <li>Time series query (not aggregation query). * <li>The query expressions are all scalar expression.
