cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Stupp (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-8374) Better support of null for UDF
Date Fri, 12 Dec 2014 00:23:13 GMT


Robert Stupp commented on CASSANDRA-8374:

To clarify - the syntax would be:
    argOne   int    DEFAULT 42,
    argTwo   double ALLOW NULL,
    argThree float )
RETURN float LANGUAGE java ...
would generate a Java method with this signature:
public float execute(int argOne, java.lang.Double argTwo, float argThree)

If any of the arguments would be {{null}} and neither {{ALLOW NULL}} nor {{DEFAULT x}} has
been declared, the method wouldn't be executed.

There are also implications to aggregates (need some additional checks - {{INITCOND}} might
be required for UDFs, otherwise the state/final function might never be called at all).

> Better support of null for UDF
> ------------------------------
>                 Key: CASSANDRA-8374
>                 URL:
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Sylvain Lebresne
>            Assignee: Robert Stupp
>             Fix For: 3.0
> Currently, every function needs to deal with it's argument potentially being {{null}}.
There is very many case where that's just annoying, users should be able to define a function
> {noformat}
> CREATE FUNCTION addTwo(val int) RETURNS int LANGUAGE JAVA AS 'return val + 2;'
> {noformat}
> without having this crashing as soon as a column it's applied to doesn't a value for
some rows (I'll note that this definition apparently cannot be compiled currently, which should
be looked into).  
> In fact, I think that by default methods shouldn't have to care about {{null}} values:
if the value is {{null}}, we should not call the method at all and return {{null}}. There
is still methods that may explicitely want to handle {{null}} (to return a default value for
instance), so maybe we can add an {{ALLOW NULLS}} to the creation syntax.

This message was sent by Atlassian JIRA

View raw message