I’m not sure why it`s not allowed by the Datastax driver, but maybe you could 
try to use OR instead of IN?
SELECT blah FROM foo WHERE <indexed column> = :val1 OR <indexed column> = :val2 
ALLOW FILTERING

It should be the same as IN query, but I don’t if it makes a difference for 
performance.

From: Peter Heitman <pe...@heitman.us>
Reply-To: "user@cassandra.apache.org" <user@cassandra.apache.org>
Date: Monday 4 February 2019 at 07:17
To: "user@cassandra.apache.org" <user@cassandra.apache.org>
Subject: SASI queries- cqlsh vs java driver

When I create a SASI index on a secondary column, from cqlsh I can execute a 
query

SELECT blah FROM foo WHERE <indexed column> IN ('mytext') ALLOW FILTERING;

but not from the java driver:

SELECT blah FROM foo WHERE <indexed column> IN :val ALLOW FILTERING

Here I get an exception

com.datastax.driver.core.exceptions.InvalidQueryException: IN predicates on 
non-primary-key columns (<indexed column>) is not yet supported
at 
com.datastax.driver.core.exceptions.InvalidQueryException.copy(InvalidQueryException.java:49)
 ~[cassandra-driver-core-3.6.0.jar:na]

Why are they different? Is there anything I can do with the java driver to get 
past this exception?

Peter


Reply via email to