Use longestCommonPrefixPartialKey in insert

This commit is contained in:
2024-02-22 14:46:52 -08:00
parent 608b4fb6c7
commit 505c060a28

View File

@@ -1389,10 +1389,10 @@ bool checkRangeRead(Node *n, std::span<const uint8_t> begin,
for (;;) {
auto &self = *self_;
// Handle an existing partial key
int partialKeyIndex = 0;
for (; partialKeyIndex < self->partialKeyLen; ++partialKeyIndex) {
if (partialKeyIndex == int(key.size()) ||
self->partialKey[partialKeyIndex] != key[partialKeyIndex]) {
int commonLen = std::min<int>(self->partialKeyLen, key.size());
int partialKeyIndex =
longestCommonPrefixPartialKey(self->partialKey, key.data(), commonLen);
if (partialKeyIndex < self->partialKeyLen) {
auto *old = self;
self = allocators->node4.allocate();
self->maxVersion = old->maxVersion;
@@ -1409,8 +1409,6 @@ bool checkRangeRead(Node *n, std::span<const uint8_t> begin,
memmove(old->partialKey, old->partialKey + partialKeyIndex + 1,
old->partialKeyLen - (partialKeyIndex + 1));
old->partialKeyLen -= partialKeyIndex + 1;
break;
}
}
key = key.subspan(partialKeyIndex, key.size() - partialKeyIndex);