summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeert Bosch <geert.bosch@mongodb.com>2019-10-23 18:54:38 +0000
committerevergreen <evergreen@mongodb.com>2019-10-23 18:54:38 +0000
commitb11ca51de9765599b84e68156aedb26e27ef9b02 (patch)
tree167e6768d12e179d77de95ad673dee92818cffb1
parent9418c83c796ae1e2704116558b8544cbe386a243 (diff)
downloadmongo-b11ca51de9765599b84e68156aedb26e27ef9b02.tar.gz
SERVER-44104 Avoid getKeySize for WiredTigerIndexCursorBase::nextKeyString on _id indexes
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_index.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_index.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_index.cpp
index 8cfbac8622e..45f3f028766 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_index.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_index.cpp
@@ -1163,9 +1163,10 @@ protected:
// and timestamp unsafe unique indexes. The contract of this function is to always return a
// KeyString with a RecordId, so append one if it does not exists already.
if (_idx.unique() &&
- _key.getSize() ==
- KeyString::getKeySize(
- _key.getBuffer(), _key.getSize(), _idx.getOrdering(), _typeBits)) {
+ (_idx.isIdIndex() ||
+ _key.getSize() ==
+ KeyString::getKeySize(
+ _key.getBuffer(), _key.getSize(), _idx.getOrdering(), _typeBits))) {
// Create a copy of _key with a RecordId. Because _key is used during cursor restore(),
// appending the RecordId would cause the cursor to be repositioned incorrectly.
KeyString::Builder keyWithRecordId(_key);