Skip to content

Allow for customizable index match candidates #3639

@alecgrieser

Description

@alecgrieser

The current logic places all of the logic for generating index match candidates into the MatchCandidate interface. That means that if a user has an IndexMaintainer that is not defined in the repository, then the Cascades planner will never be able to match it. It also means that for index maintainers that are defined in this repo but not in the core subproject (e.g., the Lucene index type), we would have to do something weird like include logic on how to match an index definition that is not actually available for querying, which seems weird.

We could alleviate this by making the index maintainer or index maintainer factory responsible for generating match candidates. The default implementation would be "no match candidate" which would be equivalent to the index type not being supported by Cascades.

There's some nuance here, like what we're sort of talking about here is trying to make the index querying more composable (see: #16 and #17), but there are a lot of planner internals here that we risk exposing, and the match candidate's form is not yet stable. So, we'd probably need to proceed with at least some scare text here about how Here There Be Dragons 🐉

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestplannerRelated to the query planner

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions