[英]Cassandra UDF: getting error on checking null values
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:来自服务器的错误:code=2200 [Invalid query] message="Java 源编译失败:
第 1 行:运算符 != 未定义参数类型 long、null
第 1 行:运算符 != 未定义参数类型 double、null"
虽然在手册中这些比较似乎没问题(例如这里)。 我正在使用 Cassandra 4.0.3(通过其 docker 映像)。
我发现了问题。 我将RETURNS NULL ON NULL INPUT
更改为CALLED ON NULL INPUT
,现在可以了,可以按我的预期工作:)
这实际上是一个 Java 问题,而不是 Cassandra 问题。
double
和long
都是原始 Java 数据类型,如果未初始化(分别为0L
或0.0d
),则为其分配一个默认值,因此它们不能为null
。
有关更多信息,请参阅Java 原始数据类型。 干杯!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.