Search backend: pass runtime dependencies at runtime
Created by: camdencheek
This brings us most of the way to a static query execution plan. In particular, it modifies search jobs to accept a job.RuntimeDependencies
struct for their Run
methods and removes all runtime clients from the search job structs.
This is valuable because it reduces the dependency requirements of the Plan
step of query execution, greatly simplifying the set of values that need to be passed through the tree. The eventual goal is a clean separation between the Plan
step and the Run
step.
Each commit is pretty independent, but I would not recommend reviewing commit-by-commit since there are many. The commits were mostly me making jumps between islands of passing typechecks.
Stacked on #33741
Test plan
Should be fully semantics preserving, but I'm relying pretty heavily on backend integration tests here. I did do some light manual testing.