[ 
https://issues.apache.org/jira/browse/CASSANDRA-15266?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maciej Sokol updated CASSANDRA-15266:
-------------------------------------
    Test and Documentation Plan: Unittests added and adjusted.
                         Status: Patch Available  (was: In Progress)

> java internal exception on attempt to UPDATE a row using CONTAINS operator
> --------------------------------------------------------------------------
>
>                 Key: CASSANDRA-15266
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-15266
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Legacy/CQL
>            Reporter: Konstantin
>            Assignee: Maciej Sokol
>            Priority: Normal
>              Labels: lhf
>             Fix For: 3.0.x, 3.11.x, 4.0.x
>
>
> kostja@atlas ~ % cqlsh -ucassandra -pcassandra
> Connected to My Cluster at 127.0.0.1:9042.
> [cqlsh 5.0.1 | Cassandra 3.11.4 | CQL spec 3.4.4 | Native protocol v4]
> Use HELP for help.
> cassandra@cqlsh> CREATE KEYSPACE t1 WITH replication = 
> \{'class':'SimpleStrategy', 'replication_factor' : 1};
> cassandra@cqlsh> use t1;
> cassandra@cqlsh:t1> create table t (a int, b frozen<map<int, int>>, c int, 
> primary key (a, b));
> cassandra@cqlsh:t1> insert into t (a, b, c) values (1, \{1:1, 2:2}, 3);
> cassandra@cqlsh:t1> update t set c=3 where a=1 and b contains 1;
> ServerError: java.lang.UnsupportedOperationException
>  
> Server log file:
> ```
> ERROR [Native-Transport-Requests-1] 2019-08-07 17:02:59,283 
> QueryMessage.java:129 - Unexpected error during query 
> java.lang.UnsupportedOperationException: null
>  at 
> org.apache.cassandra.cql3.restrictions.SingleColumnRestriction$ContainsRestriction.appendTo(SingleColumnRestriction.java:454)
>  ~[a
> pache-cassandra-3.11.4.jar:3.11.4]
>  at 
> org.apache.cassandra.cql3.restrictions.ClusteringColumnRestrictions.valuesAsClustering(ClusteringColumnRestrictions.java:109)
>  ~[a
> pache-cassandra-3.11.4.jar:3.11.4]
>  at 
> org.apache.cassandra.cql3.restrictions.StatementRestrictions.getClusteringColumns(StatementRestrictions.java:770)
>  ~[apache-cassan
> dra-3.11.4.jar:3.11.4]
>  at 
> org.apache.cassandra.cql3.statements.ModificationStatement.createClustering(ModificationStatement.java:312)
>  ~[apache-cassandra-3.
> 11.4.jar:3.11.4]
>  at 
> org.apache.cassandra.cql3.statements.ModificationStatement.addUpdates(ModificationStatement.java:677)
>  ~[apache-cassandra-3.11.4.j
> ar:3.11.4]
>  at 
> org.apache.cassandra.cql3.statements.ModificationStatement.getMutations(ModificationStatement.java:635)
>  ~[apache-cassandra-3.11.4
> .jar:3.11.4]
>  at 
> org.apache.cassandra.cql3.statements.ModificationStatement.executeWithoutCondition(ModificationStatement.java:437)
>  ~[apache-cassa
> ndra-3.11.4.jar:3.11.4]
>  at 
> org.apache.cassandra.cql3.statements.ModificationStatement.execute(ModificationStatement.java:425)
>  ~[apache-cassandra-3.11.4.jar:
> 3.11.4]
>  at 
> org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:225)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
>  at org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:256) 
> ~[apache-cassandra-3.11.4.jar:3.11.4]
>  at org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:241) 
> ~[apache-cassandra-3.11.4.jar:3.11.4]
>  at 
> org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:116)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
>  at 
> org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:566)
>  [apache-cassandra-3.11.4.jar:3.11.4]
>  at 
> org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:410)
>  [apache-cassandra-3.11.4.jar:3.11.4]
>  at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
>  [netty-all-4.0.44.Final.jar:4.0.44
> ...
>  ```
> +Additional information for newcomers:+
> {{CONTAINS}} and {{CONTAINS KEY}} restrictions are not supported for 
> {{UPDATE}} or {{DELETE}} operations but they should be properly rejected with 
> a proper error message.
> To fix that problem a new check should be added in the 
> {{StatementRestrictions}} constructor to thrown an 
> {{InvalidRequestException}} if the relation operator is a {{CONTAINS}} or 
> {{CONTAINS_KEY}} and the {{StatementType}} an {{UPDATE}} or a {{DELETION}}.
> Some unit tests should be added to {{UpdateTest}} an {{DeleteTest}} to test 
> the behavior.



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

Reply via email to