Move checkRangeStartsWith out of finishCheckRangeRead
This is incrementally closer to where we want to be I think
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user