SERVER-114755 Handle endianness in control block generation in binary_reopen_test (#44957)

Co-authored-by: Benjamin Pearce <benjamin.pearce@mongodb.com>
GitOrigin-RevId: d35729b3aa5f642270ba23cc99f8a0487bf09904
This commit is contained in:
Binh Vo 2025-12-09 14:23:58 -05:00 committed by MongoDB Bot
parent f3f6fd6173
commit 9ef9154b3c
1 changed files with 5 additions and 1 deletions

View File

@ -29,6 +29,7 @@
#include "mongo/bson/column/binary_reopen.h" #include "mongo/bson/column/binary_reopen.h"
#include "mongo/base/data_view.h"
#include "mongo/bson/column/simple8b.h" #include "mongo/bson/column/simple8b.h"
#include "mongo/bson/column/simple8b_builder.h" #include "mongo/bson/column/simple8b_builder.h"
#include "mongo/unittest/unittest.h" #include "mongo/unittest/unittest.h"
@ -151,7 +152,10 @@ const char* BinaryReopenTest::control(std::vector<uint64_t> blocks, uint8_t scal
// Write control byte with out scale factor and number of simple8b blocks. // Write control byte with out scale factor and number of simple8b blocks.
*c.get() = kControlByteForScaleIndex[scaleIndex] | (blocks.size() - 1); *c.get() = kControlByteForScaleIndex[scaleIndex] | (blocks.size() - 1);
// Copy simple8b data // Copy simple8b data
memcpy(c.get() + 1, blocks.data(), blocks.size() * sizeof(uint64_t)); auto dv = DataView(c.get() + 1);
for (size_t i = 0; i < blocks.size(); ++i) {
dv.write<LittleEndian<uint64_t>>(blocks[i], i * sizeof(uint64_t));
}
auto ptr = c.get(); auto ptr = c.get();
// Store internally to simplify memory management in the tests // Store internally to simplify memory management in the tests
_ownedControls.push_front(std::move(c)); _ownedControls.push_front(std::move(c));