diff options
Diffstat (limited to 'src/mongo/db/exec/collection_scan.cpp')
-rw-r--r-- | src/mongo/db/exec/collection_scan.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/mongo/db/exec/collection_scan.cpp b/src/mongo/db/exec/collection_scan.cpp index cb8e776eaec..09ea30bbf15 100644 --- a/src/mongo/db/exec/collection_scan.cpp +++ b/src/mongo/db/exec/collection_scan.cpp @@ -42,6 +42,7 @@ #include "mongo/db/exec/scoped_timer.h" #include "mongo/db/exec/working_set.h" #include "mongo/db/exec/working_set_common.h" +#include "mongo/db/record_id_helpers.h" #include "mongo/db/repl/optime.h" #include "mongo/logv2/log.h" #include "mongo/util/fail_point.h" @@ -202,13 +203,13 @@ PlanStage::StageState CollectionScan::doWork(WorkingSetID* out) { if (_lastSeenId.isNull() && _params.direction == CollectionScanParams::FORWARD && _params.minRecord) { // Seek to the approximate start location. - record = _cursor->seekNear(*_params.minRecord); + record = _cursor->seekNear(_params.minRecord->recordId()); } if (_lastSeenId.isNull() && _params.direction == CollectionScanParams::BACKWARD && _params.maxRecord) { // Seek to the approximate start location (at the end). - record = _cursor->seekNear(*_params.maxRecord); + record = _cursor->seekNear(_params.maxRecord->recordId()); } if (!record) { @@ -304,7 +305,7 @@ bool pastEndOfRange(const CollectionScanParams& params, const WorkingSetMember& return false; } - auto endRecord = *params.maxRecord; + auto endRecord = params.maxRecord->recordId(); return member.recordId > endRecord || (member.recordId == endRecord && !shouldIncludeEndRecord(params)); } else { @@ -312,7 +313,7 @@ bool pastEndOfRange(const CollectionScanParams& params, const WorkingSetMember& if (!params.minRecord) { return false; } - auto endRecord = *params.minRecord; + auto endRecord = params.minRecord->recordId(); return member.recordId < endRecord || (member.recordId == endRecord && !shouldIncludeEndRecord(params)); @@ -326,7 +327,7 @@ bool beforeStartOfRange(const CollectionScanParams& params, const WorkingSetMemb return false; } - auto startRecord = *params.minRecord; + auto startRecord = params.minRecord->recordId(); return member.recordId < startRecord || (member.recordId == startRecord && !shouldIncludeStartRecord(params)); } else { @@ -334,7 +335,7 @@ bool beforeStartOfRange(const CollectionScanParams& params, const WorkingSetMemb if (!params.maxRecord) { return false; } - auto startRecord = *params.maxRecord; + auto startRecord = params.maxRecord->recordId(); return member.recordId > startRecord || (member.recordId == startRecord && !shouldIncludeStartRecord(params)); } |