[
https://issues.apache.org/jira/browse/CASSANDRA-21740?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dipankar Achinta reassigned CASSANDRA-21740:
--------------------------------------------
Assignee: Dipankar Achinta
> Prepared statement metadata reports a bind marker in a NOT IN restriction on
> the partition key as a partition key bind index
> ----------------------------------------------------------------------------------------------------------------------------
>
> Key: CASSANDRA-21740
> URL: https://issues.apache.org/jira/browse/CASSANDRA-21740
> Project: Apache Cassandra
> Issue Type: Bug
> Components: Feature/Prepared Statements
> Reporter: Nadav Har'El
> Assignee: Dipankar Achinta
> Priority: Normal
> Fix For: 6.x, 7.x
>
> Time Spent: 0.5h
> Remaining Estimate: 0h
>
> In Cassandra 6.0-alpha2, preparing a query with a {{NOT IN}} restriction on
> the partition key returns metadata that lists the {{NOT IN}} bind marker
> among the partition key bind indexes (the "pk_indexes" of the PREPARED
> result), as if it were a value of the partition key:
> {code:sql}
> CREATE TABLE ks.t (k int, i int, j int, PRIMARY KEY (k, i, j));
> -- prepare:
> SELECT * FROM ks.t WHERE k NOT IN (?) ALLOW FILTERING; -- pk_indexes =
> [0]
> SELECT * FROM ks.t WHERE k NOT IN (?, ?) ALLOW FILTERING; -- pk_indexes =
> [1]
> -- for comparison:
> SELECT * FROM ks.t WHERE k NOT IN ? ALLOW FILTERING; -- no pk_indexes
> SELECT * FROM ks.t WHERE k = ?; -- pk_indexes =
> [0]
> {code}
> A value in {{NOT IN}} is a partition key that the query excludes, so it
> cannot be used to route the request. With this metadata, token-aware drivers
> send the request to the replicas of the excluded key. Drivers may also refuse
> to execute the request; for example, the Python driver fails to bind
> {{UNSET_VALUE}} to the marker with "ValueError: Cannot bind UNSET_VALUE as a
> part of the routing key 'k'". Because of this, the new {{NOT IN}} checks in
> {{SelectSingleColumnRelationTest.testWithUnsetValues}} ({{k NOT IN(?)}} and
> {{k NOT IN(?,?)}} with {{unset()}}) cannot be run through a driver. CQLTester
> doesn't use a driver, so the Java test doesn't notice.
> {{NOT IN}} on the partition key was added in CASSANDRA-18584, so this affects
> only Cassandra 6. Tested on 6.0-alpha2.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]