doris 新建UDF执行无结果返回问题

Viewed 34

新建了Java自定义函数,功能是输入三个字符串a,b,c,如果a=1,判断bc内容是否一致,如果a=2,判断c的内容是否包含在b中,如b=“今天是星期二太阳很好”,c="是太阳好"返回true,c="好太阳"返回false,因为顺序不一致。具体方法如下

public class IsRealStr {
public boolean evaluate(String a,String b, String c) {
        if (b == null || c == null) {
            return false;
        }
        if(Objects.equals(a, "1")){
            return b.equals(c);
        }else if(Objects.equals(a, "2")){
            int i = 0;
            int j = 0;
            while (i < b.length() && j < c.length()) {
                if (b.charAt(i) == c.charAt(j)) {
                    j++;
                }
                i++;
            }
            return j == c.length();
        }
        return true;

    }
}

创建UDF函数

CREATE global FUNCTION is_abbreviation(String,String,String) RETURNS boolean PROPERTIES (
    "file"="file:///data/doris/udf/dorisUdf-1.0.jar",
    "symbol"="com.zqjhzx.udf.portfunction.IsRealStr",
    "always_nullable"="true",
    "type"="JAVA_UDF"
);

执行SQL

select is_abbreviation("2", "今天是星期二太阳很好", "是太阳好") 

执行成功但无结果返回,上述所有创建过程均无报错,fe业务报错。但将add_one的UDF新建后功能正常,上诉问题暂无法排查,请求大佬协助,感谢。
doris版本2.1.7

2 Answers

可以看看fe.log 里面的日志,在执行上述sql后的日志信息

已解决问题,正常了