[ 
https://issues.apache.org/jira/browse/CASSANDRA-8374?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14251977#comment-14251977
 ] 

Tyler Hobbs commented on CASSANDRA-8374:
----------------------------------------

I'd like to reconsider the options a bit.  Both Postgres and SqlServer have two 
options: {{CALLED ON NULL INPUT}} (the default) and {{RETURNS NULL ON NULL 
INPUT}} (returns null if any arg is null).  MySQL doesn't have either option, 
and neither does Oracle (which inconsistently defaults to one behavior for some 
functions and the other for other functions).

I like the Postgres/SqlServer approach.  The two options are clear and allow 
you to be explicit about either behavior.  The default of {{CALLED ON NULL 
INPUT}} is good, I think, because this is the default behavior for functions in 
all popular programming languages.  So, I suggest that we rename {{ALLOW 
NULLS}} to {{CALLED ON NULL INPUT}}, make it the default, and additionally add 
{{RETURNS NULL ON NULL INPUT}}.  This has the additional upside of being easier 
for users coming from a relational background to understand.

> 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
>
>         Attachments: 8473-1.txt, 8473-2.txt
>
>
> 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)

Reply via email to