This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch force_ci/prepstm
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit ab853e8c9b97869bf15815e7f029e10908ecaa07
Merge: 43a754c4009 0bb9e96ece7
Author: JackieTien97 <[email protected]>
AuthorDate: Mon Dec 8 14:29:12 2025 +0800

    Resolve conflicts

 .github/workflows/cluster-it-1c1d1a.yml            |    2 +-
 LICENSE-binary                                     |    4 +-
 dependencies.json                                  |   16 +-
 integration-test/src/assembly/mpp-test.xml         |    2 +-
 .../iotdb/it/env/cluster/node/AINodeWrapper.java   |   25 +-
 .../ainode/it/AINodeConcurrentInferenceIT.java     |   62 +-
 .../org/apache/iotdb/db/it/IoTDBDeletionIT.java    |   21 +
 .../org/apache/iotdb/db/it/IoTDBLoadTsFileIT.java  |  145 ++
 .../iotdb/db/it/IoTDBLoadTsFileWithModIT.java      |   60 +-
 .../org/apache/iotdb/db/it/auth/IoTDBAuthIT.java   |   16 +
 .../iotdb/db/it/auth/IoTDBSystemPermissionIT.java  |    3 +-
 .../it/auth/IoTDBSystemPermissionRelationalIT.java |    3 +-
 .../it/schema/IoTDBCreateAlignedTimeseriesIT.java  |   22 +
 .../db/it/schema/IoTDBCreateTimeseriesIT.java      |    8 +
 .../iotdb/db/it/selectinto/IoTDBSelectIntoIT.java  |   13 +-
 .../iotdb/db/it/utils/TSDataTypeTestUtils.java     |  113 +
 .../pipe/it/dual/tablemodel/TableModelUtils.java   |    8 +-
 .../treemodel/auto/basic/IoTDBPipeSyntaxIT.java    |   61 +
 .../auto/basic/IoTDBTreePatternFormatIT.java       |  616 +++---
 .../treemodel/manual/IoTDBPipeInclusionIT.java     |   72 +
 .../pipe/it/single/IoTDBPipePermissionIT.java      |   27 +-
 .../relational/it/db/it/IoTDBDeletionTableIT.java  |    8 +-
 .../relational/it/db/it/IoTDBInsertTableIT.java    |    6 +
 .../scalar/IoTDBScalarFunctionTableIT.java         |   23 +-
 .../it/query/recent/IoTDBExceptTableIT.java        |  159 ++
 .../it/query/recent/IoTDBLengthFunctionIT.java     |  119 ++
 .../it/query/recent/IoTDBMaintainAuthIT.java       |    8 +-
 .../relational/it/schema/IoTDBDatabaseIT.java      |   12 +-
 .../iotdb/relational/it/schema/IoTDBDeviceIT.java  |   44 +-
 .../iotdb/relational/it/schema/IoTDBTableIT.java   |   16 +
 .../it/session/IoTDBSessionRelationalIT.java       |   12 +-
 .../iotdb/session/it/IoTDBConnectionsIT.java       |  364 ++++
 .../apache/iotdb/jdbc/IoTDBPreparedStatement.java  |   17 +-
 .../iotdb/jdbc/IoTDBPreparedStatementTest.java     |  154 +-
 .../apache/iotdb/rpc/TElasticFramedTransport.java  |    5 +
 .../java/org/apache/iotdb/rpc/TSStatusCode.java    |    2 +-
 iotdb-client/session/pom.xml                       |   14 +
 .../org/apache/iotdb/session/NodesSupplier.java    |   49 +-
 iotdb-core/ainode/.gitignore                       |    9 +-
 iotdb-core/ainode/ainode.spec                      |  199 ++
 iotdb-core/ainode/ainode.xml                       |   17 +-
 iotdb-core/ainode/build_binary.py                  |  602 ++++++
 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 +-
 .../ainode/core/model/sundial/modeling_sundial.py  |   13 +-
 .../ainode/core/model/timerxl/modeling_timer.py    |    6 +-
 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                      | 2226 --------------------
 iotdb-core/ainode/pom.xml                          |   92 +-
 iotdb-core/ainode/pyproject.toml                   |   29 +-
 .../ainode/resources/syncPythonVersion.groovy      |   33 -
 .../org/apache/iotdb/db/qp/sql/IdentifierParser.g4 |    2 +
 .../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4   |    7 +-
 .../antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4  |    8 +
 iotdb-core/confignode/pom.xml                      |    2 +-
 .../async/AsyncAINodeHeartbeatClientPool.java      |    7 +-
 .../request/read/model/ShowModelPlan.java          |    4 +-
 .../iotdb/confignode/manager/ConfigManager.java    |   26 +-
 .../apache/iotdb/confignode/manager/IManager.java  |   18 +-
 .../iotdb/confignode/manager/ModelManager.java     |   37 +-
 .../pipe/agent/task/PipeConfigNodeSubtask.java     |    6 +-
 .../receiver/protocol/IoTDBConfigNodeReceiver.java |   13 +-
 .../sink/protocol/IoTDBConfigRegionAirGapSink.java |    6 +-
 .../pipe/sink/protocol/IoTDBConfigRegionSink.java  |    6 +-
 .../pipe/source/IoTDBConfigRegionSource.java       |    6 +-
 ...eConfigPhysicalPlanTreePatternParseVisitor.java |   46 +-
 .../procedure/CompletedProcedureRecycler.java      |   21 +-
 .../iotdb/confignode/procedure/Procedure.java      |   27 +-
 .../confignode/procedure/ProcedureExecutor.java    |   88 +-
 .../procedure/TimeoutExecutorThread.java           |   12 +-
 .../procedure/impl/model/CreateModelProcedure.java |    4 +-
 .../procedure/impl/model/DropModelProcedure.java   |    7 +-
 .../procedure/impl/node/RemoveAINodeProcedure.java |    4 +-
 .../procedure/store/ConfigProcedureStore.java      |   26 +-
 .../procedure/store/IProcedureStore.java           |   10 +-
 .../thrift/ConfigNodeRPCServiceProcessor.java      |   69 +-
 ...figPhysicalPlanTreePatternParseVisitorTest.java |    7 +-
 iotdb-core/consensus/pom.xml                       |   14 +-
 iotdb-core/datanode/pom.xml                        |    4 +-
 .../assembly/resources/conf/logback-datanode.xml   |   15 -
 .../org/apache/iotdb/db/auth/AuthorityChecker.java |    9 +-
 .../apache/iotdb/db/conf/DataNodeMemoryConfig.java |   10 +-
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java |   12 +-
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  |    6 -
 .../db/consensus/DataRegionConsensusImpl.java      |    6 +
 .../dataregion/DataRegionStateMachine.java         |   15 +-
 .../schemaregion/SchemaExecutionVisitor.java       |   44 +-
 .../db/pipe/agent/task/PipeDataNodeTaskAgent.java  |    4 +-
 .../agent/task/connection/PipeEventCollector.java  |    4 +-
 .../subtask/processor/PipeProcessorSubtask.java    |    7 +
 .../agent/task/subtask/sink/PipeSinkSubtask.java   |   11 +-
 .../tablet/PipeInsertNodeTabletInsertionEvent.java |   73 +-
 .../common/tsfile/PipeTsFileInsertionEvent.java    |    2 +-
 .../parser/TsFileInsertionEventParserProvider.java |    6 +-
 .../protocol/airgap/IoTDBAirGapReceiverAgent.java  |    5 +-
 .../protocol/thrift/IoTDBDataNodeReceiver.java     |   29 +-
 .../visitor/PipeStatementExceptionVisitor.java     |    8 +-
 .../visitor/PipeStatementTSStatusVisitor.java      |   43 +-
 .../PipeStatementTreePatternParseVisitor.java      |   22 +-
 ...leStatementDataTypeConvertExecutionVisitor.java |    4 +-
 ...eeStatementDataTypeConvertExecutionVisitor.java |    4 +-
 .../resource/memory/InsertNodeMemoryEstimator.java |   55 +-
 .../pipe/resource/memory/PipeMemoryWeightUtil.java |   62 +-
 .../airgap/IoTDBSchemaRegionAirGapSink.java        |    6 +-
 .../handler/PipeConsensusDeleteEventHandler.java   |    2 +-
 .../thrift/async/IoTDBDataRegionAsyncSink.java     |   18 +-
 .../handler/PipeTransferTrackableHandler.java      |   16 +-
 .../async/handler/PipeTransferTsFileHandler.java   |   15 +-
 .../thrift/sync/IoTDBDataRegionSyncSink.java       |    3 +-
 .../thrift/sync/IoTDBSchemaRegionSink.java         |    6 +-
 .../sink/util/sorter/PipeTabletEventSorter.java    |    5 +
 .../source/dataregion/IoTDBDataRegionSource.java   |    6 +-
 .../realtime/assigner/DisruptorQueue.java          |    4 +-
 .../PipePlanTreePatternParseVisitor.java           |   41 +-
 .../db/protocol/client/AINodeClientFactory.java    |  133 ++
 .../iotdb/db/protocol/client/ConfigNodeClient.java |   51 +-
 .../db/protocol}/client/ainode/AINodeClient.java   |  168 +-
 .../client/ainode/AINodeClientManager.java         |   75 +
 .../client/ainode/AsyncAINodeServiceClient.java    |    2 +-
 .../iotdb/db/protocol/session/IClientSession.java  |   16 +
 .../iotdb/db/protocol/session/SessionManager.java  |   14 +
 .../db/queryengine/common/ConnectionInfo.java      |   64 +
 .../common/header/DatasetHeaderFactory.java        |    4 +
 .../execution/executor/RegionWriteExecutor.java    |    4 +-
 .../fragment/FragmentInstanceContext.java          |    2 +-
 .../fragment/FragmentInstanceExecution.java        |    2 +-
 .../operator/process/ai/InferenceOperator.java     |    4 +-
 .../process/window/TableWindowOperator.java        |    2 +
 .../InformationSchemaContentSupplierFactory.java   |   64 +-
 .../relational/ColumnTransformerBuilder.java       |    8 +-
 .../iotdb/db/queryengine/plan/Coordinator.java     |   19 +-
 .../analyze/cache/partition/PartitionCache.java    |    2 +-
 .../dualkeycache/impl/CacheEntryGroupImpl.java     |    6 +
 .../schema/dualkeycache/impl/DualKeyCacheImpl.java |   61 +-
 .../schema/dualkeycache/impl/ICacheEntryGroup.java |    3 +
 .../plan/analyze/load/LoadTsFileAnalyzer.java      |   14 +-
 .../load/TreeSchemaAutoCreatorAndVerifier.java     |    4 +
 .../analyze/schema/AutoCreateSchemaExecutor.java   |   51 +-
 .../execution/config/TableConfigTaskVisitor.java   |   24 +-
 .../execution/config/TreeConfigTaskVisitor.java    |    8 +
 .../config/executor/ClusterConfigTaskExecutor.java |  142 +-
 .../config/executor/IConfigTaskExecutor.java       |    2 +
 ...dModelsTask.java => ShowAvailableUrlsTask.java} |   40 +-
 .../config/metadata/ai/ShowAIDevicesTask.java      |    2 +-
 .../config/metadata/ai/ShowLoadedModelsTask.java   |    4 +-
 .../config/metadata/ai/ShowModelsTask.java         |    4 +-
 .../db/queryengine/plan/parser/ASTVisitor.java     |   18 +-
 .../plan/planner/plan/node/PlanGraphPrinter.java   |   10 +
 .../plan/planner/plan/node/PlanNodeType.java       |    4 +
 .../plan/planner/plan/node/PlanVisitor.java        |    5 +
 .../plan/node/load/LoadSingleTsFileNode.java       |    6 +-
 .../relational/analyzer/StatementAnalyzer.java     |   64 +-
 .../analyzer/StatementAnalyzerFactory.java         |   17 +-
 .../function/tvf/ForecastTableFunction.java        |    8 +-
 .../plan/relational/metadata/Metadata.java         |   10 +
 .../relational/metadata/TableMetadataImpl.java     |   24 +-
 .../fetcher/TableHeaderSchemaValidator.java        |  378 ++++
 .../fetcher/cache/TableDeviceCacheEntry.java       |    8 +-
 .../fetcher/cache/TableDeviceLastCache.java        |   56 +-
 .../fetcher/cache/TableDeviceSchemaCache.java      |    8 +-
 .../cache/TableDeviceSchemaCacheMetrics.java       |    9 +-
 .../fetcher/cache/TreeDeviceNormalSchema.java      |    6 +-
 .../plan/relational/planner/RelationPlanner.java   |   24 +-
 .../plan/relational/planner/TableModelPlanner.java |    8 +-
 .../iterative/rule/EvaluateEmptyIntersect.java     |   63 +
 ...istinctAsUnion.java => ImplementExceptAll.java} |   78 +-
 ...on.java => ImplementExceptDistinctAsUnion.java} |   52 +-
 .../rule/ImplementIntersectDistinctAsUnion.java    |    3 +-
 .../planner/iterative/rule/MergeExcept.java        |   47 +
 .../planner/iterative/rule/MergeIntersect.java     |   47 +
 .../iterative/rule/PruneDistinctAggregation.java   |   27 +-
 .../iterative/rule/PruneExceptSourceColumns.java   |   54 +
 .../rule/PruneIntersectSourceColumns.java          |   55 +
 .../iterative/rule/RemoveEmptyExceptBranches.java  |  139 ++
 .../planner/iterative/rule/SetOperationMerge.java  |  123 +-
 .../iterative/rule/SetOperationNodeTranslator.java |    4 +-
 .../plan/relational/planner/node/ExceptNode.java   |   99 +
 .../plan/relational/planner/node/Patterns.java     |   20 +-
 .../DataNodeLocationSupplierFactory.java           |    1 +
 .../optimizations/LogicalOptimizeFactory.java      |   43 +-
 .../optimizations/UnaliasSymbolReferences.java     |   31 +
 .../security/TreeAccessCheckVisitor.java           |   26 +-
 .../plan/relational/sql/ast/AstVisitor.java        |    4 +
 .../plan/relational/sql/ast/InsertRows.java        |   19 +-
 .../plan/relational/sql/ast/RenameColumn.java      |    5 +-
 .../plan/relational/sql/ast/RenameTable.java       |    5 +-
 .../relational/sql/ast/ShowAvailableUrls.java}     |   42 +-
 .../relational/sql/ast/WrappedInsertStatement.java |  414 +++-
 .../plan/relational/sql/parser/AstBuilder.java     |    7 +
 .../scheduler/load/LoadTsFileDispatcherImpl.java   |   12 +-
 .../plan/scheduler/load/LoadTsFileScheduler.java   |    6 +-
 .../plan/statement/StatementVisitor.java           |    6 +
 .../plan/statement/crud/InsertBaseStatement.java   |  147 +-
 .../crud/InsertMultiTabletsStatement.java          |    6 +
 .../plan/statement/crud/InsertRowStatement.java    |   42 +
 .../crud/InsertRowsOfOneDeviceStatement.java       |    6 +
 .../plan/statement/crud/InsertRowsStatement.java   |    6 +
 .../plan/statement/crud/InsertTabletStatement.java |   68 +-
 .../plan/statement/crud/LoadTsFileStatement.java   |   18 +-
 .../metadata/ShowAvailableUrlsStatement.java}      |   29 +-
 .../db/queryengine/plan/udf/UDTFForecast.java      |    9 +-
 .../unary/scalar/BlobLengthColumnTransformer.java  |   56 +
 .../rescon/MemSchemaEngineStatistics.java          |    3 +-
 .../schemaengine/schemaregion/ISchemaRegion.java   |    5 +-
 .../schemaregion/impl/SchemaRegionMemoryImpl.java  |   16 +-
 .../schemaregion/impl/SchemaRegionPBTreeImpl.java  |   16 +-
 .../mtree/impl/mem/MTreeBelowSGMemoryImpl.java     |   18 +-
 .../mtree/impl/pbtree/MTreeBelowSGCachedImpl.java  |   21 +-
 .../schemaengine/schemaregion/utils/MetaUtils.java |    6 +-
 .../req/impl/CreateAlignedTimeSeriesPlanImpl.java  |   10 +
 .../write/req/impl/CreateTimeSeriesPlanImpl.java   |   10 +
 .../db/schemaengine/table/DataNodeTableCache.java  |   17 +-
 .../iotdb/db/service/metrics/WritingMetrics.java   |    3 +-
 .../iotdb/db/storageengine/StorageEngine.java      |   13 +-
 .../db/storageengine/dataregion/DataRegion.java    |  289 ++-
 .../dataregion/IDataRegionForQuery.java            |    2 +-
 .../dataregion/VirtualDataRegion.java              |    2 +-
 .../execute/task/AbstractCompactionTask.java       |    3 +-
 .../execute/task/InnerSpaceCompactionTask.java     |   17 +-
 .../execute/task/SettleCompactionTask.java         |    5 +
 .../compaction/repair/RepairTimePartition.java     |    2 +-
 .../dataregion/memtable/TsFileProcessor.java       |   18 +-
 .../dataregion/snapshot/SnapshotTaker.java         |   14 +-
 .../dataregion/tsfile/TsFileResource.java          |   43 +-
 .../file/UnsealedTsFileRecoverPerformer.java       |    6 +-
 .../db/storageengine/load/LoadTsFileManager.java   |   40 +-
 .../load/active/ActiveLoadDirScanner.java          |   43 +-
 .../load/active/ActiveLoadPathHelper.java          |  282 +++
 .../load/active/ActiveLoadPendingQueue.java        |   17 +-
 .../load/active/ActiveLoadTsFileLoader.java        |   42 +-
 .../load/config/LoadTsFileConfigurator.java        |   18 +
 ...leStatementDataTypeConvertExecutionVisitor.java |   10 +-
 ...eeStatementDataTypeConvertExecutionVisitor.java |   10 +-
 .../db/storageengine/load/disk/MinIOSelector.java  |   10 +-
 .../ActiveLoadUtil.java => util/LoadUtil.java}     |   88 +-
 .../rescon/memory/PrimitiveArrayManager.java       |    1 +
 .../db/utils/datastructure/AlignedTVList.java      |   20 +-
 .../iotdb/db/utils/datastructure/TVList.java       |    2 +-
 .../apache/iotdb/db/auth/AuthorityCheckerTest.java |   51 +
 .../org/apache/iotdb/db/auth/TreeAccessTest.java   |   84 +
 .../cache/TreeDeviceSchemaCacheManagerTest.java    |   14 +
 .../db/metadata/path/MeasurementPathTest.java      |    4 +-
 .../db/pipe/pattern/TreePatternCoverageTest.java   |  133 ++
 .../PipeStatementTreePatternParseVisitorTest.java  |  202 +-
 .../PipePlanTreePatternParseVisitorTest.java       |    7 +-
 .../process/window/TableWindowOperatorTest.java    |   51 +
 .../plan/relational/analyzer/AnalyzerTest.java     |   40 +-
 .../plan/relational/analyzer/AuthTest.java         |   10 +-
 .../analyzer/EvaluateEmptyIntersectTest.java       |   48 +
 .../plan/relational/analyzer/ExceptTest.java       |  132 ++
 .../plan/relational/analyzer/MergeExceptTest.java  |  147 ++
 .../relational/analyzer/MergeIntersectTest.java    |  112 +
 .../analyzer/RemoveEmptyExceptBranchesTest.java    |  101 +
 .../analyzer/RowPatternRecognitionTest.java        |    4 +-
 .../plan/relational/analyzer/TSBSMetadata.java     |   13 +
 .../plan/relational/analyzer/TestMetadata.java     |   25 +-
 .../fetcher/cache/TableDeviceSchemaCacheTest.java  |    9 +
 .../plan/relational/planner/PlanTester.java        |    4 +-
 .../plan/statement/InsertStatementTest.java        |   97 +-
 .../scalar/BlobLengthColumnTransformerTest.java    |  148 ++
 .../DataNodeInternalRPCServiceImplTest.java        |   59 +-
 .../iotdb/db/storageengine/StorageEngineTest.java  |    4 +-
 .../storageengine/dataregion/DataRegionTest.java   |    4 +-
 .../inner/InnerSpaceCompactionExceptionTest.java   |   16 +
 .../repair/RepairUnsortedFileSchedulerTest.java    |   10 +-
 .../compaction/utils/CompactionTestFileWriter.java |    6 +-
 .../memtable/AlignedTVListIteratorTest.java        |   57 +
 .../dataregion/snapshot/IoTDBSnapshotTest.java     |    2 +-
 .../apache/iotdb/db/utils/TSDataTypeTestUtils.java |  111 +
 .../datastructure/PrimitiveArrayManagerTest.java   |   12 +-
 iotdb-core/node-commons/pom.xml                    |    8 +-
 .../apache/iotdb/commons/client/ClientManager.java |   25 +
 .../iotdb/commons/client/ClientPoolFactory.java    |   52 -
 .../async/AsyncPipeDataTransferServiceClient.java  |   21 +-
 .../apache/iotdb/commons/conf/CommonConfig.java    |  165 +-
 .../iotdb/commons/conf/CommonDescriptor.java       |    5 +
 .../apache/iotdb/commons/path/MeasurementPath.java |   26 -
 .../org/apache/iotdb/commons/path/PartialPath.java |   26 +
 .../task/subtask/PipeAbstractSinkSubtask.java      |   13 +
 .../iotdb/commons/pipe/config/PipeConfig.java      |   61 +-
 .../iotdb/commons/pipe/config/PipeDescriptor.java  |   42 +-
 .../pipe/config/constant/PipeSourceConstant.java   |    5 +
 .../datastructure/pattern/IoTDBTreePattern.java    |   68 +-
 .../pattern/IoTDBTreePatternOperations.java        |   52 +
 .../datastructure/pattern/PrefixTreePattern.java   |   70 +-
 .../pipe/datastructure/pattern/TreePattern.java    |  369 +++-
 .../pattern/UnionIoTDBTreePattern.java             |  115 +-
 .../datastructure/pattern/UnionTreePattern.java    |   17 +-
 .../pattern/WithExclusionIoTDBTreePattern.java     |  213 ++
 .../pattern/WithExclusionTreePattern.java          |  119 ++
 .../pipe/receiver/PipeReceiverStatusHandler.java   |  181 +-
 .../pipe/source/IoTDBNonDataRegionSource.java      |   14 +-
 .../schema/column/ColumnHeaderConstant.java        |   13 +
 .../commons/schema/table/InformationSchema.java    |   17 +
 .../schema/table/InsertNodeMeasurementInfo.java    |  244 +++
 .../schema/table/TsFileTableSchemaUtil.java        |  207 ++
 .../apache/iotdb/commons/schema/table/TsTable.java |  226 +-
 .../schema/table/column/FieldColumnSchema.java     |    1 +
 .../schema/table/column/TsTableColumnSchema.java   |    6 +
 .../org/apache/iotdb/commons/utils/FileUtils.java  |   92 +-
 .../apache/iotdb/commons/utils/JVMCommonUtils.java |    7 +-
 .../org/apache/iotdb/commons/utils/RetryUtils.java |   59 +-
 .../PipeReceiverStatusHandlerTest.java             |  302 +++
 .../commons/pipe/task/PipeSleepIntervalTest.java   |   83 +
 .../schema/table/TsFileTableSchemaUtilTest.java    |  748 +++++++
 .../apache/iotdb/commons/utils/FileUtilsTest.java  |   79 +
 .../db/relational/grammar/sql/RelationalSql.g4     |   11 +-
 .../src/main/thrift/confignode.thrift              |   83 +-
 pom.xml                                            |   34 +-
 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 +-
 320 files changed, 11974 insertions(+), 5415 deletions(-)

