cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Todd Nine (JIRA)" <>
Subject [jira] [Created] (CASSANDRA-7854) Unable to select partition keys directly using IN keyword (no replacement for multi row multiget in thrift)
Date Mon, 01 Sep 2014 02:46:20 GMT
Todd Nine created CASSANDRA-7854:

             Summary: Unable to select partition keys directly using IN keyword (no replacement
for multi row multiget in thrift)
                 Key: CASSANDRA-7854
             Project: Cassandra
          Issue Type: Bug
            Reporter: Todd Nine

We're converting some old thrift CF's to CQL.  We aren't looking to change the underlying
physical structure, since this has proven effective in production.  In order to migrate, we
need full select via multi equivalent.  In thrift, the format was as follows.

(scopeId, scopeType, nodeId, nodeType){ 0x00, timestamp }

Where we have deliberately designed only 1 column per row.  To translate this to CQL, I have
defined the following table.

CREATE TABLE Graph_Marked_Nodes ( 
 scopeId uuid,
 scopeType varchar,
 nodeId uuid,
 nodeType varchar,
 timestamp bigint,
 PRIMARY KEY(scopeId, scopeType, nodeId, nodeType)

I then try to select using the IN keyword.

select timestamp from Graph_Marked_Nodes WHERE (scopeId , scopeType , nodeId , nodeType) 
IN ( (5a391596-3181-11e4-a87e-600308a690e2, 'organization', 5a3a2708-3181-11e4-a87e-600308a690e2
,'test' ),(5a391596-3181-11e4-a87e-600308a690e2, 'organization', 5a3a2709-3181-11e4-a87e-600308a690e2
,'test' ),(5a391596-3181-11e4-a87e-600308a690e2, 'organization', 5a39fff7-3181-11e4-a87e-600308a690e2
,'test' ) )

Which results in the following stack trace

Caused by: com.datastax.driver.core.exceptions.InvalidQueryException: Multi-column relations
can only be applied to clustering columns: scopeid
	at com.datastax.driver.core.Responses$Error.asException(
	at com.datastax.driver.core.DefaultResultSetFuture.onSet(
	at com.datastax.driver.core.RequestHandler.setFinalResult(
	at com.datastax.driver.core.RequestHandler.onSet(
	at com.datastax.driver.core.Connection$Dispatcher.messageReceived(

This is still possible via the thrift API.  Apologies in advance if I've filed this erroneously.
 I can't find any examples of this type of query anywhere.

Note that our size grows far too large to fit in a single physical partition (row) if we use
only scopeId and scopeType, so we need all 4 data elements to be part of our partition key
to ensure we have the distribution we need.

This message was sent by Atlassian JIRA

View raw message