This is an automated email from the ASF dual-hosted git repository. shuwenwei pushed a commit to branch table_disk_usage_statistics_with_cache in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 325f51328eb391da653ab6371e7435f27cfe259b Merge: 56e9bf247cb c257be65a19 Author: shuwenwei <[email protected]> AuthorDate: Tue Feb 3 17:37:46 2026 +0800 Merge branch 'iotdb_master' into table_disk_usage_statistics_with_cache .github/workflows/multi-language-client.yml | 15 +- LICENSE | 12 +- LICENSE-binary | 12 +- README.md | 4 +- README_ZH.md | 4 +- dependencies.json | 1 - distribution/pom.xml | 14 + distribution/src/assembly/all.xml | 8 + distribution/src/assembly/datanode.xml | 10 + .../src/assembly/external-service-impl.xml | 55 + docker/src/main/Dockerfile-1c1d | 4 +- example/client-cpp-example/src/CMakeLists.txt | 115 +- example/mqtt-customize/pom.xml | 6 +- .../server/CustomizedJsonPayloadFormatter.java | 6 +- ...Formatter => org.apache.iotdb.PayloadFormatter} | 0 external-service-impl/mqtt/pom.xml | 177 + .../apache/iotdb}/mqtt/BrokerAuthenticator.java | 2 +- .../apache/iotdb}/mqtt/JSONPayloadFormatter.java | 2 +- .../apache/iotdb}/mqtt/LinePayloadFormatter.java | 2 +- .../org/apache/iotdb}/mqtt/MPPPublishHandler.java | 4 +- .../java/org/apache/iotdb/mqtt}/MQTTService.java | 28 +- .../main/java/org/apache/iotdb}/mqtt/Message.java | 2 +- .../apache/iotdb}/mqtt/PayloadFormatManager.java | 5 +- .../org/apache/iotdb}/mqtt/PayloadFormatter.java | 2 +- .../java/org/apache/iotdb}/mqtt/TableMessage.java | 2 +- .../java/org/apache/iotdb}/mqtt/TreeMessage.java | 2 +- .../org.apache.iotdb.mqtt.PayloadFormatter | 4 +- .../iotdb}/mqtt/BrokerAuthenticatorTest.java | 18 +- .../iotdb}/mqtt/JSONPayloadFormatterTest.java | 3 +- .../iotdb}/mqtt/LinePayloadFormatterTest.java | 3 +- .../iotdb}/mqtt/PayloadFormatManagerTest.java | 8 +- .../pom.xml | 28 +- .../rest-openapi}/pom.xml | 34 +- .../src/main/openapi3/iotdb_rest_common.yaml | 0 .../src/main/openapi3/iotdb_rest_table_v1.yaml | 0 .../src/main/openapi3/iotdb_rest_v1.yaml | 0 .../src/main/openapi3/iotdb_rest_v2.yaml | 0 external-service-impl/rest/pom.xml | 226 + .../java/org/apache/iotdb/rest}/RestService.java | 30 +- .../rest/protocol}/filter/ApiOriginFilter.java | 2 +- .../rest/protocol}/filter/AuthorizationFilter.java | 4 +- .../protocol}/filter/BasicSecurityContext.java | 2 +- .../apache/iotdb/rest/protocol}/filter/User.java | 2 +- .../iotdb/rest/protocol}/filter/UserCache.java | 2 +- .../protocol}/handler/AuthorizationHandler.java | 4 +- .../rest/protocol}/impl/PingApiServiceImpl.java | 6 +- .../table/v1/handler/ExceptionHandler.java | 4 +- .../table/v1/handler/ExecuteStatementHandler.java | 2 +- .../table/v1/handler/QueryDataSetHandler.java | 6 +- .../table/v1/handler/RequestValidationHandler.java | 6 +- .../v1/handler/StatementConstructionHandler.java | 4 +- .../table/v1/impl/RestApiServiceImpl.java | 26 +- .../rest/protocol}/utils/InsertRowDataUtils.java | 2 +- .../protocol}/utils/InsertTabletSortDataUtils.java | 2 +- .../protocol/v1}/handler/ExceptionHandler.java | 4 +- .../v1/handler/ExecuteStatementHandler.java | 2 +- .../protocol}/v1/handler/QueryDataSetHandler.java | 26 +- .../v1/handler/RequestValidationHandler.java | 8 +- .../v1/handler/StatementConstructionHandler.java | 4 +- .../protocol}/v1/impl/GrafanaApiServiceImpl.java | 18 +- .../rest/protocol}/v1/impl/RestApiServiceImpl.java | 32 +- .../protocol/v2}/handler/ExceptionHandler.java | 4 +- .../v2/handler/ExecuteStatementHandler.java | 2 +- .../rest/protocol}/v2/handler/FastLastHandler.java | 10 +- .../protocol}/v2/handler/QueryDataSetHandler.java | 22 +- .../v2/handler/RequestValidationHandler.java | 12 +- .../v2/handler/StatementConstructionHandler.java | 8 +- .../protocol}/v2/impl/GrafanaApiServiceImpl.java | 18 +- .../rest/protocol}/v2/impl/RestApiServiceImpl.java | 36 +- integration-test/pom.xml | 19 + integration-test/src/assembly/mpp-share.xml | 10 + .../it/env/cluster/config/MppCommonConfig.java | 5 - .../env/cluster/config/MppSharedCommonConfig.java | 6 - .../it/env/cluster/node/AbstractNodeWrapper.java | 2 +- .../it/env/remote/config/RemoteCommonConfig.java | 5 - .../iotdb/it/utils/TsFileTableGenerator.java | 30 +- .../BuiltinTimeSeriesGeneratingFunctionEnum.java | 1 - .../org/apache/iotdb/itbase/env/CommonConfig.java | 2 - .../iotdb/ainode/it/AINodeCallInferenceIT.java | 14 + .../apache/iotdb/ainode/it/AINodeForecastIT.java | 21 +- .../ainode/it/AINodeInstanceManagementIT.java | 8 + .../apache/iotdb/ainode/utils/AINodeTestUtils.java | 4 +- .../partition/IoTDBPartitionTableAutoCleanIT.java | 57 +- .../org/apache/iotdb/db/it/IoTDBDeletionIT.java | 25 + .../org/apache/iotdb/db/it/IoTDBSimpleQueryIT.java | 259 + .../db/it/aligned/IoTDBAlignedLastQueryIT.java | 10 +- .../iotdb/db/it/auth/IoTDBSeriesPermissionIT.java | 7 + .../iotdb/db/it/last/IoTDBLastQueryAlias2IT.java | 60 + .../iotdb/db/it/last/IoTDBLastQueryAliasIT.java | 164 + .../db/it/last/IoTDBLastQueryLastCacheIT.java | 42 + .../iotdb/db/it/mqtt/IoTDBMQTTServiceJsonIT.java | 363 + .../db/it/query/IoTDBAggregationFirstByIT.java | 271 + .../it/query/IoTDBAggregationFirstByInGroupIT.java | 177 + .../iotdb/db/it/query/IoTDBAggregationFirstIT.java | 349 + .../it/query/IoTDBAggregationFirstInGroupIT.java | 172 + .../db/it/query/IoTDBAggregationLastByIT.java | 272 + .../it/query/IoTDBAggregationLastByInGroupIT.java | 170 + .../iotdb/db/it/query/IoTDBAggregationLastIT.java | 333 + .../db/it/query/IoTDBAggregationLastInGroupIT.java | 166 + .../db/it/schema/IoTDBAlterTimeSeriesTypeIT.java | 1469 +- .../db/it/udf/IoTDBUDTFBuiltinFunctionIT.java | 235 - .../auto/basic/IoTDBTreePatternFormatIT.java | 245 +- .../treemodel/manual/IoTDBPipeInclusionIT.java | 10 +- .../treemodel/manual/IoTDBPipePermissionIT.java | 56 + .../iotdb/pipe/it/single/IoTDBPipeOPCUAIT.java | 40 +- .../it/db/it/IoTDBAuthenticationTableIT.java | 36 + .../relational/it/db/it/IoTDBInsertTableIT.java | 1 + .../relational/it/db/it/IoTDBLoadTsFileIT.java | 211 +- .../it/db/it/IoTDBWindowFunction3IT.java | 179 + .../relational/it/mqtt/IoTDBMQTTServiceIT.java | 1 + .../it/query/recent/IoTDBTableAggregationIT.java | 9 + .../recent/scalar/IoTDBCastLiteralFunctionIT.java | 146 + .../it/rest/it/IoTDBRestServiceInsertValuesIT.java | 2 +- .../it/schema/IoTDBAlterColumnTypeIT.java | 805 +- .../relational/it/schema/IoTDBDatabaseIT.java | 15 +- .../iotdb/relational/it/schema/IoTDBTableIT.java | 24 +- .../it/schema/IoTDBTableWithDefinedTimeIT.java | 230 + .../it/cluster/IoTDBSubscriptionRestartIT.java | 7 +- .../it/dual/AbstractSubscriptionDualIT.java | 3 - .../dual/tablemodel/IoTDBSubscriptionTopicIT.java | 7 + .../IoTDBSubscriptionConsumerGroupIT.java | 57 + .../IoTDBSubscriptionTimePrecisionIT.java | 2 + .../dual/treemodel/IoTDBSubscriptionTopicIT.java | 14 + .../it/local/AbstractSubscriptionLocalIT.java | 1 - .../it/local/IoTDBSubscriptionBasicIT.java | 8 + .../it/local/IoTDBSubscriptionDataTypeIT.java | 21 + .../it/local/IoTDBSubscriptionIdempotentIT.java | 4 + .../it/local/IoTDBSubscriptionTopicIT.java | 5 + .../tablemodel/IoTDBSubscriptionIsolationIT.java | 3 + .../tablemodel/IoTDBSubscriptionPermissionIT.java | 5 + .../it/triple/AbstractSubscriptionTripleIT.java | 5 - .../treemodel/IoTDBSubscriptionSharingIT.java | 2 + .../IoTDBDefaultPullConsumerDataSetIT.java | 2 + .../IoTDBDefaultTsfilePushConsumerIT.java | 2 + .../IoTDBRootDatasetPushConsumerIT.java | 2 + .../IoTDBRootPullConsumeTsfileIT.java | 2 + ...merPullConsumerWith1TopicShareProcessMixIT.java | 2 + .../param/IoTDBTestParamPullConsumerIT.java | 26 + .../param/IoTDBTestParamPushConsumerIT.java | 19 + .../param/IoTDBTestParamSubscriptionSessionIT.java | 6 + .../regression/param/IoTDBTestParamTopicIT.java | 20 + ...DBTestAutoCommitFalseDataSetPullConsumerIT.java | 2 + ...TDBTestAutoCommitTrueDataSetPullConsumerIT.java | 2 + .../format/IoTDBDBDataSetPullConsumerIT.java | 2 + .../format/IoTDBDBTsfilePullConsumerIT.java | 2 + .../IoTDBAllTsDatasetPullConsumerIT.java | 2 + .../IoTDBAllTsTsfilePullConsumerIT.java | 2 + .../IoTDBAllTsfilePullConsumerSnapshotIT.java | 2 + .../IoTDBPathDeviceDataSetPullConsumerIT.java | 2 + .../IoTDBPathDeviceTsfilePullConsumerIT.java | 2 + .../IoTDBTimeTsDatasetPullConsumerIT.java | 2 + .../IoTDBTimeTsTsfilePullConsumerIT.java | 2 + .../IoTDBSnapshotDevicePullConsumerDataSetIT.java | 2 + .../IoTDBSnapshotDevicePullConsumerTsfileIT.java | 2 + ...DBConsumer2With1TopicShareProcessDataSetIT.java | 2 + ...TDBConsumer2With1TopicShareProcessTsfileIT.java | 2 + .../multi/IoTDBMultiGroupVsMultiConsumerIT.java | 2 + .../IoTDBOneConsumerMultiTopicsDatasetIT.java | 2 + .../multi/IoTDBOneConsumerMultiTopicsMixIT.java | 2 + .../multi/IoTDBOneConsumerMultiTopicsTsfileIT.java | 2 + .../pattern/IoTDBDBPatternPullConsumeTsfileIT.java | 2 + .../IoTDBDBPatternPullConsumerDataSetIT.java | 2 + .../IoTDBDefaultPatternPullConsumerDataSetIT.java | 2 + .../IoTDBDevicePatternPullConsumeTsfileIT.java | 2 + .../IoTDBDevicePatternPullConsumerDataSetIT.java | 2 + ...DBMiddleMatch2PatternPullConsumerDataSetIT.java | 2 + ...IoTDBMiddleMatchPatternPullConsumeTsfileIT.java | 2 + ...TDBMiddleMatchPatternPullConsumerDataSetIT.java | 2 + .../IoTDBRootPatternPullConsumeTsfileIT.java | 2 + .../pattern/IoTDBTSPatternPullConsumeTsfileIT.java | 2 + .../IoTDBTSPatternPullConsumerDataSetIT.java | 2 + .../time/IoTDBAllPullConsumerDataSetIT.java | 2 + .../time/IoTDBHistoryPullConsumerDataSetIT.java | 2 + .../time/IoTDBRealTimePullConsumerDataSetIT.java | 2 + ...oTDBTimeRangeAccuratePullConsumerDataSetIT.java | 2 + .../time/IoTDBTimeRangePullConsumerDataSetIT.java | 2 + .../format/IoTDBTestPushConsumeDataSetIT.java | 2 + .../IoTDBTestPushConsumeNoTargetDirTsfileIT.java | 2 + .../format/IoTDBTestPushConsumeTsfileIT.java | 2 + .../IoTDBLooseAllTsDatasetPushConsumerIT.java | 2 + ...TDBLooseAllTsDatasetPushConsumerSnapshotIT.java | 2 + .../IoTDBLooseAllTsfilePushConsumerIT.java | 2 + .../IoTDBPathLooseDeviceTsfilePushConsumerIT.java | 2 + .../IoTDBPathLooseTsDatasetPushConsumerIT.java | 2 + .../IoTDBPathLooseTsfilePushConsumerIT.java | 2 + .../IoTDBPathTsLooseDatasetPushConsumerIT.java | 2 + .../IoTDBTimeLooseTsDatasetPushConsumerIT.java | 2 + .../IoTDBTimeLooseTsTsfilePushConsumerIT.java | 2 + .../IoTDBTimeLooseTsfilePushConsumerIT.java | 2 + .../IoTDBTimeTsLooseDatasetPushConsumerIT.java | 2 + ...oTDBSnapshotTSPatternDatasetPushConsumerIT.java | 2 + ...IoTDBSnapshotTSPatternTsfilePushConsumerIT.java | 2 + ...DBConsumer2With1TopicShareProcessDataSetIT.java | 2 + ...TDBConsumer2With1TopicShareProcessTsfileIT.java | 2 + .../multi/IoTDBMultiGroupVsMultiConsumerIT.java | 2 + .../IoTDBOneConsumerMultiTopicsDatasetIT.java | 2 + .../multi/IoTDBOneConsumerMultiTopicsMixIT.java | 2 + .../multi/IoTDBOneConsumerMultiTopicsTsfileIT.java | 2 + .../IoTDBDBPatternDatasetPushConsumerIT.java | 2 + .../IoTDBDBPatternTsfilePushConsumerIT.java | 2 + .../IoTDBDefaultPatternTsfilePushConsumerIT.java | 2 + .../IoTDBDevicePatternDatasetPushConsumerIT.java | 2 + .../IoTDBDevicePatternTsfilePushConsumerIT.java | 2 + .../IoTDBRootPatternDatasetPushConsumerIT.java | 2 + .../IoTDBTSPatternDatasetPushConsumerIT.java | 2 + .../IoTDBTSPatternTsfilePushConsumerIT.java | 2 + .../IoTDBHistoryRootDatasetPushConsumerIT.java | 2 + .../time/IoTDBHistoryRootTsFilePushConsumerIT.java | 2 + .../time/IoTDBRealTimeDBDatasetPushConsumerIT.java | 2 + .../time/IoTDBRealTimeDBTsfilePushConsumerIT.java | 2 + ...DBTimeRangeAccurateDBDataSetPushConsumerIT.java | 2 + .../IoTDBTimeRangeDBDataSetPushConsumerIT.java | 2 + .../time/IoTDBTimeRangeDBTsfilePushConsumerIT.java | 2 + .../topic/IoTDBDataSet1TopicConsumerSpecialIT.java | 2 + .../regression/topic/IoTDBTestTopicNameIT.java | 2 + .../regression/user/IoTDBOtherUserConsumerIT.java | 8 +- .../apache/iotdb/tools/it/ExportTsFileTestIT.java | 3 +- .../api/customizer/parameter/PipeParameters.java | 23 +- .../customizer/parameter/PipeParametersTest.java | 6 +- .../org/apache/iotdb/tool/data/ExportDataTree.java | 221 +- iotdb-client/client-cpp/pom.xml | 37 +- .../client-cpp/src/main/AbstractSessionBuilder.h | 39 +- iotdb-client/client-cpp/src/main/CMakeLists.txt | 43 +- iotdb-client/client-cpp/src/main/NodesSupplier.cpp | 73 +- iotdb-client/client-cpp/src/main/NodesSupplier.h | 34 +- iotdb-client/client-cpp/src/main/Session.cpp | 2 +- iotdb-client/client-cpp/src/main/Session.h | 4 + iotdb-client/client-cpp/src/main/SessionBuilder.h | 15 + .../client-cpp/src/main/SessionConnection.cpp | 26 +- .../client-cpp/src/main/SessionConnection.h | 11 +- .../client-cpp/src/main/TableSessionBuilder.h | 15 + .../client-cpp/src/main/ThriftConnection.cpp | 22 +- .../client-cpp/src/main/ThriftConnection.h | 10 +- iotdb-client/client-cpp/src/test/CMakeLists.txt | 74 +- iotdb-client/client-cpp/src/test/catch2/catch.hpp | 17974 +++++++++++++++++++ iotdb-client/client-cpp/src/test/main.cpp | 15 +- iotdb-client/client-py/iotdb/Session.py | 8 +- .../client-py/iotdb/tsfile/utils/tsblock_serde.py | 1 - .../client-py/iotdb/utils/SessionDataSet.py | 19 + .../client-py/iotdb/utils/iotdb_rpc_dataset.py | 68 + iotdb-client/client-py/session_example.py | 6 + .../client-py/table_model_session_example.py | 4 + .../client-py/tests/integration/test_dataframe.py | 50 + .../client-py/tests/integration/test_todf.py | 2 +- iotdb-core/ainode/iotdb/ainode/core/constant.py | 2 + .../iotdb/ainode/core/inference/pool_controller.py | 11 + .../pool_scheduler/basic_pool_scheduler.py | 9 + .../iotdb/ainode/core/manager/inference_manager.py | 8 +- .../ainode/core/model/chronos2/chronos_bolt.py | 2 +- .../ainode/iotdb/ainode/core/model/model_info.py | 13 + .../ainode/iotdb/ainode/core/model/model_loader.py | 7 +- .../iotdb/ainode/core/model/moirai2/__init__.py | 8 +- .../ainode/core/model/moirai2/common/__init__.py | 3 - .../ainode/core/model/moirai2/common/torch_util.py | 130 + .../core/model/moirai2/configuration_moirai2.py | 61 + .../ainode/core/model/moirai2/modeling_moirai2.py | 1352 ++ .../ainode/core/model/moirai2/module/__init__.py | 3 - .../ainode/core/model/moirai2/module/attention.py | 366 + .../iotdb/ainode/core/model/moirai2/module/ffn.py | 159 + .../iotdb/ainode/core/model/moirai2/module/norm.py | 62 + .../core/model/moirai2/module/packed_scaler.py | 125 + .../model/moirai2/module/position/__init__.py} | 31 +- .../core/model/moirai2/module/position/additive.py | 81 + .../model/moirai2/module/position/attn_bias.py | 113 + .../moirai2/module/position/attn_projection.py | 215 + .../core/model/moirai2/module/transformer.py | 246 + .../ainode/core/model/moirai2/module/ts_embed.py | 294 + .../ainode/core/model/moirai2/pipeline_moirai2.py | 169 + .../core/model/moirai2/transform/__init__.py | 3 - .../ainode/core/model/moirai2/transform/_base.py | 71 + .../ainode/core/model/moirai2/transform/_mixin.py | 126 + .../core/model/moirai2/transform/imputation.py | 133 + iotdb-core/ainode/iotdb/ainode/core/rpc/handler.py | 10 + iotdb-core/ainode/iotdb/ainode/core/rpc/service.py | 12 +- iotdb-core/ainode/pyproject.toml | 1 + iotdb-core/confignode/pom.xml | 6 - .../client/sync/CnToAnSyncRequestType.java} | 10 +- .../client/sync/SyncAINodeClientPool.java | 151 + .../consensus/request/ConfigPhysicalPlanType.java | 1 - .../confignode/manager/ClusterQuotaManager.java | 5 +- .../iotdb/confignode/manager/TTLManager.java | 14 + .../agent/plugin/PipeConfigNodePluginAgent.java | 4 +- .../pipe/agent/task/PipeConfigNodeSubtask.java | 27 +- .../pipe/sink/protocol/IoTDBConfigRegionSink.java | 4 +- .../pipe/source/ConfigRegionListeningFilter.java | 2 +- .../iotdb/confignode/persistence/TTLInfo.java | 17 + .../confignode/persistence/quota/QuotaInfo.java | 4 +- .../confignode/persistence/schema/ConfigMTree.java | 12 +- .../procedure/PartitionTableAutoCleaner.java | 18 +- .../procedure/impl/node/RemoveAINodeProcedure.java | 22 +- .../impl/region/AddRegionPeerProcedure.java | 2 +- .../schema/AlterTimeSeriesDataTypeProcedure.java | 55 +- .../persistence/schema/ConfigMTreeTest.java | 3 +- .../AlterTimeSeriesDataTypeProcedureTest.java | 66 + iotdb-core/datanode/pom.xml | 70 +- .../org/apache/iotdb/db/auth/AuthorityChecker.java | 2 + .../apache/iotdb/db/conf/DataNodeMemoryConfig.java | 17 +- .../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 2 +- .../dataregion/DataExecutionVisitor.java | 9 +- .../ainode/AINodeConnectionException.java} | 25 +- .../dataregion/PipeDataRegionPluginAgent.java | 18 +- .../schemaregion/PipeSchemaRegionPluginAgent.java | 4 +- .../db/pipe/agent/task/PipeDataNodeTaskAgent.java | 29 +- .../task/builder/PipeDataNodeTaskBuilder.java | 2 +- .../pipe/agent/task/stage/PipeTaskSinkStage.java | 12 +- .../subtask/processor/PipeProcessorSubtask.java | 8 +- .../agent/task/subtask/sink/PipeSinkSubtask.java | 40 +- .../subtask/sink/PipeSinkSubtaskLifeCycle.java | 6 +- .../task/subtask/sink/PipeSinkSubtaskManager.java | 2 +- .../common/deletion/PipeDeleteDataNodeEvent.java | 1 + .../tablet/PipeInsertNodeTabletInsertionEvent.java | 15 +- .../scan/TsFileInsertionEventScanParser.java | 157 +- .../PipeDataNodeRemainingEventAndTimeOperator.java | 10 +- .../protocol/thrift/IoTDBDataNodeReceiver.java | 2 +- .../sink/protocol/opcda/OpcDaServerHandle.java | 4 +- .../db/pipe/sink/protocol/opcua/OpcUaSink.java | 79 +- .../sink/protocol/opcua/client/ClientRunner.java | 51 +- .../protocol/opcua/client/IoTDBOpcUaClient.java | 38 +- .../sink/protocol/writeback/WriteBackSink.java | 2 +- .../source/dataregion/IoTDBDataRegionSource.java | 9 +- ...istoricalDataRegionTsFileAndDeletionSource.java | 24 +- .../db/protocol/session/MqttClientSession.java | 6 +- .../impl/DataNodeInternalRPCServiceImpl.java | 8 - .../queryengine/execution/QueryStateMachine.java | 2 +- .../execution/executor/RegionReadExecutor.java | 4 +- .../fragment/FragmentInstanceContext.java | 2 +- .../execution/operator/GroupedTopNBuilder.java} | 17 +- .../operator/GroupedTopNRowNumberAccumulator.java | 483 + .../operator/GroupedTopNRowNumberBuilder.java | 182 + .../queryengine/execution/operator/IdRegistry.java | 76 + .../operator/RowIdComparisonStrategy.java} | 11 +- .../execution/operator/RowIdHashStrategy.java} | 12 +- .../execution/operator/RowReference.java | 45 + .../operator/RowReferenceTsBlockManager.java | 386 + .../SimpleTsBlockWithPositionComparator.java | 52 + .../operator/TsBlockWithPositionComparator.java} | 11 +- .../TableInsertTabletStatementGenerator.java | 10 +- .../operator/process/TableIntoOperator.java | 7 +- .../execution/operator/process/ValuesOperator.java | 120 + .../operator/process/ai/InferenceOperator.java | 14 +- .../operator/process/function/partition/Slice.java | 6 +- .../AlignedUpdateViewPathLastCacheOperator.java | 25 +- .../operator/process/last/LastQueryOperator.java | 6 +- .../process/last/UpdateLastCacheOperator.java | 2 +- .../last/UpdateViewPathLastCacheOperator.java | 2 +- .../process/rowpattern/expression/Computation.java | 4 + .../operator/process/window/RowNumberOperator.java | 214 + .../process/window/TopKRankingOperator.java | 278 + .../execution/operator/source/FileLoaderUtils.java | 8 +- .../execution/operator/source/SeriesScanUtil.java | 8 +- .../relational/LastQueryAggTableScanOperator.java | 64 +- .../relational/aggregation/AccumulatorFactory.java | 162 +- .../relational/aggregation/FirstAccumulator.java | 445 +- .../relational/aggregation/FirstByAccumulator.java | 494 +- .../aggregation/FirstByDescAccumulator.java | 180 +- .../aggregation/FirstDescAccumulator.java | 168 +- .../relational/aggregation/LastAccumulator.java | 373 +- .../relational/aggregation/LastByAccumulator.java | 442 +- .../aggregation/LastByDescAccumulator.java | 234 +- .../aggregation/LastDescAccumulator.java | 198 +- .../relational/aggregation/RecordIterator.java | 6 +- .../source/relational/aggregation/Utils.java | 39 +- .../grouped/GroupedFirstAccumulator.java | 390 +- .../grouped/GroupedFirstByAccumulator.java | 473 +- .../grouped/GroupedLastAccumulator.java | 390 +- .../grouped/GroupedLastByAccumulator.java | 476 +- .../grouped/array/IntArrayFIFOQueue.java | 201 + .../grouped/array/LongBigArrayFIFOQueue.java | 197 + .../grouped/hash/NoChannelGroupByHash.java | 72 + .../relational/ColumnTransformerBuilder.java | 32 +- .../execution/schedule/AbstractDriverThread.java | 4 +- .../execution/schedule/DriverScheduler.java | 2 +- .../execution/schedule/task/DriverTask.java | 12 +- .../queryengine/plan/analyze/AnalyzeVisitor.java | 6 +- .../plan/analyze/load/LoadTsFileAnalyzer.java | 7 + .../analyze/load/LoadTsFileTableSchemaCache.java | 12 +- .../queryengine/plan/execution/QueryExecution.java | 2 +- .../execution/config/TableConfigTaskVisitor.java | 82 +- .../config/executor/ClusterConfigTaskExecutor.java | 56 +- .../db/queryengine/plan/parser/ASTVisitor.java | 27 +- .../plan/planner/LogicalPlanBuilder.java | 48 +- .../plan/planner/LogicalPlanVisitor.java | 18 +- .../plan/planner/OperatorTreeGenerator.java | 27 +- .../plan/planner/TableOperatorGenerator.java | 214 +- .../plan/planner/plan/node/PlanGraphPrinter.java | 49 +- .../plan/planner/plan/node/PlanNodeType.java | 16 +- .../plan/planner/plan/node/PlanVisitor.java | 16 + .../plan/node/load/LoadSingleTsFileNode.java | 18 +- .../planner/plan/node/load/LoadTsFileNode.java | 14 +- .../plan/node/process/last/LastQueryNode.java | 6 +- .../plan/node/source/LastQueryScanNode.java | 104 +- .../plan/node/write/RelationalInsertRowsNode.java | 43 - .../node/write/RelationalInsertTabletNode.java | 51 - .../relational/analyzer/ExpressionAnalyzer.java | 105 + .../relational/analyzer/StatementAnalyzer.java | 28 +- .../predicate/ConvertPredicateToFilterVisitor.java | 29 +- .../PredicatePushIntoMetadataChecker.java | 6 + .../function/tvf/ClassifyTableFunction.java | 10 +- .../function/tvf/ForecastTableFunction.java | 10 +- .../plan/relational/metadata/Metadata.java | 22 +- .../relational/metadata/TableMetadataImpl.java | 23 +- .../fetcher/TableHeaderSchemaValidator.java | 96 +- .../planner/CastToBlobLiteralVisitor.java | 6 + .../planner/CastToBooleanLiteralVisitor.java | 6 + .../planner/CastToDateLiteralVisitor.java | 6 + .../planner/CastToDoubleLiteralVisitor.java | 6 + .../planner/CastToFloatLiteralVisitor.java | 6 + .../planner/CastToInt32LiteralVisitor.java | 6 + .../planner/CastToInt64LiteralVisitor.java | 6 + .../planner/CastToStringLiteralVisitor.java | 6 + .../planner/CastToTimestampLiteralVisitor.java | 6 + .../plan/relational/planner/IrTypeAnalyzer.java | 7 + .../plan/relational/planner/LiteralEncoder.java | 7 +- .../relational/planner/LiteralInterpreter.java | 7 + .../plan/relational/planner/RelationPlanner.java | 6 +- .../plan/relational/planner/SubqueryPlanner.java | 2 +- .../distribute/TableDistributedPlanGenerator.java | 70 + ...ithUncorrelatedScalarSubqueryReconstructor.java | 3 +- .../iterative/rule/GatherAndMergeWindows.java | 333 + .../iterative/rule/PushDownFilterIntoWindow.java | 166 + .../iterative/rule/PushDownLimitIntoWindow.java | 100 + .../iterative/rule/RemoveRedundantWindow.java | 49 + .../iterative/rule/ReplaceWindowWithRowNumber.java | 72 + .../relational/planner/iterative/rule/Util.java | 45 +- .../plan/relational/planner/node/Patterns.java | 20 +- .../relational/planner/node/RowNumberNode.java | 215 + .../relational/planner/node/TopKRankingNode.java | 208 + .../plan/relational/planner/node/ValuesNode.java | 236 + .../plan/relational/planner/node/WindowNode.java | 4 + .../optimizations/LogicalOptimizeFactory.java | 16 +- .../planner/optimizations/SymbolMapper.java | 33 +- .../optimizations/UnaliasSymbolReferences.java | 24 + .../plan/relational/sql/ast/AstVisitor.java | 4 + .../plan/relational/sql/ast/Expression.java | 3 + .../plan/relational/sql/ast/FloatLiteral.java | 117 + .../plan/relational/sql/ast/LoadTsFile.java | 11 +- .../relational/sql/ast/TableExpressionType.java | 3 +- .../plan/relational/sql/parser/AstBuilder.java | 80 +- .../relational/sql/util/ExpressionFormatter.java | 15 +- .../crud/InsertMultiTabletsStatement.java | 6 +- .../plan/statement/crud/LoadTsFileStatement.java | 9 + .../udf/BuiltinTimeSeriesGeneratingFunction.java | 2 - .../db/queryengine/plan/udf/UDTFForecast.java | 8 +- .../apache/iotdb/db/schemaengine/SchemaEngine.java | 12 +- .../impl/SchemaReaderLimitOffsetWrapper.java | 2 +- .../schemaregion/utils/ResourceByPathUtils.java | 69 +- .../db/schemaengine/table/DataNodeTableCache.java | 8 +- .../java/org/apache/iotdb/db/service/DataNode.java | 20 +- .../externalservice/BuiltinExternalServices.java | 13 +- .../ExternalServiceManagementService.java | 56 +- .../db/storageengine/dataregion/DataRegion.java | 74 +- .../memtable/AlignedReadOnlyMemChunk.java | 12 +- .../dataregion/memtable/ReadOnlyMemChunk.java | 8 +- .../dataregion/modification/ModificationFile.java | 12 +- .../dataregion/snapshot/SnapshotLoader.java | 1 + .../db/storageengine/load/LoadTsFileManager.java | 6 +- .../task/stage/SubscriptionTaskSinkStage.java | 16 +- .../subtask/SubscriptionSinkSubtaskManager.java | 37 +- .../apache/iotdb/db/utils/ErrorHandlingUtils.java | 14 +- .../org/apache/iotdb/db/utils/HeapTraversal.java | 64 + .../org/apache/iotdb/db/utils/ObjectTypeUtils.java | 61 +- .../org/apache/iotdb/db/utils/SchemaUtils.java | 78 +- .../iotdb/db/utils/TimestampPrecisionUtils.java | 4 +- .../db/utils/datastructure/AlignedTVList.java | 6 +- .../db/utils/datastructure/BackAlignedTVList.java | 3 +- .../db/utils/datastructure/BackBinaryTVList.java | 3 +- .../db/utils/datastructure/BackBooleanTVList.java | 3 +- .../db/utils/datastructure/BackDoubleTVList.java | 3 +- .../db/utils/datastructure/BackFloatTVList.java | 3 +- .../db/utils/datastructure/BackIntTVList.java | 3 +- .../db/utils/datastructure/BackLongTVList.java | 3 +- .../db/utils/datastructure/QuickAlignedTVList.java | 3 +- .../db/utils/datastructure/QuickBinaryTVList.java | 3 +- .../db/utils/datastructure/QuickBooleanTVList.java | 3 +- .../db/utils/datastructure/QuickDoubleTVList.java | 3 +- .../db/utils/datastructure/QuickFloatTVList.java | 3 +- .../db/utils/datastructure/QuickIntTVList.java | 3 +- .../db/utils/datastructure/QuickLongTVList.java | 3 +- .../iotdb/db/utils/datastructure/TVList.java | 2 +- .../db/utils/datastructure/TimAlignedTVList.java | 3 +- .../db/utils/datastructure/TimBinaryTVList.java | 3 +- .../db/utils/datastructure/TimBooleanTVList.java | 3 +- .../db/utils/datastructure/TimDoubleTVList.java | 3 +- .../db/utils/datastructure/TimFloatTVList.java | 3 +- .../iotdb/db/utils/datastructure/TimIntTVList.java | 3 +- .../db/utils/datastructure/TimLongTVList.java | 3 +- .../db/auth/role/LocalFileRoleAccessorTest.java | 2 +- .../pipe/event/PipeTsFileInsertionEventTest.java | 3 + .../pipe/event/TsFileInsertionEventParserTest.java | 4 +- .../db/pipe/pattern/TreePatternPruningTest.java | 57 +- .../db/pipe/source/IoTDBDataRegionSourceTest.java | 2 - .../db/protocol/rest/GrafanaApiServiceTest.java | 450 - .../db/protocol/rest/IoTDBRestServiceTest.java | 918 - .../process/window/function/FunctionTestUtils.java | 8 +- .../distribution/AggregationTableScanTest.java | 177 + .../plan/planner/distribution/LastQueryTest.java | 3 + .../logical/DataQueryLogicalPlannerTest.java | 11 +- .../plan/planner/node/load/LoadTsFileNodeTest.java | 2 +- .../planner/node/source/SourceNodeSerdeTest.java | 2 + .../plan/relational/analyzer/AnalyzerTest.java | 6 +- .../plan/relational/analyzer/TSBSMetadata.java | 6 +- .../plan/relational/analyzer/TestMetadata.java | 6 +- .../planner/WindowFunctionOptimizationTest.java | 300 + .../planner/assertions/ExpressionVerifier.java | 14 + .../planner/assertions/PlanMatchPattern.java | 38 + .../planner/assertions/WindowFunctionMatcher.java | 82 + .../plan/statement/InsertStatementTest.java | 16 +- .../compaction/CompactionDataTypeAlterTest.java | 55 + .../settle/SettleCompactionTaskTest.java | 32 + .../dataregion/memtable/PrimitiveMemTableTest.java | 57 + .../dataregion/snapshot/IoTDBSnapshotTest.java | 78 + .../org/apache/iotdb/db/utils/AnnotationTest.java | 59 + .../org/apache/iotdb/db/utils/SchemaUtilsTest.java | 18 +- .../iotdb/metrics/metricsets/jvm/JvmGcMetrics.java | 12 +- iotdb-core/node-commons/pom.xml | 4 - .../resources/conf/iotdb-system.properties | 2 +- .../conf/iotdb-system.properties.template | 2 +- .../iotdb/commons/auth/entity/TablePrivilege.java | 3 + .../iotdb/commons/binaryallocator/arena/Arena.java | 7 +- .../iotdb/commons/client/ClientPoolFactory.java | 22 + .../commons/client/sync/SyncAINodeClient.java | 153 + .../apache/iotdb/commons/conf/CommonConfig.java | 11 +- .../iotdb/commons/conf/CommonDescriptor.java | 5 - .../commons/exception/ObjectFileNotExist.java | 6 +- ...imeSinkNonReportTimeConfigurableException.java} | 40 +- ...RuntimeSinkRetryTimesConfigurableException.java | 27 +- .../commons/pipe/agent/plugin/PipePluginAgent.java | 68 +- .../task/subtask/PipeAbstractSinkSubtask.java | 52 + .../pipe/config/constant/PipeSinkConstant.java | 5 + .../pipe/config/constant/PipeSourceConstant.java | 2 + .../pipe/config/constant/SystemConstant.java | 2 +- .../datastructure/pattern/IoTDBTreePattern.java | 5 + .../datastructure/pattern/PrefixTreePattern.java | 5 + .../pipe/datastructure/pattern/TreePattern.java | 192 +- .../pattern/UnionIoTDBTreePattern.java | 5 + .../datastructure/pattern/UnionTreePattern.java | 5 + .../pattern/WithExclusionIoTDBTreePattern.java | 5 + .../pattern/WithExclusionTreePattern.java | 5 + .../iotdb/commons/pipe/event/EnrichedEvent.java | 5 + .../pipe/receiver/PipeReceiverStatusHandler.java | 36 +- .../commons/schema/table/InformationSchema.java | 19 - .../schema/table/TsFileTableSchemaUtil.java | 30 +- .../apache/iotdb/commons/schema/table/TsTable.java | 6 - .../schema/table/column/TsTableColumnCategory.java | 4 + .../apache/iotdb/commons/schema/ttl/TTLCache.java | 29 + .../apache/iotdb/commons/service/ServiceType.java | 2 - .../subscription/config/SubscriptionConfig.java | 4 +- .../apache/iotdb/commons/udf/builtin/UDTFJexl.java | 368 - .../ErrorHandlingCommonUtils.java} | 16 +- .../binaryallocator/BinaryAllocatorTest.java | 10 +- .../schema/table/TsFileTableSchemaUtilTest.java | 16 +- iotdb-protocol/pom.xml | 1 - .../src/main/thrift/datanode.thrift | 8 - pom.xml | 17 +- 554 files changed, 39483 insertions(+), 6851 deletions(-) diff --cc iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanGraphPrinter.java index a402da55d75,180241b4192..180b4b9f1be --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanGraphPrinter.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanGraphPrinter.java @@@ -84,10 -83,11 +84,12 @@@ import org.apache.iotdb.db.queryengine. import org.apache.iotdb.db.queryengine.plan.relational.planner.node.MarkDistinctNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.PatternRecognitionNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.PreviousFillNode; + import org.apache.iotdb.db.queryengine.plan.relational.planner.node.RowNumberNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.SemiJoinNode; +import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TableDiskUsageInformationSchemaTableScanNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TableFunctionProcessorNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TableScanNode; + import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TopKRankingNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TreeDeviceViewScanNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.UnionNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.ValueFillNode; diff --cc iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNodeType.java index fa1d02f2d3a,55aaefe8be6..6418d783c4e --- 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 @@@ -131,10 -129,11 +131,12 @@@ import org.apache.iotdb.db.queryengine. import org.apache.iotdb.db.queryengine.plan.relational.planner.node.MarkDistinctNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.PatternRecognitionNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.PreviousFillNode; + import org.apache.iotdb.db.queryengine.plan.relational.planner.node.RowNumberNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.SemiJoinNode; +import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TableDiskUsageInformationSchemaTableScanNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TableFunctionNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TableFunctionProcessorNode; + import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TopKRankingNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TreeAlignedDeviceViewScanNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TreeNonAlignedDeviceViewScanNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.UnionNode; @@@ -322,7 -320,9 +325,10 @@@ public enum PlanNodeType TABLE_UNION_NODE((short) 1034), TABLE_INTERSECT_NODE((short) 1035), TABLE_EXCEPT_NODE((short) 1036), - TABLE_DISK_USAGE_INFORMATION_SCHEMA_TABLE_SCAN_NODE((short) 1037), + TABLE_TOPK_RANKING_NODE((short) 1037), + TABLE_ROW_NUMBER_NODE((short) 1038), + TABLE_VALUES_NODE((short) 1039), ++ TABLE_DISK_USAGE_INFORMATION_SCHEMA_TABLE_SCAN_NODE((short) 1040), RELATIONAL_INSERT_TABLET((short) 2000), RELATIONAL_INSERT_ROW((short) 2001), @@@ -726,7 -722,11 +732,13 @@@ case 1036: return ExceptNode.deserialize(buffer); case 1037: - return TableDiskUsageInformationSchemaTableScanNode.deserialize(buffer); + return TopKRankingNode.deserialize(buffer); + case 1038: + return RowNumberNode.deserialize(buffer); + case 1039: + return ValuesNode.deserialize(buffer); ++ case 1040: ++ return TableDiskUsageInformationSchemaTableScanNode.deserialize(buffer); case 2000: return RelationalInsertTabletNode.deserialize(buffer); case 2001: diff --cc iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java index 4b7de7c50c2,7072b5f519f..2ef838d5d65 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java @@@ -82,9 -80,9 +83,10 @@@ import org.apache.iotdb.db.queryengine. import org.apache.iotdb.db.queryengine.plan.relational.planner.node.SemiJoinNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.SortNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.StreamSortNode; +import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TableDiskUsageInformationSchemaTableScanNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TableFunctionProcessorNode; import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TopKNode; + import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TopKRankingNode; 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; diff --cc iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/InformationSchema.java index 34675b628ce,ac6c8ebab24..5a4f50e5912 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/InformationSchema.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/InformationSchema.java @@@ -353,26 -329,8 +338,25 @@@ public class InformationSchema dataNodesTable.addColumnSchema( new AttributeColumnSchema( ColumnHeaderConstant.SCHEMA_CONSENSUS_PORT_TABLE_MODEL, TSDataType.INT32)); - dataNodesTable.removeColumnSchema(TsTable.TIME_COLUMN_NAME); schemaTables.put(DATA_NODES, dataNodesTable); + final TsTable tableDiskUsageTable = new TsTable(TABLE_DISK_USAGE); + tableDiskUsageTable.addColumnSchema( + new FieldColumnSchema( + ColumnHeaderConstant.DATABASE.toLowerCase(Locale.ENGLISH), TSDataType.STRING)); + tableDiskUsageTable.addColumnSchema( + new FieldColumnSchema(ColumnHeaderConstant.TABLE_NAME_TABLE_MODEL, TSDataType.STRING)); + tableDiskUsageTable.addColumnSchema( + new FieldColumnSchema(ColumnHeaderConstant.DATA_NODE_ID_TABLE_MODEL, TSDataType.INT32)); + tableDiskUsageTable.addColumnSchema( + new FieldColumnSchema(ColumnHeaderConstant.REGION_ID_TABLE_MODEL, TSDataType.INT32)); + tableDiskUsageTable.addColumnSchema( + new FieldColumnSchema(ColumnHeaderConstant.TIME_PARTITION_TABLE_MODEL, TSDataType.INT64)); + tableDiskUsageTable.addColumnSchema( + new FieldColumnSchema(ColumnHeaderConstant.SIZE_IN_BYTES_TABLE_MODEL, TSDataType.INT64)); + tableDiskUsageTable.removeColumnSchema(TsTable.TIME_COLUMN_NAME); + schemaTables.put(TABLE_DISK_USAGE, tableDiskUsageTable); + final TsTable connectionsTable = new TsTable(CONNECTIONS); connectionsTable.addColumnSchema( new TagColumnSchema(ColumnHeaderConstant.DATANODE_ID, TSDataType.STRING));
