[ 
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]

Reply via email to