@@ -2795,38 +2795,13 @@ bool checkRangeRead(Node *n, std::span<const uint8_t> begin,
|
||||
}
|
||||
auto [child, v] = getChildAndMaxVersion(n, remaining[0]);
|
||||
if (child == nullptr) {
|
||||
auto c = getChildGeq(n, remaining[0]);
|
||||
if (c != nullptr) {
|
||||
n = c;
|
||||
goto downLeftSpine;
|
||||
} else {
|
||||
n = nextSibling(n);
|
||||
if (n == nullptr) {
|
||||
return true;
|
||||
}
|
||||
goto downLeftSpine;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (child->partialKeyLen > 0) {
|
||||
int cl = std::min<int>(child->partialKeyLen, remaining.size() - 1);
|
||||
int i =
|
||||
longestCommonPrefix(child->partialKey(), remaining.data() + 1, cl);
|
||||
if (i < cl) {
|
||||
auto c = child->partialKey()[i] <=> remaining[1 + i];
|
||||
if (c > 0) {
|
||||
n = child;
|
||||
goto downLeftSpine;
|
||||
} else {
|
||||
n = nextSibling(child);
|
||||
if (n == nullptr) {
|
||||
return true;
|
||||
}
|
||||
goto downLeftSpine;
|
||||
}
|
||||
}
|
||||
// If the partial key is longer than the common prefix (remaining), we
|
||||
// still need to keep searching
|
||||
if (i != child->partialKeyLen) {
|
||||
break;
|
||||
}
|
||||
@@ -2842,12 +2817,6 @@ bool checkRangeRead(Node *n, std::span<const uint8_t> begin,
|
||||
}
|
||||
assert(getSearchPath(arena, n) <=> begin.subspan(0, lcp - remaining.size()) ==
|
||||
0);
|
||||
if (0) {
|
||||
downLeftSpine:
|
||||
for (; !n->entryPresent; n = getFirstChildExists(n)) {
|
||||
}
|
||||
return n->entry.rangeVersion <= readVersion;
|
||||
}
|
||||
|
||||
const int consumed = lcp - remaining.size();
|
||||
assume(consumed >= 0);
|
||||
|
Reference in New Issue
Block a user