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

Sam Tunnicliffe commented on CASSANDRA-5614:
--------------------------------------------

To delete from the 2i cf you need the old column value to derive the 2i cf key. 
When a column is deleted by name and that column is present in the memtable, we 
have the value and so can do that. When the named column isn't in the memtable, 
then we don't have the old value so we skip the delete and treat the operation 
as an insert. In SIM.StandardUpdater this is a no-op when isMarkedForDelete() 
== true, so even when the column is named if it's not in the memtable 
ASPCSI.delete is never called.
                
> W/O specified columns ASPCSI does not get notified of deletes
> -------------------------------------------------------------
>
>                 Key: CASSANDRA-5614
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-5614
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 1.2.0
>            Reporter: Benjamin Coverston
>            Assignee: Sam Tunnicliffe
>            Priority: Minor
>             Fix For: 1.2.7
>
>
> I'm working on a secondary index implementation based on the composite index 
> type.
> AbstractSimplePerColumnSecondaryIndex.java#delete is not called when CQL 
> delete statements do not specify columns.
> When I specify columns it is called. Pretty sure this is a bug.
> Setup:
> {code}
> cqlsh> create KEYSPACE foo WITH replication = {'class': 'SimpleStrategy' , 
> 'replication_factor': 1};
> cqlsh> use foo;
> cqlsh:foo> CREATE TABLE albums (artist text, album text, rating int, release 
> int, PRIMARY KEY (artist, album));
> cqlsh:foo> CREATE INDEX ON albums (rating);
> {code}
> {code}
> cqlsh:foo> insert into albums (artist, album, rating, release) VALUES 
> ('artist', 'album', 1, 2);
> {code}
> Does not get called here:
> {code}
> cqlsh:foo> DELETE FROM albums where artist='artist' and album='album';
> {code}
> {code}
> cqlsh:foo> insert into albums (artist, album, rating, release) VALUES 
> ('artist', 'album', 1, 2);
> {code}
> gets called here:
> {code}
> cqlsh:foo> DELETE rating FROM albums where artist='artist' and album='album';
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to