-
Type: Task
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: 8.0.0-rc0
-
Component/s: None
-
None
-
Query Optimization
-
Fully Compatible
-
QO 2024-02-05, QO 2024-02-19, QO 2024-03-04, QO 2024-03-18
-
166
The undefined type has been deprecated for a long time. In v8.0, we will change classic and stage builders behavior so that comparison to null does not match undefined.
This ticket will include the necessary updates to the classic comparison expressions, classic index bounds building, and stage builders code. We should consider doing a performance investigation to see if there are improvements for comparison to null queries, which should be simpler after this change. Also, we will likely need to make updates to the query fuzzers. We should consider if it's worthwhile to fuzz with data containing undefined values.
In preparation for this, we will provide downstream notifications, including recommendations for ways to achieve the original behavior, when the work is complete.
- depends on
-
SERVER-82374 CanonicalQuery::canonicalize() doesn't need isExplain parameter. It can be obtained from expCtx instead.
- Closed
- is depended on by
-
SERVER-67550 [CQF] Equality to null does not match undefined
- Closed
-
COMPASS-7678 Investigate changes in SERVER-81378: Change classic behavior: equality to null should not match undefined
- Closed
-
TOOLS-3486 Investigate changes in SERVER-81378: Change classic behavior: equality to null should not match undefined
- Closed
- is related to
-
MONGOSH-1887 Warn when silently converting JS undefined to null.
- Open
-
NODE-6440 Add a way to construct BSONUndefined
- Backlog