[SERVER-16533] Make CanonicalQuery immutable in order to avoid re-parsing for WriteConflictExceptions Created: 12/Dec/14 Updated: 06/Dec/22 |
|
| Status: | Backlog |
| Project: | Core Server |
| Component/s: | Performance, Querying |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Major - P3 |
| Reporter: | David Storch | Assignee: | Backlog - Query Optimization |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||
| Assigned Teams: |
Query Optimization
|
||||
| Participants: | |||||
| Description |
|
Currently, the ParsedUpdate and ParsedDelete classes hand ownership of their canonical query to the PlanExecutor. The PlanExecutor then is allowed to mutate the CanonicalQuery during the course of planning and query execution. Making the CanonicalQuery immutable would allow the same CQ to be used by multiple PlanExecutors. This means that we would not need do the work of parsing again when we retry due to a write conflict. |