Cassandra UDF 和用户输入

Cassandra UDF and user input

我正在使用 Cassandra 2.2,但我遇到了用户定义函数的问题。

我想创建一个函数,它将 table 的一个整数列作为参数,另一个整数作为用户输入,并将两个值相乘,如下所示:

CREATE OR REPLACE FUNCTION testFunc (val int, input int)

CALLED ON NULL INPUT RETURNS int

LANGUAGE java AS 'return val * input;';

我可以在两个整数列上执行函数,例如

select testFunc(int_column, another_int_column) from my_table;

它正在运行,但是当我尝试使用如下用户输入执行它时:

select testFunc(int_column, 3) from my_table;

我收到以下异常:

SyntaxException: ErrorMessage code=2000 [Syntax error in CQL query] message="line 1:22 no viable alternative at input '3' (select testFunc(year, [3]...)"

是否有可能实现我正在尝试的目标,或者我应该找到另一种方法来实现?

以这种方式调用 UDF testFunc(int_column, 3) 与将 int 传递给仅采用 String(即列名)的函数参数相同,因此不正确的语法错误 no viable alternative at input '3'。不确定这是否适合您的情况,但您可以尝试这样的操作:

CREATE OR REPLACE FUNCTION testFunc (val int)

CALLED ON NULL INPUT RETURNS int

LANGUAGE java AS 'return val * 3;';

或将 multiplier 列添加到您的 table。