Consume first byte in insert iteration
This commit is contained in:
@@ -2779,21 +2779,22 @@ Node **insert(Node **self, std::span<const uint8_t> key,
|
||||
return self;
|
||||
}
|
||||
|
||||
auto &child = getOrCreateChild(*self, key.front(), writeVersion, tls);
|
||||
int index = key.front();
|
||||
key = key.subspan(1, key.size() - 1);
|
||||
auto &child = getOrCreateChild(*self, index, writeVersion, tls);
|
||||
if (!child) {
|
||||
child = tls->allocate<Node0>(key.size() - 1);
|
||||
child = tls->allocate<Node0>(key.size());
|
||||
child->numChildren = 0;
|
||||
child->entryPresent = false;
|
||||
child->partialKeyLen = key.size() - 1;
|
||||
child->partialKeyLen = key.size();
|
||||
child->parent = *self;
|
||||
child->parentsIndex = key.front();
|
||||
child->parentsIndex = index;
|
||||
setMaxVersion(child, impl, writeVersion);
|
||||
memcpy(child->partialKey(), key.data() + 1, child->partialKeyLen);
|
||||
memcpy(child->partialKey(), key.data(), child->partialKeyLen);
|
||||
return &child;
|
||||
}
|
||||
|
||||
self = &child;
|
||||
key = key.subspan(1, key.size() - 1);
|
||||
|
||||
if ((*self)->partialKeyLen > 0) {
|
||||
consumePartialKey(*self, key, writeVersion, tls);
|
||||
|
Reference in New Issue
Block a user