Details
-
Bug
-
Resolution: Fixed
-
Major - P3
-
None
-
None
-
None
-
Fully Compatible
-
ALL
-
v7.2, v7.1, v7.0
-
-
QO 2023-11-13, QO 2023-11-27, QO 2023-12-11
Description
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.
Attachments
Issue Links
- is depended on by
-
SERVER-82642 Add isInListData instruction in SBE to enable parameterized InListData to go through SBE isMember logic
-
- Closed
-