You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by sielski <si...@man.poznan.pl> on 2013/11/15 10:22:08 UTC

Error: Unable to search across multiple secondary index types

Hello,

I’ve installed Cassandra 2.0.2 and I’m trying to query a cassandra table using a SELECT statement with two WHERE clauses on columns with secondary indexes but Cassandra throws an error as in the subject.
It’s easy to reproduce this problem. My table structure is as follows:
CREATE TABLE test (c1 VARCHAR, c2 VARCHAR, c3 VARCHAR, PRIMARY KEY (c1, c2);
CREATE INDEX test_i1 ON test (c2);
CREATE INDEX test_i2 ON test (c3); 

Then I execute a simple query on an empty table:
SELECT * FROM test WHERE c2='whatever' AND c3 ='whatever' ALLOW FILTERING;

I would expect an empty response, but instead I get "Request did not complete within rpc_timeout.” info on cqlsh interface and there is an error in cassandra logs:
ERROR 09:57:36,394 Exception in thread Thread[ReadStage:35,5,main]
java.lang.RuntimeException: java.lang.RuntimeException: Unable to search across multiple secondary index types
	at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1931)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.RuntimeException: Unable to search across multiple secondary index types
	at org.apache.cassandra.db.index.SecondaryIndexManager.search(SecondaryIndexManager.java:535)
	at org.apache.cassandra.db.ColumnFamilyStore.search(ColumnFamilyStore.java:1649)
	at org.apache.cassandra.db.RangeSliceCommand.executeLocally(RangeSliceCommand.java:135)
	at org.apache.cassandra.service.StorageProxy$LocalRangeSliceRunnable.runMayThrow(StorageProxy.java:1414)
	at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1927)

Is it a bug or there is a reason why I cannot execute such a query on this model? I saw an issue https://issues.apache.org/jira/browse/CASSANDRA-5851 which is similar to mine but it’s marked as resolved in 2.0.0 and I’m using the most recent version.

— 
Regards,
Krzysztof Sielski

Re: Error: Unable to search across multiple secondary index types

Posted by Aaron Morton <aa...@thelastpickle.com>.
> java.lang.RuntimeException: java.lang.RuntimeException: Unable to search across multiple secondary index types
A query that used two secondary indexed columns would require query plan to determine the most efficient approach. We don’t support features like that. 

> I would expect an empty response, but instead I get "Request did not complete within rpc_timeout.” info on cqlsh interface and there is an error in cassandra logs:
That sounds like a bug, you should have gotten an error. 

Could you raise a bug on https://issues.apache.org/jira/browse/CASSANDRA

Cheers

-----------------
Aaron Morton
New Zealand
@aaronmorton

Co-Founder & Principal Consultant
Apache Cassandra Consulting
http://www.thelastpickle.com

On 15/11/2013, at 10:22 pm, sielski <si...@man.poznan.pl> wrote:

> Hello,
> 
> I’ve installed Cassandra 2.0.2 and I’m trying to query a cassandra table using a SELECT statement with two WHERE clauses on columns with secondary indexes but Cassandra throws an error as in the subject.
> It’s easy to reproduce this problem. My table structure is as follows:
> CREATE TABLE test (c1 VARCHAR, c2 VARCHAR, c3 VARCHAR, PRIMARY KEY (c1, c2);
> CREATE INDEX test_i1 ON test (c2);
> CREATE INDEX test_i2 ON test (c3); 
> 
> Then I execute a simple query on an empty table:
> SELECT * FROM test WHERE c2='whatever' AND c3 ='whatever' ALLOW FILTERING;
> 
> I would expect an empty response, but instead I get "Request did not complete within rpc_timeout.” info on cqlsh interface and there is an error in cassandra logs:
> ERROR 09:57:36,394 Exception in thread Thread[ReadStage:35,5,main]
> java.lang.RuntimeException: java.lang.RuntimeException: Unable to search across multiple secondary index types
> 	at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1931)
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> 	at java.lang.Thread.run(Thread.java:744)
> Caused by: java.lang.RuntimeException: Unable to search across multiple secondary index types
> 	at org.apache.cassandra.db.index.SecondaryIndexManager.search(SecondaryIndexManager.java:535)
> 	at org.apache.cassandra.db.ColumnFamilyStore.search(ColumnFamilyStore.java:1649)
> 	at org.apache.cassandra.db.RangeSliceCommand.executeLocally(RangeSliceCommand.java:135)
> 	at org.apache.cassandra.service.StorageProxy$LocalRangeSliceRunnable.runMayThrow(StorageProxy.java:1414)
> 	at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1927)
> 
> Is it a bug or there is a reason why I cannot execute such a query on this model? I saw an issue https://issues.apache.org/jira/browse/CASSANDRA-5851 which is similar to mine but it’s marked as resolved in 2.0.0 and I’m using the most recent version.
> 
> — 
> Regards,
> Krzysztof Sielski