Cassandra UDF:检查空值时出现错误



我写了一个UDF如下:
CREATE FUNCTION myspace.getValue(lng bigint, dbl double, etc double) RETURNS NULL ON NULL INPUT RETURNS double LANGUAGE java AS 'if (lng != null) {return (double)lng;} else if (dbl != null) { return dbl;} else return etc;';

我得到这个错误:

InvalidRequest: Error from server: code=2200 [Invalid query] message="Java源代码编译失败:
第1行:操作符!=对于参数类型(s) long, null未定义
第1行:操作符!=对于参数类型(s) double, null未定义

而在手册中,这些比较似乎是可以的(例如这里)。我正在使用Cassandra 4.0.3(通过它的docker镜像)。

我找到问题了。我将RETURNS NULL ON NULL INPUT更改为CALLED ON NULL INPUT,现在可以了,并按我的期望工作:)

这是一个Java问题,而不是Cassandra问题。

doublelong都是基本的Java数据类型,如果没有初始化,它们被分配一个默认值(分别是0L0.0d),所以它们不能是null

有关更多信息,请参见Java基本数据类型。干杯!

相关内容

  • 没有找到相关文章

最新更新