[ https://issues.apache.org/jira/browse/CASSANDRA-8374?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14243354#comment-14243354 ]
Robert Stupp commented on CASSANDRA-8374: ----------------------------------------- Added optional {{ALLOW NULL}} to arguments and return type. For _java_ source UDFs {{ALLOW NULL}} also means that the Java primitive types (e.g. {{int}} instead of {{j.l.Integer}}) are used making the Java source much nicer: {code:title=current state} return val == null ? null : Double.valueOf(Math.sin(val.doubleValue())); {code} becomes {code:title=with ALLOW NULL for arg and return} return Math.sin(val); {code} I'm just thinking of whether to use {{ALLOW NULL}} for each individual argument and the return type or to use {{ALLOW NULLS}} globally. It's not much effort to alternatively allow something like {{DEFAULT a_value}} for a UDF argument. Seems to be a nice option. (The linked git branch is not ready for review yet) > Better support of null for UDF > ------------------------------ > > Key: CASSANDRA-8374 > URL: https://issues.apache.org/jira/browse/CASSANDRA-8374 > 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 like: > {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 (v6.3.4#6332)