[SERVER-85239] In classic_runtime_planner_for_sbe::CachedPlanner implement replanning for aggregation pipeline pushdown Created: 16/Jan/24 Updated: 01/Feb/24 |
|
| Status: | Open |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Major - P3 |
| Reporter: | Ivan Fefer | Assignee: | Backlog - Query Execution |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||
| Assigned Teams: |
Query Execution
|
||||||||
| Participants: | |||||||||
| Story Points: | 3 | ||||||||
| Description |
|
If the query contains an aggregation pipeline, multi-planning will be used only for the “find” part of the query. However, we need to cache the whole query, as currently we can’t re-combine already prepared SBE plans and we can’t recover QuerySolutions from SBE plan cache entries. For replanning, we need to track the number of documents that reached the aggregation pipeline, because aggregation pipelines can have stages that affect the number of documents unpredictably. For example, blocking stages like $group or stages that produce more documents like $unwind. |