You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Konstantin Zadorozhny (JIRA)" <ji...@apache.org> on 2012/12/04 05:41:58 UTC

[jira] [Commented] (CASSANDRA-5023) Upgrading from 1.0 to 1.1 makes secondary indexes no longer work

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

Konstantin Zadorozhny commented on CASSANDRA-5023:
--------------------------------------------------

get_range_slices works fine in 1.1.6, but is broken in 1.1.7.
                
> Upgrading from 1.0 to 1.1 makes secondary indexes no longer work
> ----------------------------------------------------------------
>
>                 Key: CASSANDRA-5023
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-5023
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>            Reporter: Jeremy Hanna
>            Assignee: Yuki Morishita
>             Fix For: 1.1.8
>
>
> To reproduce:
> Create column family with C* 1.0.8:
> {code}
> CREATE KEYSPACE Keyspace1 
> with placement_strategy = 'org.apache.cassandra.locator.SimpleStrategy'
> and strategy_options = {replication_factor:1};
> use Keyspace1;
> CREATE COLUMN FAMILY 'User' WITH
>  key_validation_class = 'UTF8Type' AND
>  comparator = 'UTF8Type' AND
>  default_validation_class = 'UTF8Type' AND
>  compression_options = {sstable_compression:SnappyCompressor,chunk_length_kb:64} AND
>  column_metadata = [
>  {column_name: 'numberOfDeloreans', validation_class: 'IntegerType', index_type: KEYS}
> ];
> {code}
> Then in cqlsh add some data:
> {code}
> use Keyspace1;
> update User set 'numberOfDeloreans'=0 where key = 'marty';
> update User set 'userId'='themartymcfly' where key = 'marty';
> {code}
> In cqlsh, do
> {code}select * from User where numberOfDeloreans=0;{code}
> Then in thrift do:
> {code}
> package org.mostlyharmless;
> import org.apache.cassandra.thrift.*;
> import org.apache.cassandra.utils.ByteBufferUtil;
> import org.apache.thrift.TException;
> import org.apache.thrift.protocol.TProtocol;
> import org.apache.thrift.transport.TFramedTransport;
> import org.apache.thrift.transport.TSocket;
> import org.apache.thrift.transport.TTransport;
> import java.io.UnsupportedEncodingException;
> import java.nio.ByteBuffer;
> import java.util.ArrayList;
> import java.util.List;
> public class ThriftQuery {
>     public static void main(String[] args)
>             throws TException, InvalidRequestException, UnavailableException, UnsupportedEncodingException, NotFoundException, TimedOutException
>     {
>         TTransport tr = new TFramedTransport(new TSocket("localhost", 9160));
>         TProtocol proto = new TBinaryProtocol(tr);
>         Cassandra.Client client = new Cassandra.Client(proto);
>         tr.open();
>         client.set_keyspace("Keyspace1");
>         ColumnParent columnParent = new ColumnParent("User");
>         SlicePredicate slicePredicate = new SlicePredicate();
>         List<ByteBuffer> columnNames = new ArrayList<ByteBuffer>();
>         columnNames.add(ByteBufferUtil.bytes("userId"));
>         slicePredicate.setColumn_names(columnNames);
>         KeyRange keyRange = new KeyRange();
>         keyRange.setStart_token("0");
>         keyRange.setEnd_token("0");
>         List<IndexExpression> indexExpressions = new ArrayList<IndexExpression>();
>         indexExpressions.add(new IndexExpression(ByteBufferUtil.bytes("numberOfDeloreans"), IndexOperator.EQ, ByteBufferUtil.bytes(0)));
>         keyRange.setRow_filter(indexExpressions);
>         List<KeySlice> keySlices = client.get_range_slices(columnParent, slicePredicate, keyRange, ConsistencyLevel.ONE);
>         System.out.println("number of keyslices returned: " + keySlices.size());
>         tr.close();
>     }
> }
> {code}
> Note that 1 record is returned in both instances.
> Run nodetool drain on 1.0.8.  Start 1.1.7.  Do the cqlsh query again, returns the result.  Run the thrift code again, get 0 results.
> Tried both upgradesstables and rebuild_index.  Didn't help.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira