[
https://issues.apache.org/jira/browse/CASSANDRA-9166?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14522047#comment-14522047
]
Sam Tunnicliffe commented on CASSANDRA-9166:
--------------------------------------------
Pushed a branch with a fix [here|https://github.com/beobal/cassandra/tree/9166]
The first commit just adds a utest and a minimal fix. The second commit removes
the {{useFunction}} method from the various classes & interfaces in the cql3
package that have it. Instead, we can re-use {{getFunctions}} to check whether
a prepared statement references a function when it gets dropped. The third
commit just fixes a bug caught by {{AggregationTest}} following the removal of
{{usesFunction}}.
> Prepared statements using functions in collection literals aren't invalidated
> when functions are dropped
> --------------------------------------------------------------------------------------------------------
>
> Key: CASSANDRA-9166
> URL: https://issues.apache.org/jira/browse/CASSANDRA-9166
> Project: Cassandra
> Issue Type: Bug
> Reporter: Sam Tunnicliffe
> Assignee: Sam Tunnicliffe
> Labels: cql, functions
> Fix For: 3.x
>
>
> When a function is dropped, any prepared statements which reference it need
> to be removed from the prepared statement cache.
> The default implementation of {{Term#usesFunction}} in {{Term.NonTerminal}}
> is not overriden in all the places it should be. The {{DelayedValue}} classes
> in {{Lists}}, {{Sets}}, {{Maps}} and {{Tuples}} may all make use of function
> calls.
> {code}
> CREATE KEYSPACE ks WITH replication = {'class': 'SimpleStrategy',
> 'replication_factor': 1};
> CREATE TABLE ks.t1 (k int PRIMARY KEY, v list<int>);
> CREATE FUNCTION ks.echo_int(input int) RETURNS int LANGUAGE javascript AS
> 'input';
> {code}
> a prepared statement of the form:
> {code}
> INSERT INTO ks.t1 (k, v) VALUES (?, [ks.echo_int(?)]);
> {code}
> should be dropped when {{ks.echo_int(int)}} is, but currently that isn't the
> case.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)