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

Ekaterina Dimitrova updated CASSANDRA-19637:
--------------------------------------------
    Fix Version/s: 4.0.x
                   4.1.x
                   5.0.x
                   5.x

> LWT conditions behavior on collections is inconsistent
> ------------------------------------------------------
>
>                 Key: CASSANDRA-19637
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-19637
>             Project: Cassandra
>          Issue Type: Bug
>          Components: CQL/Semantics
>            Reporter: Benjamin Lerer
>            Assignee: Benjamin Lerer
>            Priority: Normal
>             Fix For: 4.0.x, 4.1.x, 5.0.x, 5.x
>
>
> LWT conditions behaviour on collections is inconsistent in several ways 
> around null values:
> 1)+Conditions comparing a collection column with a {{null}} value to a 
> non-null have a different behaviour for frozen and non-frozen collection+.
>  {code}UPDATE myTable SET l = ? WHERE k = 0 IF l < [1, 2]{code}
> If {{l}} is null the previous query will return {{[false, null]}} for a 
> frozen collection and {{[true]}} for a non-frozen collection. 
> 2) +Conditions on non-frozen collection treat empty differently from null+
> Due to the way multi-cell collections are implemented, it is not possible to 
> differentiate between {{null}} and empty collections like it is feasible for 
> single cell (frozen) collections. Therefore an empty multi-cell collection 
> will always be treated as {{null}}.
> Unfortunately, the way LWT conditions handle that is not consistent with that.
> For example for {{colA list<int>}} non null: {code}.. IF colA >= null{code} 
> will throw an invalid request error whereas {code}..IF colA >= []{code} will 
> returns {{true}}.
> Moreover, if we insert an empty list through:
> {code}INSERT INTO mytable (pk, colA) VALUES (1, []);{code}
> and use {code}DELETE FROM mytable WHERE pk=1 IF colA = []{code} the returned 
> results will be {code}{false, null}{code}. Which can be quite confusing.
> The way to fix that behaviour to make it consistent with other operations is 
> to consider empty multi-cell collection input as {{null}} and reject the 
> {{null}} input for non {{=}} and {{!=}} operators.    
>   



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to