diff --cc 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/IClientSession.java
index ff7c7acf79d,351806de099..97585673e82
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/IClientSession.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/IClientSession.java
@@@ -180,37 -188,14 +188,45 @@@ public abstract class IClientSession 
      this.databaseName = databaseName;
    }
  
 +  /**
 +   * Add a prepared statement to this session.
 +   *
 +   * @param statementName the name of the prepared statement
 +   * @param info the prepared statement information
 +   */
 +  public abstract void addPreparedStatement(String statementName, 
PreparedStatementInfo info);
 +
 +  /**
 +   * Remove a prepared statement from this session.
 +   *
 +   * @param statementName the name of the prepared statement
 +   * @return the removed prepared statement info, or null if not found
 +   */
 +  public abstract PreparedStatementInfo removePreparedStatement(String 
statementName);
 +
 +  /**
 +   * Get a prepared statement from this session.
 +   *
 +   * @param statementName the name of the prepared statement
 +   * @return the prepared statement info, or null if not found
 +   */
 +  public abstract PreparedStatementInfo getPreparedStatement(String 
statementName);
 +
 +  /**
 +   * Get all prepared statement names in this session.
 +   *
 +   * @return set of prepared statement names
 +   */
 +  public abstract Set<String> getPreparedStatementNames();
 +
