You are seeing this http://wiki.apache.org/cassandra/FAQ#range_rp

The hash for (uuid-1 , p1) may be 100 and the hash for (uuid-1, p2) may be 1 .

You cannot do what you want to. Even if you passed a start of (uuid1,<empty>) 
and no finish, you would not only get rows where the key starts with uuid1. 

This may be of use to you 
http://www.datastax.com/dev/blog/schema-in-cassandra-1-1

Or you can store all the priorities that are valid for an ID in another row. 

Cheers

-----------------
Aaron Morton
Freelance Developer
@aaronmorton
http://www.thelastpickle.com

On 14/03/2012, at 1:05 PM, John Laban wrote:

> Forwarding to the Cassandra mailing list as well, in case this is more of an 
> issue on how I'm using Cassandra.
> 
> Am I correct to assume that I can use range queries on composite row keys, 
> even when using a RandomPartitioner, if I make sure that the first part of 
> the composite key is fixed?
> 
> Any help would be appreciated,
> John
> 
> 
> 
> On Tue, Mar 13, 2012 at 12:15 PM, John Laban <j...@pagerduty.com> wrote:
> Hi,
> 
> I have a column family that uses a composite key:
> 
> (ID, priority) -> ...
> 
> Where the ID is a UUID and the priority is an integer.
> 
> I'm trying to perform a range query now:  I want all the rows where the ID 
> matches some fixed UUID, but within a range of priorities.  This is supported 
> even if I'm using a RandomPartitioner, right?  (Because the first key in the 
> composite key is the partition key, and the second part of the composite key 
> is automatically ordered?)
> 
> So I perform a range slices query:
> 
> val rangeQuery = HFactory.createRangeSlicesQuery(keyspace, new 
> CompositeSerializer, StringSerializer.get, BytesArraySerializer.get)
> rangeQuery.setColumnFamily(RouteColumnFamilyName).
>             setKeys( new Composite(id, priorityStart), new Composite(id, 
> priorityEnd) ).
>             setRange( null, null, false, Int.MaxValue )
> 
> 
> But I get this error:
> 
> me.prettyprint.hector.api.exceptions.HInvalidRequestException: 
> InvalidRequestException(why:start key's md5 sorts after end key's md5.  this 
> is not allowed; you probably should not specify end key at all, under 
> RandomPartitioner)
> 
> Shouldn't they have the same md5, since they have the same partition key?  
> 
> Am I using the wrong query here, or does Hector not support composte range 
> queries, or am I making some mistake in how I think Cassandra's composite 
> keys work?
> 
> Thanks,
> John
> 
> 

Reply via email to