cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jeff Jirsa (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (CASSANDRA-9198) Deleting from an empty list produces an error
Date Mon, 20 Apr 2015 16:37:59 GMT

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

Jeff Jirsa edited comment on CASSANDRA-9198 at 4/20/15 4:37 PM:
----------------------------------------------------------------

Attaching patch that was previously option #2 on CASSANDRA-9077. Addresses this without modification
(though I'll also attach an update shortly that ALSO addresses the now-failing unit tests
that expected the older behavior)

{noformat}
cqlsh> create keyspace IF NOT EXISTS test WITH replication = {'class': 'SimpleStrategy',
'replication_factor': 1};
cqlsh> USE test;
cqlsh:test> create table foo (k int primary key, v list<int>);
cqlsh:test> insert into foo(k,v) values (1, [1,2]);
cqlsh:test> update foo set v = v - [1] where k = 1;
cqlsh:test> update foo set v = v - [1] where k = 1;
cqlsh:test> update foo set v = v - [2] where k = 1;
cqlsh:test> update foo set v = v - [2] where k = 1;
cqlsh:test> 
cqlsh:test> select * from foo;

 k | v
---+------
 1 | null

(1 rows)
{noformat}




was (Author: jjirsa):
Attaching patch that was previously option #2 on CASSANDRA-9077. Addresses this without modification:

{noformat}
cqlsh> create keyspace IF NOT EXISTS test WITH replication = {'class': 'SimpleStrategy',
'replication_factor': 1};
cqlsh> USE test;
cqlsh:test> create table foo (k int primary key, v list<int>);
cqlsh:test> insert into foo(k,v) values (1, [1,2]);
cqlsh:test> update foo set v = v - [1] where k = 1;
cqlsh:test> update foo set v = v - [1] where k = 1;
cqlsh:test> update foo set v = v - [2] where k = 1;
cqlsh:test> update foo set v = v - [2] where k = 1;
cqlsh:test> 
cqlsh:test> select * from foo;

 k | v
---+------
 1 | null

(1 rows)
{noformat}



> Deleting from an empty list produces an error
> ---------------------------------------------
>
>                 Key: CASSANDRA-9198
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-9198
>             Project: Cassandra
>          Issue Type: Bug
>          Components: API
>            Reporter: Olivier Michallat
>            Assignee: Benjamin Lerer
>            Priority: Minor
>             Fix For: 3.0
>
>         Attachments: 9198.txt
>
>
> While deleting an element from a list that does not contain it is a no-op, deleting it
from an empty list causes an error.
> This edge case is a bit inconsistent, because it makes list deletion non idempotent:
> {code}
> cqlsh:test> create table foo (k int primary key, v list<int>);
> cqlsh:test> insert into foo(k,v) values (1, [1,2]);
> cqlsh:test> update foo set v = v - [1] where k = 1;
> cqlsh:test> update foo set v = v - [1] where k = 1;
> cqlsh:test> update foo set v = v - [2] where k = 1;
> cqlsh:test> update foo set v = v - [2] where k = 1;
> InvalidRequest: code=2200 [Invalid query] message="Attempted to delete an element from
a list which is null"
> {code}
> With speculative retries coming to the drivers, idempotency becomes more important because
it determines which query we might retry or not. So it would be better if deleting from an
empty list succeeded.



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

Mime
View raw message