summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage
diff options
context:
space:
mode:
authorNikita Lapkov <nikita.lapkov@mongodb.com>2021-04-26 16:03:55 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-05-21 09:41:14 +0000
commitc35c11a7aa7fd7c585268d05204cdb00efbb1852 (patch)
tree7c9308282f8beda0ba23a30c61c21a6242c3caa1 /src/mongo/db/storage
parenteae62a64d0306f761dc110b2148baa4fd1fff126 (diff)
downloadmongo-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.cpp12
-rw-r--r--src/mongo/db/storage/key_string.h2
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,