-
Notifications
You must be signed in to change notification settings - Fork 122
Description
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 🐉