-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Querying
-
Fully Compatible
-
ALL
-
Query 2020-09-07, Query 2020-09-21, Query 2020-10-05, Query 2020-10-19
-
0
In various places in the codebase, we store bool's and int32_t's inside sbe::value::Value's and retrieve bool's / int32_t's from sbe::value::Value's in different ways, and this is causing problems on big endian systems like s390x. For an example of where we've been bitten by this, see https://jira.mongodb.org/browse/BF-18537 .
First, we need to decide on the encoding we want to use when storing a bool or an int32_t into an sbe::value::Value, both for little-endian systems and for big-endian systems. Based on that decision, we can then identify which places in the code are storing/retrieving bool's and int32_t's correctly and which places in the code are storing/retrieving bool's and int32_t's incorrectly. Finally, we can identify the pitfalls that exist where developers might accidentally use the wrong ways to store/retrieve bool's and int32_t's, and what we can do to make it harder for developers to accidentally make these mistakes.
- is related to
-
SERVER-55777 Fix endianness bugs in mongo/db/exec/sbe/values/slot.cpp
- Closed
- related to
-
SERVER-50893 [SBE] Temporarily disable core_sbe and aggregation_sbe suites on s390x build variants
- Closed