+   public long getLastActiveTime() {
+     return lastActiveTime;
+   }
+ 
+   public void setLastActiveTime(long lastActiveTime) {
+     this.lastActiveTime = lastActiveTime;
+   }
+ 
    public enum SqlDialect {
      TREE((byte) 0),
      TABLE((byte) 1);
diff --cc 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/SessionManager.java
index 525ebf8b009,a4a28efa5ec..e5e95d4f82c
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/SessionManager.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/SessionManager.java
@@@ -38,8 -38,8 +38,9 @@@ import org.apache.iotdb.db.auth.Authori
  import org.apache.iotdb.db.auth.LoginLockManager;
  import org.apache.iotdb.db.protocol.basic.BasicOpenSessionResp;
  import org.apache.iotdb.db.protocol.thrift.OperationType;
+ import org.apache.iotdb.db.queryengine.common.ConnectionInfo;
  import org.apache.iotdb.db.queryengine.common.SessionInfo;
 +import 
org.apache.iotdb.db.queryengine.plan.execution.config.session.PreparedStatementMemoryManager;
  import 
org.apache.iotdb.db.storageengine.dataregion.read.control.QueryResourceManager;
  import org.apache.iotdb.db.utils.DataNodeAuthUtils;
  import org.apache.iotdb.metrics.utils.MetricLevel;
diff --cc 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/Coordinator.java
index 8db3ae79dcb,f10600cbda9..7708f6c18cd
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/Coordinator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/Coordinator.java
@@@ -205,23 -190,11 +207,25 @@@ public class Coordinator 
    private final List<PlanOptimizer> logicalPlanOptimizers;
    private final List<PlanOptimizer> distributionPlanOptimizers;
    private final DataNodeLocationSupplierFactory.DataNodeLocationSupplier 
dataNodeLocationSupplier;
+   private final TypeManager typeManager;
  
 +  static {
 +    coordinatorMemoryBlock =
 +        IoTDBDescriptor.getInstance()
 +            .getMemoryConfig()
 +            .getCoordinatorMemoryManager()
 +            .exactAllocate("Coordinator", MemoryBlockType.DYNAMIC);
 +
 +    if (LOGGER.isDebugEnabled()) {
 +      LOGGER.debug(
 +          "Initialized shared MemoryBlock 'Coordinator' with all available 
memory: {} bytes",
 +          coordinatorMemoryBlock.getTotalMemorySizeInBytes());
 +    }
 +  }
 +
    private Coordinator() {
      this.queryExecutionMap = new ConcurrentHashMap<>();
+     this.typeManager = new InternalTypeManager();
      this.executor = getQueryExecutor();
      this.writeOperationExecutor = getWriteExecutor();
      this.scheduledExecutor = getScheduledExecutor();
@@@ -430,8 -401,7 +432,9 @@@
              distributionPlanOptimizers,
              AuthorityChecker.getAccessControl(),
              dataNodeLocationSupplier,
 +            Collections.emptyList(),
-             Collections.emptyMap());
++            Collections.emptyMap(),
+             typeManager);
      return new QueryExecution(tableModelPlanner, queryContext, executor);
    }
  
