[
https://issues.apache.org/jira/browse/CASSANDRA-11031?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15432368#comment-15432368
]
Benjamin Lerer commented on CASSANDRA-11031:
--------------------------------------------
Overall the patch looks good to me. I just have noted the following points:
* The {{hasSlice}} method is now duplicated in
{{PartitionKeySingleRestrictionSet}} and {{ClusteringColumnRestrictions}}. It
would be better to put it only into {{RestrictionSet}} and expose it into
{{Restrictions}}.
* We should have some unit test for MaterializedViews with Slice and
unrestricted partition keys.
* In {{StatementRestrictions::processPartitionKeyRestrictions}} I do not think
that the error message: {{"Partition key parts: %s must be restricted as other
parts are"}} makes sense any more (for non-MVs). We should probably only use
the {{ALLOW FILTERING}} error message.
* The part of {{StatementRestrictions::processPartitionKeyRestrictions}}
dealing with secondary index can probably be combined with the one dealing with
the filtering.
* In {{RowFilter}} we should not use Lambda expression to filter out the rows
as they are pretty bad from the performance point of view and result in a lot
of garbage.
* In {{RowFilter}}: {{Iterables.size(rowLevelExpressions)}} can be replaced by
{{rowLevelExpressions.size()}}
* The tests using secondary indices should be put into {{SecondaryIndexTest}}
* It will be good to add more tests into
{{SelectOrderedPartitionerTest::testFilteringOnPartitionKeyWithToken}}: with
{{>}} on one of the partition key or only the second partition key being
specified
* In {{SelectTest::testAllowFilteringOnPartitionKey}} the message {{IN
restrictions are not supported on indexed columns}} looks wrong to me as the
test do not use any secondary index.
> MultiTenant : support “ALLOW FILTERING" for Partition Key
> ---------------------------------------------------------
>
> Key: CASSANDRA-11031
> URL: https://issues.apache.org/jira/browse/CASSANDRA-11031
> Project: Cassandra
> Issue Type: New Feature
> Components: CQL
> Reporter: ZhaoYang
> Assignee: ZhaoYang
> Priority: Minor
> Fix For: 3.x
>
>
> Currently, Allow Filtering only works for secondary Index column or
> clustering columns. And it's slow, because Cassandra will read all data from
> SSTABLE from hard-disk to memory to filter.
> But we can support allow filtering on Partition Key, as far as I know,
> Partition Key is in memory, so we can easily filter them, and then read
> required data from SSTable.
> This will similar to "Select * from table" which scan through entire cluster.
> CREATE TABLE multi_tenant_table (
> tenant_id text,
> pk2 text,
> c1 text,
> c2 text,
> v1 text,
> v2 text,
> PRIMARY KEY ((tenant_id,pk2),c1,c2)
> ) ;
> Select * from multi_tenant_table where tenant_id = "datastax" allow filtering;
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)