Use longestCommonPrefixPartialKey in SearchStepWise

This commit is contained in:
2024-02-22 15:41:39 -08:00
parent 4c3e7aef30
commit c16feda9f8

View File

@@ -764,27 +764,21 @@ struct SearchStepWise {
bool step() {
if (remaining.size() == 0) {
return true;
} else {
auto *child = getChild(n, remaining[0]);
if (child != nullptr) {
int i = 0;
for (; i < child->partialKeyLen; ++i) {
if (!(i + 1 < int(remaining.size()) &&
remaining[i + 1] == child->partialKey[i])) {
break;
}
}
if (i != child->partialKeyLen) {
return true;
}
n = child;
remaining =
remaining.subspan(1 + child->partialKeyLen,
remaining.size() - (1 + child->partialKeyLen));
} else {
return true;
}
}
auto *child = getChild(n, remaining[0]);
if (child == nullptr) {
return true;
}
int cl = std::min<int>(child->partialKeyLen, remaining.size() - 1);
int i = longestCommonPrefixPartialKey(child->partialKey,
remaining.data() + 1, cl);
if (i != child->partialKeyLen) {
return true;
}
n = child;
remaining =
remaining.subspan(1 + child->partialKeyLen,
remaining.size() - (1 + child->partialKeyLen));
return false;
}
};