cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tyler Hobbs (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-7812) DROP FUNCTION drops all function with a given name
Date Tue, 02 Sep 2014 19:34:21 GMT

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

Tyler Hobbs commented on CASSANDRA-7812:
----------------------------------------

Overall this looks good.

Since we don't check argument names (and I don't think we need to), change the syntax to {{DROP
FUNCTION namespace::name(type, ...)}}.

DropFunctionStatement:
* Unused import of ColumnIdentifier
* The error message "Ambigious DROP FUNCTION call for '%s' - multiple overloads exist" could
be more helpful.  Perhaps: "'DROP FUNCTION %s' matches multiple function definitions; specify
the argument types by issuing a statement like 'DROP FUNCTION %s (type, type, ...)'"
* Use whitespace in between operators here: {{if (\!argsPresent && olds\!=null &&
olds.size()>1)}}
* Why do we need to check if it's a UDFunction here?  {{if (old.isNative() || !(old instanceof
UDFunction))}}
* Cast to {{UDFunction}} in the method call instead of creating a new variable: {{MigrationManager.announceFunctionDrop((UDFunction)old,
isLocalOnly);}}

Can you also add test cases to cover specifying argument types in {{DROP FUNCTION}} that don't
match an existing function?

> DROP FUNCTION drops all function with a given name
> --------------------------------------------------
>
>                 Key: CASSANDRA-7812
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-7812
>             Project: Cassandra
>          Issue Type: Improvement
>            Reporter: Sylvain Lebresne
>            Assignee: Robert Stupp
>             Fix For: 3.0
>
>         Attachments: 7812.txt
>
>
> We support multiple overloads of a given function name, so that you can define:
> {noformat}
> CREATE FUNCTION div(int a, int b) RETURNS int 'myDivOnIntegerFct';
> CREATE FUNCTION div(double a, double b) RETURNS double 'myDivOnDoubleFct';
> {noformat}
> In other words, a function is uniquely identified by it's name *and* it's argument types.
> But the {{DROP FUNCTION}} syntax currently only take a function name and if there is
multiple overload for that name, drop all of them without any way to drop one without the
other.
> So we should probably allow to optionally pass the type arguments to DROP to select a
specific overloading, something like:
> {noformat}
> DROP FUNCTION div(double, double);
> {noformat}
> Also, and while that's probably debatable, I'd also suggest to change the behavior of:
> {noformat}
> DROP FUNCTION div;
> {noformat}
> to complain if the there is multiple overload of the {{div}} method instead of dropping
all overload as it feels somewhat foot-shooting otherwise.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message