----UDF自定义实现类
/**
- 变长参数UDF:多个整数求和(仅Doris)
- CREATE FUNCTION vararg_sum(INT, ...) RETURNS BIGINT
- 示例: vararg_sum(1, 2, 3, 4) → 10
-
vararg_sum(10, 20) → 30
*/
public class VarargSum {
public Long evaluate(Integer[] args) {
if (args == null || args.length == 0) {
return null;
}
long sum = 0;
for (Integer arg : args) {
if (arg != null) {
sum += arg;
}
}
return sum;
}
}
----doris创建语句
CREATE GLOBAL FUNCTION IF NOT EXISTS vararg_sum(INT,...) RETURNS BIGINT PROPERTIES ("file" = "file:///vcdc/2026/6/3/java-udf-demo.jar", "symbol" = "com.seres.udf.doris.VarargSum", "always_nullable" = "true", "type" = "JAVA_UDF");
----执行报错日志
java.sql.SQLException: errCode = 2, detailMessage = UDF class 'com.seres.udf.doris.VarargSum' of method 'evaluate' arg0 is [java.lang.Integer[]] type, but create function command type is INT.
----问题点
1、变长参数在java中是否是采用Integer[] args方式表示
2、是否有变长参数的实现案例,https://github.com/apache/doris/tree/master/samples/doris-demo/java-udf-demo/src/main/java/org/apache/doris/udf这里只有简单的案例实现