[
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)