[ https://issues.apache.org/jira/browse/CASSANDRA-19637?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17860442#comment-17860442 ]
Benjamin Lerer commented on CASSANDRA-19637: -------------------------------------------- || patch || CI || | [4.0|https://github.com/apache/cassandra/pull/3359] | [J8|https://app.circleci.com/pipelines/github/blerer/cassandra/445/workflows/68c60c2a-191d-429d-a8ad-6ba4b02a7b40]| | [4.1|https://github.com/apache/cassandra/pull/3360] | [J8|https://app.circleci.com/pipelines/github/blerer/cassandra/450/workflows/91e86698-7f92-4a62-9f60-89ff262aeb6b]| | [5.0|https://github.com/apache/cassandra/pull/3361] | [J11|https://app.circleci.com/pipelines/github/blerer/cassandra/449/workflows/532c3fbe-21a4-48b0-8c27-29a5530f2653]| | [trunk|https://github.com/apache/cassandra/pull/3366] | [J11|https://app.circleci.com/pipelines/github/blerer/cassandra/450/workflows/91e86698-7f92-4a62-9f60-89ff262aeb6b]| Rerun the CI on the latest 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: 3h 10m > 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