@@@ -513,49 -482,9 +517,49 @@@
            executor,
            statement.accept(
                new TableConfigTaskVisitor(
-                   clientSession, metadata, 
AuthorityChecker.getAccessControl()),
+                   clientSession, metadata, 
AuthorityChecker.getAccessControl(), typeManager),
                queryContext));
      }
 +    // Initialize variables for TableModelPlanner
 +    org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Statement 
statementToUse = statement;
 +    List<Expression> parameters = Collections.emptyList();
 +    Map<NodeRef<Parameter>, Expression> parameterLookup = 
Collections.emptyMap();
 +
 +    if (statement instanceof Execute) {
 +      Execute executeStatement = (Execute) statement;
 +      String statementName = executeStatement.getStatementName().getValue();
 +
 +      // Get prepared statement from session (contains cached AST)
 +      PreparedStatementInfo preparedInfo = 
clientSession.getPreparedStatement(statementName);
 +      if (preparedInfo == null) {
 +        throw new SemanticException(
 +            String.format("Prepared statement '%s' does not exist", 
statementName));
 +      }
 +
 +      // Use cached AST
 +      statementToUse = preparedInfo.getSql();
 +
 +      // Bind parameters: create parameterLookup map
 +      // Note: bindParameters() internally validates parameter count
 +      parameterLookup =
 +          ParameterExtractor.bindParameters(statementToUse, 
executeStatement.getParameters());
 +      parameters = new ArrayList<>(executeStatement.getParameters());
 +
 +    } else if (statement instanceof ExecuteImmediate) {
 +      ExecuteImmediate executeImmediateStatement = (ExecuteImmediate) 
statement;
 +
 +      // EXECUTE IMMEDIATE needs to parse SQL first
 +      String sql = executeImmediateStatement.getSqlString();
 +      List<Literal> literalParameters = 
executeImmediateStatement.getParameters();
 +
 +      statementToUse = sqlParser.createStatement(sql, 
clientSession.getZoneId(), clientSession);
 +
 +      if (!literalParameters.isEmpty()) {
 +        parameterLookup = ParameterExtractor.bindParameters(statementToUse, 
literalParameters);
 +        parameters = new ArrayList<>(literalParameters);
 +      }
 +    }
 +
      if (statement instanceof WrappedInsertStatement) {
        ((WrappedInsertStatement) statement).setContext(queryContext);
      }
