[
https://issues.apache.org/jira/browse/CASSANDRA-11310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15246493#comment-15246493
]
Alex Petrov commented on CASSANDRA-11310:
-----------------------------------------
I've found one place where {{ALLOW FILTERING}} discards
{{usesSecondaryIndexing}} in {{StatementRestrictions}}: in
{{processClusteringColumnRestrictions}} when checking for
{{clusteringColumns}}.
>From the example given by Sam:
{code}
createTable("CREATE TABLE %s (a text, b int, c text, d int, PRIMARY KEY (a, b,
c));");
execute("CREATE CUSTOM INDEX ON %s (inber) USING
'org.apache.cassandra.index.sasi.SASIIndex'");
execute("SELECT * FROM %s WHERE a='R1' AND b > 0 AND c = 'int1' ALLOW FILTERING
;");
{code}
in {{processClusteringColumnRestrictions}} we're checking only the order of
columns: if the columns are out of order, we set {{usesSecondaryIndexing}}.
Although that's not the only case. If {{b}} is restricted with slice and {{c}}
with {{EQ}}, the order is technically correct (both {{b}} and {{c}} are
restricted), although since {{b}} is restricted with slice, we have to set the
{{usesSecondaryIndexing}} to true.
I've implemented a fast prototype locally and it seems to fit both cases. I can
make it prettier and show tomorrow morning.
> Allow filtering on clustering columns for queries without secondary indexes
> ---------------------------------------------------------------------------
>
> Key: CASSANDRA-11310
> URL: https://issues.apache.org/jira/browse/CASSANDRA-11310
> Project: Cassandra
> Issue Type: Improvement
> Components: CQL
> Reporter: Benjamin Lerer
> Assignee: Alex Petrov
> Labels: doc-impacting
> Fix For: 3.6
>
>
> Since CASSANDRA-6377 queries without index filtering non-primary key columns
> are fully supported.
> It makes sense to also support filtering on clustering-columns.
> {code}
> CREATE TABLE emp_table2 (
> empID int,
> firstname text,
> lastname text,
> b_mon text,
> b_day text,
> b_yr text,
> PRIMARY KEY (empID, b_yr, b_mon, b_day));
> SELECT b_mon,b_day,b_yr,firstname,lastname FROM emp_table2
> WHERE b_mon='oct' ALLOW FILTERING;
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)