[SERVER-70224] [CQF] Add rewrite to push not through EvalFilter when possible Created: 05/Oct/22 Updated: 29/Oct/23 Resolved: 22/Nov/22 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 6.3.0-rc0 |
| Type: | Task | Priority: | Major - P3 |
| Reporter: | Hana Pearlman | Assignee: | David Percy |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||||||||||
| Sprint: | QO 2022-11-14, QO 2022-11-28 | ||||||||||||||||
| Participants: | |||||||||||||||||
| Description |
|
This rewrite would push a UnaryOp[not] through an EvalFilter under certain conditions. For example UnaryOp[not] EvalFilter PathCompare[eq] Constant[2] --> EvalFilter PathCompare[neq] Constant[2] This is not always correct when the path below the EvalFilter contains a Traverse. For example, the following rewrite is not correct: This would have incorrect behavior for arrays at path "a". |
| Comments |
| Comment by Githook User [ 22/Nov/22 ] |
|
Author: {'name': 'David Percy', 'email': 'david.percy@mongodb.com', 'username': 'dpercy'}Message: Before converting a Filter to Sargable node, try to push down UnaryOp |
| Comment by David Percy [ 08/Nov/22 ] |
|
Never mind, I think we're going to split this after all. |
| Comment by David Percy [ 07/Nov/22 ] |
|
I ended up doing this together with |