[ 
https://issues.apache.org/jira/browse/CASSANDRA-8319?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aleksey Yeschenko resolved CASSANDRA-8319.
------------------------------------------
    Resolution: Invalid

Apparently this already works. Since 2.0.

> Allow LWT DELETE with column comparison
> ---------------------------------------
>
>                 Key: CASSANDRA-8319
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8319
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: API, Core
>            Reporter: DOAN DuyHai
>            Priority: Minor
>             Fix For: 2.1.2
>
>
> Right now, the only way to use LWT with DELETE is to rely on the IF NOT 
> EXISTS keyword
> There may be some scenarios where using IF column=xxx with DELETE is relevant.
>  I am preparing a hands-on with a chat application using C*. A chatroom is 
> defined as:
> {code:sql}
> CREATE TABLE chatroom (
>     room_id uuid PRIMARY KEY,
>     name text,
>     participants list<frozen <person>> // person is an UDT representing a 
> subset of the users table);
> {code}
>  Right now, upon removing a participant from the room, I need to:
> * count remaining participants in the room (read the participants list)
> * remove the room (the whole partition) is there isn't anyone inside
>  This is a read-before-write pattern, but even this does not prevent race 
> conditions. Indeed, the last participant may leave the room at the same time 
> a new one enters
>  So using LWT with "DELETE FROM chatroom IF participants = [] WHERE room_id= 
> ..." may help making the removal safe
>  With this design, room creation/deletion as well as participants 
> addition/removal should go through LWT to be consistent. It's slow but 
> participant joining and leaving event frequency is low enough compared to 
> people posting messages to make the trade off not too expensive in general



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

Reply via email to