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。
我正在使用 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。