Sylvain Lebresne created CASSANDRA-7740:
-------------------------------------------

             Summary: Parsing of UDF body is broken
                 Key: CASSANDRA-7740
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-7740
             Project: Cassandra
          Issue Type: Bug
            Reporter: Sylvain Lebresne
            Assignee: Robert Stupp


The parsing of function body introduced by CASSANDRA-7395 is somewhat broken. 
It blindly parse everything up to {{END_BODY}}, which as 2 problems:
# it parse function body as if it was part of the CQL syntax, so anything that 
don't happen to be a valid CQL token won't even parse.
# something like
{noformat}
CREATE FUNCTION foo() RETURNS text LANGUAGE JAVA BODY return "END_BODY"; 
END_BODY;
{noformat}
will not parse correctly.

I don't think we can accept random syntax like that. A better solution (which 
is the one Postgresql uses) is to pass the function body as a normal string. 
And in fact I'd be in favor of reusing Postgresql syntax (because why not), 
that is to have:
{noformat}
CREATE FUNCTION foo() RETURNS text LANGUAGE JAVA AS 'return "END_BODY"';
{noformat}
One minor annoyance might be, for certain languages, the necessity to double 
every quote inside the string. But in a separate ticket we could introduce 
Postregsql solution of adding an [alternate syntax for string 
constants|http://www.postgresql.org/docs/9.1/static/sql-syntax-lexical.html#SQL-SYNTAX-DOLLAR-QUOTING].




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

Reply via email to