-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Fully Compatible
-
ALL
-
v7.2, v7.1, v7.0
-
-
QO 2023-11-13, QO 2023-11-27, QO 2023-12-11
If there are predicates over the same path in $or, they are translated into $in during match expression optimization. It also provides deduplication, so for the query above, we'd get a.b $in [ 1.0 ].
Currently, ABT translation and optimization transforms a singleton $in array into an Operations::Eq and extracts the value from the array. However, parameter binding in SBE stores all $in arrays as inListData (regardless of the size), and expects to use isMember to perform matching. We cannot compare an integer in a query predicate to an InListData member containing that element, so no matches are returned in the above case.
Proposed Fix: In Bonsai, bind a single value when parameterizing $in’s with singleton lists in bind_input_params.
- is depended on by
-
SERVER-82642 Add isInListData instruction in SBE to enable parameterized InListData to go through SBE isMember logic
- Closed