Call consumePartialKey from getOrCreateChild
This commit is contained in:
@@ -1189,9 +1189,8 @@ Node *&getOrCreateChild(Node *&self, std::span<const uint8_t> &key,
|
|||||||
auto *self3 = static_cast<Node3 *>(self);
|
auto *self3 = static_cast<Node3 *>(self);
|
||||||
int i = getNodeIndex(self3, index);
|
int i = getNodeIndex(self3, index);
|
||||||
if (i >= 0) {
|
if (i >= 0) {
|
||||||
if (self3->children[i]->partialKeyLen == 0) {
|
consumePartialKey(self3->children[i], key, newMaxVersion, tls);
|
||||||
self3->childMaxVersion[i] = newMaxVersion;
|
self3->childMaxVersion[i] = newMaxVersion;
|
||||||
}
|
|
||||||
return self3->children[i];
|
return self3->children[i];
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
@@ -1199,9 +1198,8 @@ Node *&getOrCreateChild(Node *&self, std::span<const uint8_t> &key,
|
|||||||
auto *self16 = static_cast<Node16 *>(self);
|
auto *self16 = static_cast<Node16 *>(self);
|
||||||
int i = getNodeIndex(self16, index);
|
int i = getNodeIndex(self16, index);
|
||||||
if (i >= 0) {
|
if (i >= 0) {
|
||||||
if (self16->children[i]->partialKeyLen == 0) {
|
consumePartialKey(self16->children[i], key, newMaxVersion, tls);
|
||||||
self16->childMaxVersion[i] = newMaxVersion;
|
self16->childMaxVersion[i] = newMaxVersion;
|
||||||
}
|
|
||||||
return self16->children[i];
|
return self16->children[i];
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
@@ -1209,23 +1207,21 @@ Node *&getOrCreateChild(Node *&self, std::span<const uint8_t> &key,
|
|||||||
auto *self48 = static_cast<Node48 *>(self);
|
auto *self48 = static_cast<Node48 *>(self);
|
||||||
int secondIndex = self48->index[index];
|
int secondIndex = self48->index[index];
|
||||||
if (secondIndex >= 0) {
|
if (secondIndex >= 0) {
|
||||||
if (self48->children[secondIndex]->partialKeyLen == 0) {
|
consumePartialKey(self48->children[secondIndex], key, newMaxVersion, tls);
|
||||||
self48->childMaxVersion[secondIndex] = newMaxVersion;
|
self48->childMaxVersion[secondIndex] = newMaxVersion;
|
||||||
self48->maxOfMax[secondIndex >> Node48::kMaxOfMaxShift] =
|
self48->maxOfMax[secondIndex >> Node48::kMaxOfMaxShift] =
|
||||||
std::max(self48->maxOfMax[secondIndex >> Node48::kMaxOfMaxShift],
|
std::max(self48->maxOfMax[secondIndex >> Node48::kMaxOfMaxShift],
|
||||||
newMaxVersion);
|
newMaxVersion);
|
||||||
}
|
|
||||||
return self48->children[secondIndex];
|
return self48->children[secondIndex];
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case Type_Node256: {
|
case Type_Node256: {
|
||||||
auto *self256 = static_cast<Node256 *>(self);
|
auto *self256 = static_cast<Node256 *>(self);
|
||||||
if (auto &result = self256->children[index]; result != nullptr) {
|
if (auto &result = self256->children[index]; result != nullptr) {
|
||||||
if (self256->children[index]->partialKeyLen == 0) {
|
consumePartialKey(result, key, newMaxVersion, tls);
|
||||||
self256->childMaxVersion[index] = newMaxVersion;
|
self256->childMaxVersion[index] = newMaxVersion;
|
||||||
self256->maxOfMax[index >> Node256::kMaxOfMaxShift] = std::max(
|
self256->maxOfMax[index >> Node256::kMaxOfMaxShift] = std::max(
|
||||||
self256->maxOfMax[index >> Node256::kMaxOfMaxShift], newMaxVersion);
|
self256->maxOfMax[index >> Node256::kMaxOfMaxShift], newMaxVersion);
|
||||||
}
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
@@ -2815,10 +2811,6 @@ Node **insert(Node **self, std::span<const uint8_t> key,
|
|||||||
}
|
}
|
||||||
|
|
||||||
self = &child;
|
self = &child;
|
||||||
|
|
||||||
consumePartialKey(*self, key, writeVersion, tls);
|
|
||||||
assert(maxVersion(*self, impl) <= writeVersion);
|
|
||||||
setMaxVersion(*self, impl, writeVersion);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user