More unnesting
This commit is contained in:
@@ -967,10 +967,7 @@ bool checkRangeStartsWith(Node *n, std::span<const uint8_t> key, int begin,
|
||||
}
|
||||
|
||||
int c = getChildGeq(n, remaining[0]);
|
||||
if (c == remaining[0]) {
|
||||
n = getChildExists(n, c);
|
||||
remaining = remaining.subspan(1, remaining.size() - 1);
|
||||
} else {
|
||||
if (c != remaining[0]) {
|
||||
if (c >= 0) {
|
||||
n = getChildExists(n, c);
|
||||
goto downLeftSpine;
|
||||
@@ -980,6 +977,9 @@ bool checkRangeStartsWith(Node *n, std::span<const uint8_t> key, int begin,
|
||||
}
|
||||
}
|
||||
|
||||
n = getChildExists(n, c);
|
||||
remaining = remaining.subspan(1, remaining.size() - 1);
|
||||
|
||||
if (n->partialKeyLen > 0) {
|
||||
int commonLen = std::min<int>(n->partialKeyLen, remaining.size());
|
||||
int i = longestCommonPrefixPartialKey(n->partialKey, remaining.data(),
|
||||
@@ -1065,11 +1065,7 @@ struct CheckRangeLeftSide {
|
||||
}
|
||||
|
||||
int c = getChildGeq(n, remaining[0]);
|
||||
if (c == remaining[0]) {
|
||||
n = getChildExists(n, c);
|
||||
remaining = remaining.subspan(1, remaining.size() - 1);
|
||||
++searchPathLen;
|
||||
} else {
|
||||
if (c != remaining[0]) {
|
||||
if (c >= 0) {
|
||||
if (searchPathLen < prefixLen) {
|
||||
n = getChildExists(n, c);
|
||||
@@ -1084,6 +1080,10 @@ struct CheckRangeLeftSide {
|
||||
}
|
||||
}
|
||||
|
||||
n = getChildExists(n, c);
|
||||
remaining = remaining.subspan(1, remaining.size() - 1);
|
||||
++searchPathLen;
|
||||
|
||||
if (n->partialKeyLen > 0) {
|
||||
int commonLen = std::min<int>(n->partialKeyLen, remaining.size());
|
||||
int i = longestCommonPrefix(n->partialKey, remaining.data(), commonLen);
|
||||
@@ -1206,11 +1206,7 @@ struct CheckRangeRightSide {
|
||||
}
|
||||
|
||||
int c = getChildGeq(n, remaining[0]);
|
||||
if (c == remaining[0]) {
|
||||
n = getChildExists(n, c);
|
||||
remaining = remaining.subspan(1, remaining.size() - 1);
|
||||
++searchPathLen;
|
||||
} else {
|
||||
if (c != remaining[0]) {
|
||||
if (c >= 0) {
|
||||
n = getChildExists(n, c);
|
||||
return downLeftSpine();
|
||||
@@ -1219,6 +1215,10 @@ struct CheckRangeRightSide {
|
||||
}
|
||||
}
|
||||
|
||||
n = getChildExists(n, c);
|
||||
remaining = remaining.subspan(1, remaining.size() - 1);
|
||||
++searchPathLen;
|
||||
|
||||
if (n->partialKeyLen > 0) {
|
||||
int commonLen = std::min<int>(n->partialKeyLen, remaining.size());
|
||||
int i = longestCommonPrefixPartialKey(n->partialKey, remaining.data(),
|
||||
@@ -1574,27 +1574,28 @@ struct FirstGeqStepwise {
|
||||
// Not being done implies that n is not the firstGeq
|
||||
bool step() {
|
||||
switch (phase) {
|
||||
case Search:
|
||||
case Search: {
|
||||
if (remaining.size() == 0) {
|
||||
int c = getChildGeq(n, 0);
|
||||
assert(c >= 0);
|
||||
n = getChildExists(n, c);
|
||||
return downLeftSpine();
|
||||
} else {
|
||||
int c = getChildGeq(n, remaining[0]);
|
||||
if (c == remaining[0]) {
|
||||
}
|
||||
|
||||
int c = getChildGeq(n, remaining[0]);
|
||||
if (c != remaining[0]) {
|
||||
if (c >= 0) {
|
||||
n = getChildExists(n, c);
|
||||
remaining = remaining.subspan(1, remaining.size() - 1);
|
||||
return downLeftSpine();
|
||||
} else {
|
||||
if (c >= 0) {
|
||||
n = getChildExists(n, c);
|
||||
return downLeftSpine();
|
||||
} else {
|
||||
n = nextSibling(n);
|
||||
return downLeftSpine();
|
||||
}
|
||||
n = nextSibling(n);
|
||||
return downLeftSpine();
|
||||
}
|
||||
}
|
||||
|
||||
n = getChildExists(n, c);
|
||||
remaining = remaining.subspan(1, remaining.size() - 1);
|
||||
|
||||
if (n->partialKeyLen > 0) {
|
||||
int commonLen = std::min<int>(n->partialKeyLen, remaining.size());
|
||||
int i = longestCommonPrefixPartialKey(n->partialKey, remaining.data(),
|
||||
@@ -1618,6 +1619,7 @@ struct FirstGeqStepwise {
|
||||
return downLeftSpine();
|
||||
}
|
||||
}
|
||||
}
|
||||
[[fallthrough]];
|
||||
case Init:
|
||||
phase = Search;
|
||||
|
Reference in New Issue
Block a user