[ 
https://issues.apache.org/jira/browse/CASSANDRA-21715?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andres de la Peña updated CASSANDRA-21715:
------------------------------------------
    Reviewers: Andres de la Peña, Caleb Rackliffe  (was: Caleb Rackliffe)

> Add * wildcard in excluded index hints
> --------------------------------------
>
>                 Key: CASSANDRA-21715
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-21715
>             Project: Apache Cassandra
>          Issue Type: New Feature
>          Components: CQL/Syntax, Feature/SAI, Legacy/CQL
>            Reporter: Mauricio Audirac-Martínez
>            Assignee: Mauricio Audirac-Martínez
>            Priority: Normal
>          Time Spent: 1h
>  Remaining Estimate: 0h
>
> CASSANDRA-18112 added the ability to include/exclude specific named indexes 
> via WITH included_indexes=\{...} and WITH excluded_indexes=\{...}.
> A common use case is wanting to exclude all applicable indexes from a query — 
> to force ALLOW FILTERING behaviour, or to test what a query does without any 
> index involvement — but currently this requires enumerating every index by 
> name, which is inconvenient and brittle (the list silently becomes incomplete 
> if a new index is added to the table).\
> This patch adds support for the * wildcard in excluded_indexes:
>   SELECT * FROM t WHERE v = 0 ALLOW FILTERING
>   WITH excluded_indexes = \{*};
> The wildcard is resolved by the coordinator at validation time 
> (IndexHints.fromCQLNames) into the full concrete set of indexes currently 
> registered for the table, before the ReadCommand is sent to replicas. No 
> messaging version bump is required.
> Design decisions:
>  - * is only valid in excluded_indexes. Using it in included_indexes throws 
> InvalidRequestException (WILDCARD_INCLUDED_INDEXES_ERROR), since "include all 
> indexes" has no defined semantics.
>  - * can be combined with explicit names in the same set (e.g. \{*, idx1}), 
> which is redundant but not an error.
>  - A wildcard exclusion that conflicts with an included index (e.g. 
> included_indexes=\{idx1} AND excluded_indexes=\{*}) fails with the same 
> CONFLICTING_INDEXES_ERROR as an explicit conflict, since expansion happens 
> before the conflict check.
> Changes:
>  - Parser.g: add indexNameOrWildcard rule; use indexNamesOrWildcards
>   for excluded_indexes property.
>  - QualifiedName: add WILDCARD sentinel and isWildcard().
>  - IndexHints: add WILDCARD_INCLUDED_INDEXES_ERROR; expand wildcard in
>   fetchIndexes(); update fromCQLNames javadoc.
>  - IndexHints.md: document the wildcard syntax and semantics.
>  - cql3handling.py: add <identifiersOrStars> for cqlsh autocomplete.
>  - Tests: IndexHintsTest (unit), IndexHintsDistributedTest (distributed).



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to