[ 
https://issues.apache.org/jira/browse/CASSANDRA-13197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15905326#comment-15905326
 ] 

Alex Petrov commented on CASSANDRA-13197:
-----------------------------------------

I've started working on a patch. For literal values it's quite simple to 
provide some sensible error messages. For non-literal values and prepare 
statements it's going to be much more complicated, and I do not think it 
actually makes sense to implement on the statement level. Since CQL is 
dynamically typed and we resolve the only at the last moment right before 
evaluation. We might want to tackle more complex scenarios in the future though.

> +=/-= shortcut syntax bugs/inconsistencies
> ------------------------------------------
>
>                 Key: CASSANDRA-13197
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-13197
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Kishan Karunaratne
>            Assignee: Alex Petrov
>
> CASSANDRA-12232 introduced (+=/-=) shortcuts for counters and collection 
> types. I ran into some bugs/consistencies.
> Given the schema:
> {noformat}
> CREATE TABLE simplex.collection_table (k int PRIMARY KEY, d_l List<int>, d_s 
> Set<int>, d_m Map<int,int>, d_t Tuple<int>);
> {noformat}
> 1) Using -= on a list column removes all elements that match the value, 
> instead of the first or last occurrence of it. Is this expected?
> {noformat}
> Given d_l = [0, 1, 2, 1, 1]
> UPDATE collection_table SET d_l -= [1] WHERE k=0;
> yields 
> [0, 2]
> {noformat}
> 2) I can't seem to remove a map key/value pair:
> {noformat}
> Given d_m = {0: 0, 1: 1}
> UPDATE collection_table SET d_m -= {1:1} WHERE k=0;
> yields
> Invalid map literal for d_m of type frozen<set<int>>
> {noformat}
> However {noformat}UPDATE collection_table SET d_m -= {1} WHERE k=0;{noformat} 
> does work.
> 3) Tuples are immutable so it make sense that +=/-= doesn't apply. However 
> the error message could be better, now that other collection types are 
> allowed:
> {noformat}
> UPDATE collection_table SET d_t += (1) WHERE k=0;
> yields
> Invalid operation (d_t = d_t + (1)) for non counter column d_t
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to