[ 
https://issues.apache.org/jira/browse/CASSANDRA-7395?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Robert Stupp updated CASSANDRA-7395:
------------------------------------

    Attachment: 7395-v2.diff

Here's enhanced version of the patch. Contract for this experimental prototype:
* UDFs must be {{public static}}
* UDF name either explicitly set in annotation or derived from Java method name
* UDFs must be annotated (basic types are detected - collections, udt, tuple 
not)
* types in UDF annotations must be parsable by {{TypeParser}} (CQL syntax not 
yet)
* Bundle name is defined using tools/bin/udfloader (see above)

The udf-demo contains a _MathBundle_ with some functions.

{noformat}
public class MathBundle {
    @UDF(deterministic = false)
    public static Double random() { ... }

    @UDF
    public static BigInteger min(BigInteger a, BigInteger b) { ... }

    @UDF
    public static Integer min(Integer a, Integer b) { ... }
{noformat}

I've got a [working solution|https://bitbucket.org/snazy/bcverify/] that scans 
classes for "evil" code. It's based on regex pattern against classes used by 
byte code (scanned using ASM). Maybe useful to prevent "evil" code to be loaded 
as UDFs.

> Support for pure user-defined functions (UDF)
> ---------------------------------------------
>
>                 Key: CASSANDRA-7395
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-7395
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: API, Core
>            Reporter: Jonathan Ellis
>             Fix For: 3.0
>
>         Attachments: 7395-v2.diff, 7395.diff
>
>
> We have some tickets for various aspects of UDF (CASSANDRA-4914, 
> CASSANDRA-5970, CASSANDRA-4998) but they all suffer from various degrees of 
> ocean-boiling.
> Let's start with something simple: allowing pure user-defined functions in 
> the SELECT clause of a CQL query.  That's it.
> By "pure" I mean, must depend only on the input parameters.  No side effects. 
>  No exposure to C* internals.  Column values in, result out.  
> http://en.wikipedia.org/wiki/Pure_function



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to