You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Stefan Miklosovic (Jira)" <ji...@apache.org> on 2023/04/24 11:43:00 UTC
[jira] [Commented] (CASSANDRA-15803) Separate out allow filtering scanning through a partition versus scanning over the table
[ https://issues.apache.org/jira/browse/CASSANDRA-15803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17715736#comment-17715736 ]
Stefan Miklosovic commented on CASSANDRA-15803:
-----------------------------------------------
the patch for not failing when ALLOW FILTERING is not used for cases when all primary keys are specified is here
https://github.com/apache/cassandra/pull/2293/files
So it solve this, until now, this would fail but it does not anymore.
{code}
create table ks.tb (id int, cl1 int, cl2 int, col1 int, primary key ((id), cl1, cl2))
select * from ks2.tb where id = 1 and cl1 = 2 and cl2 = 3 and col1 = 4;
{code}
This is something different from ALLOW FILTERING [WITHIN PARTITION]. What my patch fixes is the case when we are selecting on fully enumerated primary key. There is no reason to require ALLOW FILTERING whatsoever if we _know_ that we are hitting one row only.
WITHIN PARTITION means that we _know_ that our query is looking into multiple rows in one partition. WITHIN PARTITION might be used for cases like this:
{code}
create table ks.tb (id int, cl1 int, cl2 int, col1 int, primary key ((id), cl1, cl2))
select * from ks2.tb where id = 1 and cl1 = 2 and col1 = 3 ALLOW FILTERING WITHIN PARTITION;
{code}
This is not done yet. I would try to solve it all in this ticket. I created CASSANDRA-18477 but I realized that it is basically a duplicate and it is better if this will be all fix in one shot.
> Separate out allow filtering scanning through a partition versus scanning over the table
> ----------------------------------------------------------------------------------------
>
> Key: CASSANDRA-15803
> URL: https://issues.apache.org/jira/browse/CASSANDRA-15803
> Project: Cassandra
> Issue Type: Improvement
> Components: CQL/Syntax
> Reporter: Jeremy Hanna
> Priority: Normal
>
> Currently allow filtering can mean two things in the spirit of "avoid operations that don't seek to a specific row or sequential rows of data." First, it can mean scanning across the entire table to meet the criteria of the query. That's almost always a bad thing and should be discouraged or disabled (see CASSANDRA-8303). Second, it can mean filtering within a specific partition. For example, in a query you could specify the full partition key and if you specify a criterion on a non-key field, it requires allow filtering.
> The second reason to require allow filtering is significantly less work to scan through a partition. It is still extra work over seeking to a specific row and getting N sequential rows though. So while an application developer and/or operator needs to be cautious about this second type, it's not necessarily a bad thing, depending on the table and the use case.
> I propose that we separate the way to specify allow filtering across an entire table from specifying allow filtering across a partition in a backwards compatible way. One idea that was brought up in Slack in the cassandra-dev room was to have allow filtering mean the superset - scanning across the table. Then if you want to specify that you *only* want to scan within a partition you would use something like
> {{ALLOW FILTERING [WITHIN PARTITION]}}
> So it will succeed if you specify non-key criteria within a single partition, but fail with a message to say it requires the full allow filtering. This would allow for a backwards compatible full allow filtering while allowing a user to specify that they want to just scan within a partition, but error out if trying to scan a full table.
> This is potentially also related to the capability limitation framework by which operators could more granularly specify what features are allowed or disallowed per user, discussed in CASSANDRA-8303. This way an operator could disallow the more general allow filtering while allowing the partition scan (or disallow them both at their discretion).
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org