diff options
author | Nikita Lapkov <nikita.lapkov@mongodb.com> | 2021-04-26 16:03:55 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-05-21 09:41:14 +0000 |
commit | c35c11a7aa7fd7c585268d05204cdb00efbb1852 (patch) | |
tree | 7c9308282f8beda0ba23a30c61c21a6242c3caa1 /src/mongo/db/storage | |
parent | eae62a64d0306f761dc110b2148baa4fd1fff126 (diff) | |
download | mongo-c35c11a7aa7fd7c585268d05204cdb00efbb1852.tar.gz |
SERVER-55601 Improve performance of Queries.CoveredBlockingSort benchmark in SBE
Diffstat (limited to 'src/mongo/db/storage')
-rw-r--r-- | src/mongo/db/storage/key_string.cpp | 12 | ||||
-rw-r--r-- | src/mongo/db/storage/key_string.h | 2 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/mongo/db/storage/key_string.cpp b/src/mongo/db/storage/key_string.cpp index f5cb04f3b20..fd79e6a9ada 100644 --- a/src/mongo/db/storage/key_string.cpp +++ b/src/mongo/db/storage/key_string.cpp @@ -2443,8 +2443,11 @@ Discriminator decodeDiscriminator(const char* buffer, return Discriminator::kInclusive; } -BSONObj toBsonSafe(const char* buffer, size_t len, Ordering ord, const TypeBits& typeBits) { - BSONObjBuilder builder; +void toBsonSafe(const char* buffer, + size_t len, + Ordering ord, + const TypeBits& typeBits, + BSONObjBuilder& builder) { BufReader reader(buffer, len); TypeBits::Reader typeBitsReader(typeBits); for (int i = 0; reader.remaining(); i++) { @@ -2462,6 +2465,11 @@ BSONObj toBsonSafe(const char* buffer, size_t len, Ordering ord, const TypeBits& break; toBsonValue(ctype, &reader, &typeBitsReader, invert, typeBits.version, &(builder << ""), 1); } +} + +BSONObj toBsonSafe(const char* buffer, size_t len, Ordering ord, const TypeBits& typeBits) { + BSONObjBuilder builder; + toBsonSafe(buffer, len, ord, typeBits, builder); return builder.obj(); } diff --git a/src/mongo/db/storage/key_string.h b/src/mongo/db/storage/key_string.h index 57d16141241..68fc1cdeb53 100644 --- a/src/mongo/db/storage/key_string.h +++ b/src/mongo/db/storage/key_string.h @@ -933,6 +933,8 @@ size_t getKeySize(const char* buffer, size_t len, Ordering ord, const TypeBits& BSONObj toBson(StringData data, Ordering ord, const TypeBits& types); BSONObj toBson(const char* buffer, size_t len, Ordering ord, const TypeBits& types) noexcept; BSONObj toBsonSafe(const char* buffer, size_t len, Ordering ord, const TypeBits& types); +void toBsonSafe( + const char* buffer, size_t len, Ordering ord, const TypeBits& types, BSONObjBuilder& builder); Discriminator decodeDiscriminator(const char* buffer, size_t len, Ordering ord, |