Move checkRangeStartsWith out of finishCheckRangeRead

This is incrementally closer to where we want to be I think
This commit is contained in:
2024-10-11 17:52:04 -07:00
parent 0de85ecda0
commit b0bc68a14e

View File

@@ -2673,17 +2673,7 @@ bool finishCheckRangeRead(int lcp, Node *n, std::span<const uint8_t> begin,
std::span<const uint8_t> end,
InternalVersionT readVersion, ReadContext *tls) {
if (lcp == int(begin.size())) {
return checkRangeRightSide(n, end, lcp, readVersion, tls);
}
// This makes it safe to check maxVersion within checkRangeLeftSide. If this
// were false, then we would have returned above since lcp == begin.size().
assert(!(n->parent == nullptr && begin.size() == 0));
return checkRangeStartsWith(n, begin.subspan(0, lcp), begin[lcp], end[lcp],
readVersion, tls) &&
checkRangeLeftSide(n, begin, lcp + 1, readVersion, tls) &&
return checkRangeLeftSide(n, begin, lcp + 1, readVersion, tls) &&
checkRangeRightSide(n, end, lcp + 1, readVersion, tls);
}
@@ -3462,6 +3452,25 @@ FLATTEN PRESERVE_NONE void done_common_prefix_iter(CheckJob *job,
job->end = job->end.subspan(consumed, int(job->end.size()) - consumed);
job->lcp -= consumed;
if (job->lcp == int(job->begin.size())) {
*job->result = checkRangeRightSide(job->n, job->end, job->lcp,
job->readVersion, context->tls)
? ConflictSet::Commit
: ConflictSet::Conflict;
MUSTTAIL return complete(job, context);
}
// This makes it safe to check maxVersion within checkRangeLeftSide. If this
// were false, then we would have returned above since lcp == begin.size().
assert(!(job->n->parent == nullptr && job->begin.size() == 0));
if (!checkRangeStartsWith(job->n, job->begin.subspan(0, job->lcp),
job->begin[job->lcp], job->end[job->lcp],
job->readVersion, context->tls)) {
*job->result = ConflictSet::Conflict;
MUSTTAIL return complete(job, context);
}
*job->result = finishCheckRangeRead(job->lcp, job->n, job->begin, job->end,
job->readVersion, context->tls)
? ConflictSet::Commit