@@@ -574,8 -501,7 +578,9 @@@
              distributionPlanOptimizers,
              AuthorityChecker.getAccessControl(),
              dataNodeLocationSupplier,
 +            parameters,
-             parameterLookup);
++            parameterLookup,
+             typeManager);
      return new QueryExecution(tableModelPlanner, queryContext, executor);
    }
  
diff --cc 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/TableModelPlanner.java
index ba7f6e42c24,fddff825f0d..78f9729ece3
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/TableModelPlanner.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/TableModelPlanner.java
@@@ -90,9 -88,7 +91,10 @@@ public class TableModelPlanner implemen
  
    private final DataNodeLocationSupplierFactory.DataNodeLocationSupplier 
dataNodeLocationSupplier;
  
 +  // Parameters for prepared statements (optional)
 +  private final List<Expression> parameters;
 +  private final Map<NodeRef<Parameter>, Expression> parameterLookup;
+   private final TypeManager typeManager;
  
    public TableModelPlanner(
        final Statement statement,
@@@ -108,8 -104,7 +110,9 @@@
        final List<PlanOptimizer> distributionPlanOptimizers,
        final AccessControl accessControl,
        final DataNodeLocationSupplierFactory.DataNodeLocationSupplier 
dataNodeLocationSupplier,
 +      final List<Expression> parameters,
-       final Map<NodeRef<Parameter>, Expression> parameterLookup) {
++      final Map<NodeRef<Parameter>, Expression> parameterLookup,
+       final TypeManager typeManager) {
      this.statement = statement;
      this.sqlParser = sqlParser;
      this.metadata = metadata;
@@@ -121,8 -116,7 +124,9 @@@
      this.distributionPlanOptimizers = distributionPlanOptimizers;
      this.accessControl = accessControl;
      this.dataNodeLocationSupplier = dataNodeLocationSupplier;
 +    this.parameters = parameters;
 +    this.parameterLookup = parameterLookup;
+     this.typeManager = typeManager;
    }
  
    @Override
@@@ -130,9 -124,9 +134,9 @@@
      return new Analyzer(
              context,
              context.getSession(),
-             new StatementAnalyzerFactory(metadata, sqlParser, accessControl),
+             new StatementAnalyzerFactory(metadata, sqlParser, accessControl, 
typeManager),
 -            Collections.emptyList(),
 -            Collections.emptyMap(),
 +            parameters,
 +            parameterLookup,
              statementRewrite,
              warningCollector)
          .analyze(statement);

Reply via email to