[SERVER-69024] [CQF] Handling of traverse with more than one partial schema requirement Created: 21/Aug/22 Updated: 05/Dec/22 Resolved: 28/Sep/22 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Major - P3 |
| Reporter: | Svilen Mihaylov (Inactive) | Assignee: | Backlog - Query Optimization |
| Resolution: | Duplicate | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||
| Assigned Teams: |
Query Optimization
|
||||||||||||||||
| Participants: | |||||||||||||||||
| Description |
|
When converting to SargableNode, when we encounter a Traverse with more than one requirement, retain original predicate, and retain one of the requirements as optional.
This will allow us to extract interval for elemMatch with nested fields. |
| Comments |
| Comment by David Percy [ 28/Sep/22 ] |
|
I'm doing this as part of
It looks like we can retain all the predicates as optional. If the original predicate is Traverse (ComposeM A B) then Traverse A is a valid over-approximation, and so is Traverse B. And then given two over-approximations, their conjunction ComposeM (Traverse A) (Traverse B) is also a valid over-approximation. |