[ https://issues.apache.org/jira/browse/CASSANDRA-10537?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17515376#comment-17515376 ]
ROCHETEAU Antoine commented on CASSANDRA-10537: ----------------------------------------------- I just realized that this patch is not limited to conditional UPDATE statement, it concerns in the same way conditional DELETE statement: {code:java} DELETE FROM myTable WHERE k=0 IF l CONTAINS 'bar';{code} This statement will be valid and executed if the condition apply. This is maybe obvious and not a problem at all but today it's not reflected on any tests AFAIK. Can I have your opinion on this? If everything is fine I will update the autocompletion feature and the documentation accordingly (on both update and delete statement). > CONTAINS and CONTAINS KEY support for Lightweight Transactions > -------------------------------------------------------------- > > Key: CASSANDRA-10537 > URL: https://issues.apache.org/jira/browse/CASSANDRA-10537 > Project: Cassandra > Issue Type: Improvement > Components: Legacy/CQL > Reporter: Nimi Wariboko Jr. > Assignee: ROCHETEAU Antoine > Priority: Normal > Labels: AdventCalendar2021, CQL, lhf > Fix For: 4.x > > Time Spent: 2h 50m > Remaining Estimate: 0h > > Conditional updates currently do not support CONTAINS and CONTAINS KEY > conditions. Queries such as > {{UPDATE mytable SET somefield = 4 WHERE pk = 'pkv' IF set_column CONTAINS > 5;}} > are not possible. > Would it also be possible to support the negation of these (ex. testing that > a value does not exist inside a set)? > +Additional Information for newcomers:+ > Negation should not be supported as for the moment we do not support it > within restrictions either. > One way to approch this bug is to use test driven development. You can modify > {{InsertUpdateIfConditionCollectionsTest}} to allow CONTAINS and CONTAINS KEY > operators and go through the different failures. > The following changes will need to be done. > * The {{columnCondition}} rule from the ANTLR {{Parser.g}} file should be > updated to accept {{containsOperator}}. > * {{ColumnCondition.Raw#prepareTerms}} should be modified in the case where > the operator is a CONTAINS or CONTAINS KEY as the {{receiver}} is not the > collection but keys or values of the collection. Look at > {{SingleColumnRelation#makeCollectionReceiver}}. > * {{ColumnCollection.MultiCellCollectionBound#valueAppliesTo}} will need to > be changed for {{Map}} and {{Set}} to process CONTAINS operators. > -- This message was sent by Atlassian Jira (v8.20.1#820001) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org