You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Jon Haddad (JIRA)" <ji...@apache.org> on 2016/09/05 05:54:20 UTC
[jira] [Updated] (CASSANDRA-12611) Allow UDFs to be used in
predicates
[ https://issues.apache.org/jira/browse/CASSANDRA-12611?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jon Haddad updated CASSANDRA-12611:
-----------------------------------
Description:
Now that allow filtering can be used more liberally, it would be nice to be able to apply a function as a predicate. For instance, if I store a bloom filter on each row, it would be useful to be able to pass a value and a field into a function to check if the value is possibly in the set of values the bloom filter has seen. For example:
{code}CREATE OR REPLACE FUNCTION inBloom (input int, field field) CALLED ON NULL INPUT RETURNS boolean LANGUAGE java AS 'return true;'; // pretend this actual evaluates correctly
{code}
As far as I can tell, there's no way to pass inputs to a function referencing a field, and no way to use the result of the function in a predicate. The following simple example fails:
{code}
cqlsh:tutorials> CREATE OR REPLACE FUNCTION inBloom (input int) CALLED ON NULL INPUT RETURNS boolean LANGUAGE java AS 'return true;';
cqlsh:tutorials> select * from user where inBloom(1) = True;
SyntaxException: line 1:32 no viable alternative at input '(' (select * from user where [inBloom](...)
{code}
was:
Now that allow filtering can be used more liberally, it would be nice to be able to apply a function as a predicate. For instance, if I store a bloom filter on each row, it would be useful to be able to pass a value and a field into a function to check if the value is possibly in the set of values the bloom filter has seen. For example:
CREATE OR REPLACE FUNCTION inBloom (input int, field field) CALLED ON NULL INPUT RETURNS boolean LANGUAGE java AS 'return true;'; // pretend this actual evaluates correctly
As far as I can tell, there's no way to pass inputs to a function referencing a field, and no way to use the result of the function in a predicate. The following simple example fails:
cqlsh:tutorials> CREATE OR REPLACE FUNCTION inBloom (input int) CALLED ON NULL INPUT RETURNS boolean LANGUAGE java AS 'return true;';
cqlsh:tutorials> select * from user where inBloom(1) = True;
SyntaxException: line 1:32 no viable alternative at input '(' (select * from user where [inBloom](...)
> Allow UDFs to be used in predicates
> -----------------------------------
>
> Key: CASSANDRA-12611
> URL: https://issues.apache.org/jira/browse/CASSANDRA-12611
> Project: Cassandra
> Issue Type: Improvement
> Reporter: Jon Haddad
>
> Now that allow filtering can be used more liberally, it would be nice to be able to apply a function as a predicate. For instance, if I store a bloom filter on each row, it would be useful to be able to pass a value and a field into a function to check if the value is possibly in the set of values the bloom filter has seen. For example:
> {code}CREATE OR REPLACE FUNCTION inBloom (input int, field field) CALLED ON NULL INPUT RETURNS boolean LANGUAGE java AS 'return true;'; // pretend this actual evaluates correctly
> {code}
> As far as I can tell, there's no way to pass inputs to a function referencing a field, and no way to use the result of the function in a predicate. The following simple example fails:
> {code}
> cqlsh:tutorials> CREATE OR REPLACE FUNCTION inBloom (input int) CALLED ON NULL INPUT RETURNS boolean LANGUAGE java AS 'return true;';
> cqlsh:tutorials> select * from user where inBloom(1) = True;
> SyntaxException: line 1:32 no viable alternative at input '(' (select * from user where [inBloom](...)
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)