[
https://issues.apache.org/jira/browse/CASSANDRA-7499?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jeremy Hanna updated CASSANDRA-7499:
------------------------------------
Labels: LWT (was: )
> Unable to update list element by index using CAS condition
> ----------------------------------------------------------
>
> Key: CASSANDRA-7499
> URL: https://issues.apache.org/jira/browse/CASSANDRA-7499
> Project: Cassandra
> Issue Type: Bug
> Components: CQL
> Environment: Cassandra *2.0.9*, Java Driver *2.0.2* & *2.0.3*
> Client: cqlsh *3.1.8*, CQL spec *3.1.0*, Thrift protocol *19.39.0*
> Reporter: DOAN DuyHai
> Assignee: Sylvain Lebresne
> Priority: Major
> Labels: LWT
> Fix For: 2.0.10, 2.1.1
>
> Attachments: 7499-2.0.txt, 7499-2.1.txt, 7499.txt
>
>
> While running IT tests for *Achilles*, I ran into a strange bug:
> *With CQLSH*
> {code:sql}
> cqlsh:test> CREATE TABLE cas_update(id int PRIMARY KEY,name text,friends
> list<text>);
> cqlsh:test> INSERT INTO cas_update (id, name , friends ) VALUES (
> 10,'John',['Paul','George']);
> cqlsh:test> SELECT * FROM cas_update WHERE id=10;
> id | friends | name
> ----+--------------------+------
> 10 | ['Paul', 'George'] | John
> cqlsh:test> UPDATE cas_update SET friends[0]='Helen' WHERE id=10 IF
> name='John';
> Bad Request: List index 0 out of bound, list has size 0
> cqlsh:test> UPDATE cas_update SET friends[0]='Helen' WHERE id=10;
> cqlsh:test> SELECT * FROM cas_update WHERE id=10;
> id | friends | name
> ----+---------------------+------
> 10 | ['Helen', 'George'] | John
> {code}
> It seems that we cannot update list element by index with a CAS condition.
> *With Java driver 2.0.2 or 2.0.3*
> {code:java}
> ACHILLES_DML_STATEMENT@:writeDMLStatementLog Prepared statement : [INSERT
> INTO CompleteBean(id,followers,friends,name,preferences) VALUES
> (:id,:followers,:friends,:name,:preferences) USING TTL :ttl;] with
> CONSISTENCY LEVEL [ONE]
> ACHILLES_DML_STATEMENT@:writeDMLStatementLog bound values :
> [621309709026375591, [], [Paul, Andrew], John, {}, 0]
> ACHILLES_DML_STATEMENT@:writeDMLStartBatch
> ACHILLES_DML_STATEMENT@:writeDMLStartBatch
> ACHILLES_DML_STATEMENT@:writeDMLStartBatch ****** BATCH UNLOGGED START
> ******
> ACHILLES_DML_STATEMENT@:writeDMLStartBatch
> ACHILLES_DML_STATEMENT@:writeDMLStatementLog Parameterized statement :
> [UPDATE CompleteBean USING TTL 100 SET friends[0]=? WHERE
> id=621309709026375591 IF name=?;] with CONSISTENCY LEVEL [ONE]
> ACHILLES_DML_STATEMENT@:writeDMLStatementLog bound values : [100, 0,
> Helen, 621309709026375591, John]
> ACHILLES_DML_STATEMENT@:writeDMLStatementLog Parameterized statement :
> [UPDATE CompleteBean USING TTL 100 SET friends[1]=null WHERE
> id=621309709026375591 IF name=?;] with CONSISTENCY LEVEL [ONE]
> ACHILLES_DML_STATEMENT@:writeDMLStatementLog bound values : [100, 1,
> null, 621309709026375591, John]
> ACHILLES_DML_STATEMENT@:writeDMLEndBatch
> ACHILLES_DML_STATEMENT@:writeDMLEndBatch ****** BATCH UNLOGGED END with
> CONSISTENCY LEVEL [DEFAULT] ******
> ACHILLES_DML_STATEMENT@:writeDMLEndBatch
> ACHILLES_DML_STATEMENT@:writeDMLEndBatch
> ACHILLES_DML_STATEMENT@:truncateTable Simple query : [TRUNCATE
> entity_with_enum] with CONSISTENCY LEVEL [ALL]
> ACHILLES_DML_STATEMENT@:truncateTable Simple query : [TRUNCATE
> CompleteBean] with CONSISTENCY LEVEL [ALL]
> com.datastax.driver.core.exceptions.InvalidQueryException: List index 0 out
> of bound, list has size 0
> at
> com.datastax.driver.core.exceptions.InvalidQueryException.copy(InvalidQueryException.java:35)
> at
> com.datastax.driver.core.DefaultResultSetFuture.extractCauseFromExecutionException(DefaultResultSetFuture.java:256)
> at
> com.datastax.driver.core.DefaultResultSetFuture.getUninterruptibly(DefaultResultSetFuture.java:172)
> at
> com.datastax.driver.core.AbstractSession.execute(AbstractSession.java:52)
> {code}
> With Cassandra *2.0.8* and Java Driver 2.0.2 or 2.0.3, *the test passed* so
> it seems that there is a regression somewhere in the CAS update code
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]