doris UDF变长参数无法正常使用

Viewed 15

----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这里只有简单的案例实现

0 Answers