Details
-
Improvement
-
Status: Resolved
-
Normal
-
Resolution: Fixed
Description
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.
Attachments
Issue Links
- relates to
-
CASSANDRA-8910 Conditional update based on UDF
- Open
- links to