[ 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)