ccliushou opened a new issue, #16777: URL: https://github.com/apache/iotdb/issues/16777
### Search before asking - [x] I searched in the [issues](https://github.com/apache/iotdb/issues) and found nothing similar. ### Version 1.3.3 ### Describe the bug and provide the minimal reproduce step 基于example\udf\src\main\java\org\apache\iotdb\udf\UDAFExample.java,在validate 函数中修改为2个时间序列: <img width="933" height="536" alt="Image" src="https://github.com/user-attachments/assets/a440ae4a-9e56-4df8-afd7-79befdf6e5c2" /> 执行sql:SELECT UDAFExample(Latitude, Longitude) as level FROM root.XXXX.D52010000_0001 where time =1472870568779 客户端提示错误:Msg: org.apache.iotdb.jdbc.IoTDBSQLException: 301: Error occurred during executing UDAF#validate(UDFParameterValidator): , please check whether the implementation of UDF is correct according to the udf-api description.java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 datanode 提示错误: 2025-11-19 13:32:37,844 [pool-41-IoTDB-ClientRPC-Processor-12$20251119_053237_00066_1.1.0] WARN o.a.i.d.q.e.a.UDAFAccumulator:206 - Error occurred during executing UDAF, please check whether the implementation of UDF is correct according to the udf-api description. java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 at java.util.ArrayList.rangeCheck(ArrayList.java:657) at java.util.ArrayList.get(ArrayList.java:433) at org.apache.iotdb.udf.api.customizer.parameter.UDFParameters.getDataType(UDFParameters.java:84) at org.apache.iotdb.udf.api.customizer.parameter.UDFParameterValidator.validateInputSeriesDataType(UDFParameterValidator.java:99) at org.apache.iotdb.udf.UDAFExample.validate(UDAFExample.java:81) at org.apache.iotdb.db.queryengine.execution.aggregation.UDAFAccumulator.reflectAndValidateUDF(UDAFAccumulator.java:105) at org.apache.iotdb.db.queryengine.execution.aggregation.UDAFAccumulator.beforeStart(UDAFAccumulator.java:84) at org.apache.iotdb.db.queryengine.execution.aggregation.UDAFAccumulator.<init>(UDAFAccumulator.java:72) at org.apache.iotdb.db.queryengine.execution.aggregation.AccumulatorFactory.createAccumulator(AccumulatorFactory.java:49) at org.apache.iotdb.db.queryengine.plan.planner.OperatorTreeGenerator.createRawDataAggregationOperator(OperatorTreeGenerator.java:1995) at org.apache.iotdb.db.queryengine.plan.planner.OperatorTreeGenerator.visitRawDataAggregation(OperatorTreeGenerator.java:1977) at org.apache.iotdb.db.queryengine.plan.planner.OperatorTreeGenerator.visitRawDataAggregation(OperatorTreeGenerator.java:316) at org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.RawDataAggregationNode.accept(RawDataAggregationNode.java:212) at org.apache.iotdb.db.queryengine.plan.planner.OperatorTreeGenerator.dealWithConsumeChildrenOneByOneNode(OperatorTreeGenerator.java:3472) at org.apache.iotdb.db.queryengine.plan.planner.OperatorTreeGenerator.visitIdentitySink(OperatorTreeGenerator.java:2665) at org.apache.iotdb.db.queryengine.plan.planner.OperatorTreeGenerator.visitIdentitySink(OperatorTreeGenerator.java:316) at org.apache.iotdb.db.queryengine.plan.planner.plan.node.sink.IdentitySinkNode.accept(IdentitySinkNode.java:75) at org.apache.iotdb.db.queryengine.plan.planner.LocalExecutionPlanner.plan(LocalExecutionPlanner.java:92) at org.apache.iotdb.db.queryengine.execution.fragment.FragmentInstanceManager.lambda$execDataQueryFragmentInstance$3(FragmentInstanceManager.java:163) at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660) at org.apache.iotdb.db.queryengine.execution.fragment.FragmentInstanceManager.execDataQueryFragmentInstance(FragmentInstanceManager.java:139) at org.apache.iotdb.db.consensus.statemachine.dataregion.DataRegionStateMachine.read(DataRegionStateMachine.java:354) at org.apache.iotdb.consensus.iot.IoTConsensusServerImpl.read(IoTConsensusServerImpl.java:276) at org.apache.iotdb.consensus.iot.IoTConsensus.read(IoTConsensus.java:224) at org.apache.iotdb.db.queryengine.execution.executor.RegionReadExecutor.execute(RegionReadExecutor.java:84) at org.apache.iotdb.db.queryengine.plan.scheduler.FragmentInstanceDispatcherImpl.dispatchLocally(FragmentInstanceDispatcherImpl.java:455) at org.apache.iotdb.db.queryengine.plan.scheduler.FragmentInstanceDispatcherImpl.dispatchOneInstance(FragmentInstanceDispatcherImpl.java:298) at org.apache.iotdb.db.queryengine.plan.scheduler.FragmentInstanceDispatcherImpl.dispatchRead(FragmentInstanceDispatcherImpl.java:131) at org.apache.iotdb.db.queryengine.plan.scheduler.FragmentInstanceDispatcherImpl.dispatch(FragmentInstanceDispatcherImpl.java:118) at org.apache.iotdb.db.queryengine.plan.scheduler.ClusterScheduler.start(ClusterScheduler.java:117) at org.apache.iotdb.db.queryengine.plan.planner.TreeModelPlanner.doSchedule(TreeModelPlanner.java:144) at org.apache.iotdb.db.queryengine.plan.execution.QueryExecution.schedule(QueryExecution.java:267) at org.apache.iotdb.db.queryengine.plan.execution.QueryExecution.start(QueryExecution.java:180) at org.apache.iotdb.db.queryengine.plan.Coordinator.execution(Coordinator.java:134) at org.apache.iotdb.db.queryengine.plan.Coordinator.executeForTreeModel(Coordinator.java:169) at org.apache.iotdb.db.protocol.thrift.impl.ClientRPCServiceImpl.executeStatementInternal(ClientRPCServiceImpl.java:312) at org.apache.iotdb.db.protocol.thrift.impl.ClientRPCServiceImpl.executeStatementV2(ClientRPCServiceImpl.java:778) at org.apache.iotdb.service.rpc.thrift.IClientRPCService$Processor$executeStatementV2.getResult(IClientRPCService.java:4104) at org.apache.iotdb.service.rpc.thrift.IClientRPCService$Processor$executeStatementV2.getResult(IClientRPCService.java:4084) at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:38) at org.apache.iotdb.db.protocol.thrift.ProcessorWithMetrics.process(ProcessorWithMetrics.java:64) at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) 2025-11-19 13:32:37,850 [pool-41-IoTDB-ClientRPC-Processor-12$20251119_053237_00066_1.1.0] WARN o.a.i.d.q.e.f.FragmentInstanceManager:202 - error when create FragmentInstanceExecution. java.lang.RuntimeException: Error occurred during executing UDAF#validate(UDFParameterValidator): , please check whether the implementation of UDF is correct according to the udf-api description.java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 at org.apache.iotdb.db.queryengine.execution.aggregation.UDAFAccumulator.onError(UDAFAccumulator.java:210) at org.apache.iotdb.db.queryengine.execution.aggregation.UDAFAccumulator.reflectAndValidateUDF(UDAFAccumulator.java:107) at org.apache.iotdb.db.queryengine.execution.aggregation.UDAFAccumulator.beforeStart(UDAFAccumulator.java:84) at org.apache.iotdb.db.queryengine.execution.aggregation.UDAFAccumulator.<init>(UDAFAccumulator.java:72) at org.apache.iotdb.db.queryengine.execution.aggregation.AccumulatorFactory.createAccumulator(AccumulatorFactory.java:49) at org.apache.iotdb.db.queryengine.plan.planner.OperatorTreeGenerator.createRawDataAggregationOperator(OperatorTreeGenerator.java:1995) at org.apache.iotdb.db.queryengine.plan.planner.OperatorTreeGenerator.visitRawDataAggregation(OperatorTreeGenerator.java:1977) at org.apache.iotdb.db.queryengine.plan.planner.OperatorTreeGenerator.visitRawDataAggregation(OperatorTreeGenerator.java:316) at org.apache.iotdb.db.queryengine.plan.planner.plan.node.process.RawDataAggregationNode.accept(RawDataAggregationNode.java:212) at org.apache.iotdb.db.queryengine.plan.planner.OperatorTreeGenerator.dealWithConsumeChildrenOneByOneNode(OperatorTreeGenerator.java:3472) at org.apache.iotdb.db.queryengine.plan.planner.OperatorTreeGenerator.visitIdentitySink(OperatorTreeGenerator.java:2665) at org.apache.iotdb.db.queryengine.plan.planner.OperatorTreeGenerator.visitIdentitySink(OperatorTreeGenerator.java:316) at org.apache.iotdb.db.queryengine.plan.planner.plan.node.sink.IdentitySinkNode.accept(IdentitySinkNode.java:75) at org.apache.iotdb.db.queryengine.plan.planner.LocalExecutionPlanner.plan(LocalExecutionPlanner.java:92) at org.apache.iotdb.db.queryengine.execution.fragment.FragmentInstanceManager.lambda$execDataQueryFragmentInstance$3(FragmentInstanceManager.java:163) at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660) at org.apache.iotdb.db.queryengine.execution.fragment.FragmentInstanceManager.execDataQueryFragmentInstance(FragmentInstanceManager.java:139) at org.apache.iotdb.db.consensus.statemachine.dataregion.DataRegionStateMachine.read(DataRegionStateMachine.java:354) at org.apache.iotdb.consensus.iot.IoTConsensusServerImpl.read(IoTConsensusServerImpl.java:276) at org.apache.iotdb.consensus.iot.IoTConsensus.read(IoTConsensus.java:224) at org.apache.iotdb.db.queryengine.execution.executor.RegionReadExecutor.execute(RegionReadExecutor.java:84) at org.apache.iotdb.db.queryengine.plan.scheduler.FragmentInstanceDispatcherImpl.dispatchLocally(FragmentInstanceDispatcherImpl.java:455) at org.apache.iotdb.db.queryengine.plan.scheduler.FragmentInstanceDispatcherImpl.dispatchOneInstance(FragmentInstanceDispatcherImpl.java:298) at org.apache.iotdb.db.queryengine.plan.scheduler.FragmentInstanceDispatcherImpl.dispatchRead(FragmentInstanceDispatcherImpl.java:131) at org.apache.iotdb.db.queryengine.plan.scheduler.FragmentInstanceDispatcherImpl.dispatch(FragmentInstanceDispatcherImpl.java:118) at org.apache.iotdb.db.queryengine.plan.scheduler.ClusterScheduler.start(ClusterScheduler.java:117) at org.apache.iotdb.db.queryengine.plan.planner.TreeModelPlanner.doSchedule(TreeModelPlanner.java:144) at org.apache.iotdb.db.queryengine.plan.execution.QueryExecution.schedule(QueryExecution.java:267) at org.apache.iotdb.db.queryengine.plan.execution.QueryExecution.start(QueryExecution.java:180) at org.apache.iotdb.db.queryengine.plan.Coordinator.execution(Coordinator.java:134) at org.apache.iotdb.db.queryengine.plan.Coordinator.executeForTreeModel(Coordinator.java:169) at org.apache.iotdb.db.protocol.thrift.impl.ClientRPCServiceImpl.executeStatementInternal(ClientRPCServiceImpl.java:312) at org.apache.iotdb.db.protocol.thrift.impl.ClientRPCServiceImpl.executeStatementV2(ClientRPCServiceImpl.java:778) at org.apache.iotdb.service.rpc.thrift.IClientRPCService$Processor$executeStatementV2.getResult(IClientRPCService.java:4104) at org.apache.iotdb.service.rpc.thrift.IClientRPCService$Processor$executeStatementV2.getResult(IClientRPCService.java:4084) at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:38) at org.apache.iotdb.db.protocol.thrift.ProcessorWithMetrics.process(ProcessorWithMetrics.java:64) at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) 2025-11-19 13:32:37,869 [pool-41-IoTDB-ClientRPC-Processor-12$20251119_053237_00066_1.1.0] WARN o.a.i.d.q.p.s.FragmentInstanceDispatcherImpl:457 - Error occurred during executing UDAF#validate(UDFParameterValidator): , please check whether the implementation of UDF is correct according to the udf-api description.java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 ### What did you expect to see? 验证通过 ### What did you see instead? Msg: org.apache.iotdb.jdbc.IoTDBSQLException: 301: Error occurred during executing UDAF#validate(UDFParameterValidator): , please check whether the implementation of UDF is correct according to the udf-api description.java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 ### Anything else? Msg: org.apache.iotdb.jdbc.IoTDBSQLException: 301: Error occurred during executing UDAF#validate(UDFParameterValidator): , please check whether the implementation of UDF is correct according to the udf-api description.java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 ### Are you willing to submit a PR? - [ ] I'm willing to submit a PR! -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
