Нужна помощь в написании функции Cassandra UDF - PullRequest
0 голосов
/ 13 мая 2019

Нужна помощь в написании cassandra udf для добавления / деления / умножения двух переменных.Попробовал приведенный ниже код, однако он не работает.Также у меня нет опыта работы с Java, поэтому, возможно, я не могу отлаживать.Помощь оценена по этому вопросу.

CREATE FUNCTION my_adder(val1 double,val2 double )
    RETURNS double LANGUAGE java
    BODY
        return (val1 == null || val2 == null)?null:Double.valueOf( val1.doubleValue() + val2.doubleValue());
    END BODY;

1 Ответ

0 голосов
/ 13 мая 2019

Нулевые входы должны обрабатываться с использованием RETURNS NULL ON NULL INPUT или CALLED ON NULL INPUT, как задокументировано здесь .

Так что в этом случае

CREATE OR REPLACE FUNCTION my_adder(val1 double,val2 double )
RETURNS NULL ON NULL INPUT
RETURNS double LANGUAGE java AS 'return val1 + val2;';

Тестирование:

create table mytable(
p int,
foo double,
bar double,
primary key (p));

insert into mytable (p, foo, bar)
values (0, 1.0, 2.0);
insert into mytable (p, foo, bar)
values (1, NULL, 2.0);
insert into mytable (p, foo, bar)
values (2, 1.0, NULL);

select p,my_adder(foo, bar) from mytable;

 p | test.my_adder(foo, bar)
---+---------------------------------
 1 |                            null
 0 |                               3
 2 |                            null
...