Cassandra Filtering – Allow Filtering Not Working as Expected

cassandra

I'm having issues with getting ALLOW FILTERING to work. In our Cassandra 1.2 database, we have a table like this:

CREATE TABLE some_table
    partition_key text,
    other_key     text,
    non_key       text,
    PRIMARY KEY (partition_key, other_key)

Based on the documentation, this query ought to work:

SELECT *
FROM some_table
WHERE 
    partition_key = 'foo'
    AND other_key > 'bar'
    AND non_key = 'baz'
LIMIT 100
ALLOW FILTERING

However, I get this error:

Unable to execute CQL script on 'Your Keyspace': No indexed columns present in by-columns clause with Equal operator

Even this simpler query fails with the same error:

SELECT *
FROM some_table
WHERE 
    partition_key = 'foo'
    AND other_key = 'bar'
    AND non_key = 'baz'
LIMIT 100
ALLOW FILTERING

Yes, I'm aware that you can add secondary indexes to tables, but I thought the whole point of ALLOW FILTERING is to enable exceptions when you're ok with the fact that a potentially large amount of scanning is possible.

It seems like ALLOW FILTERING is completely broken. Why they heck doesn't this work?

Best Answer

Appears this feature is deceptive and what you're trying to do is not yet possible. Slated for v3.

https://issues.apache.org/jira/browse/CASSANDRA-6377

Related Question