[ 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-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org