You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Ariel Weisberg (Jira)" <ji...@apache.org> on 2024/09/25 17:19:00 UTC
[jira] [Assigned] (CASSANDRA-19955) Accord should not block partition restricted Index queries
[ https://issues.apache.org/jira/browse/CASSANDRA-19955?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ariel Weisberg reassigned CASSANDRA-19955:
------------------------------------------
Assignee: Ariel Weisberg
> Accord should not block partition restricted Index queries
> ----------------------------------------------------------
>
> Key: CASSANDRA-19955
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19955
> Project: Cassandra
> Issue Type: Bug
> Components: Accord
> Reporter: David Capwell
> Assignee: Ariel Weisberg
> Priority: Normal
> Fix For: 5.x
>
>
> Accord requires partitions as part of the tracking protocol, which limits the use of range queries as no partition is known. There are valid use cases for partition restricted index queries, yet those appear to be range queries which causes Accord to block them.
> Rather than checking the type of the query, we should check if it has the following
> 1) selects a partition
> 2) if in LET clause, returns at most 1 run
> Partition restricted index queries fit this, so should be allowed in both LET and returning SELECT clauses
> Below is a test showing this doesn’t work
> {code}
> CREATE TABLE keyspace_test_00."tbl" (
> "pk1" tinyint,
> "pk2" ascii,
> "ck" frozen<map<frozen<set<date>>, 'org.apache.cassandra.db.marshal.DynamicCompositeType(p=>org.apache.cassandra.db.marshal.ShortType,n=>org.apache.cassandra.db.marshal.Int32Type,c=>org.apache.cassandra.db.marshal.IntegerType)'>>,
> "s1" frozen<map<frozen<list<inet>>, 'org.apache.cassandra.db.marshal.CompositeType(org.apache.cassandra.db.marshal.DecimalType)'>> static,
> "s2" set<vector<uuid, 2>> static,
> "v1" 'org.apache.cassandra.db.marshal.CompositeType(org.apache.cassandra.db.marshal.ListType(org.apache.cassandra.db.marshal.TimeUUIDType),org.apache.cassandra.db.marshal.TimeType)',
> "v2" frozen<list<'org.apache.cassandra.db.marshal.LexicalUUIDType'>>,
> PRIMARY KEY (("pk1", "pk2"), "ck")
> ) WITH CLUSTERING ORDER BY ("ck" ASC);
> CREATE INDEX ON keyspace_test_00.”tbl”(v2) USING ’sai’;
> BEGIN TRANSACTION
> SELECT *
> FROM keyspace_test_00."tbl"
> WHERE "v2" = ? AND "pk1" = (tinyint) ? - (tinyint) ? AND "pk2" = ?
> LIMIT 1;
> COMMIT TRANSACTION;
> {code}
> Fails with
> {code}
> Caused by: org.apache.cassandra.exceptions.InvalidRequestException: Range queries are not allowed for reads within a transaction; returning select at [2:3]
> at org.apache.cassandra.cql3.statements.RequestValidations.invalidRequest(RequestValidations.java:370)
> at org.apache.cassandra.cql3.statements.RequestValidations.checkTrue(RequestValidations.java:97)
> at org.apache.cassandra.cql3.statements.RequestValidations.checkFalse(RequestValidations.java:223)
> at org.apache.cassandra.cql3.statements.TransactionStatement$Parsed.checkAtMostOneRowSpecified(TransactionStatement.java:603)
> at org.apache.cassandra.cql3.statements.TransactionStatement$Parsed.prepare(TransactionStatement.java:558)
> {code}
--
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