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

Ekaterina Dimitrova commented on CASSANDRA-19637:
-------------------------------------------------

I left some minor comments on the 4.0 PR.

CI looks fine for 4.0, but we need the primary J8 builds for 4.0 and 4.1 
because this is what we ship, where we run all the eclipse warnings, etc.

Was it confirmed that Accord follows the same rules for unfrozen collection?

Also, shall we confirm we want to fix this by changing behavior in patch 
releases? I know the ticket was mentioned on the mailing list, but I don't 
think the intentions were mentioned, so people really can confirm that is 
acceptable.
Once we clear this, I will check the rest of the branches. 

 

> 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
>
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> 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