[SERVER-56740] Use SBE RuntimeEnvironment as a constant pool Created: 07/May/21 Updated: 06/Dec/22 |
|
| Status: | Backlog |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Task | Priority: | Major - P3 |
| Reporter: | Anton Korshunov | Assignee: | Backlog - Query Execution |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | sbe-post-v1 | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Assigned Teams: |
Query Execution
|
| Participants: |
| Description |
|
By design, the sbe::EConstant expression owns the constant value it holds. It means that whenever we need to create two instances sbe::EConstant holding the same constant value, we will have to make two copies of this value. It could quickly become impractical when these constants are large objects (long strings, large arrays or documents). Instead of creating multiple copies we should create just one and use it in the plan. This can be achieved by placing all constants into the RuntimeEnvironment and use it as a constant pool. |