[
https://issues.apache.org/jira/browse/CASSANDRA-10537?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Benjamin Lerer updated CASSANDRA-10537:
---------------------------------------
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.
was:
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)?
> 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.
> Priority: Normal
> Labels: CQL
> Fix For: 4.x
>
>
> 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: [email protected]
For additional commands, e-mail: [email protected]