summaryrefslogtreecommitdiff
path: root/src/mongo/db/query/sbe_stage_builder_coll_scan.cpp
diff options
context:
space:
mode:
authorMartin Neupauer <martin.neupauer@mongodb.com>2022-01-14 19:17:03 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-01-14 20:50:30 +0000
commit5a86a7dfff7743a7ac2dc9484fc854351c253f69 (patch)
tree101c6c32d2c2e9d2749b3b08727ca76a765a6f01 /src/mongo/db/query/sbe_stage_builder_coll_scan.cpp
parent94d5eb0aba620a65439f0252377d74dd7683f485 (diff)
downloadmongo-5a86a7dfff7743a7ac2dc9484fc854351c253f69.tar.gz
SERVER-61630 support a string form of RecordId
Diffstat (limited to 'src/mongo/db/query/sbe_stage_builder_coll_scan.cpp')
-rw-r--r--src/mongo/db/query/sbe_stage_builder_coll_scan.cpp14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/mongo/db/query/sbe_stage_builder_coll_scan.cpp b/src/mongo/db/query/sbe_stage_builder_coll_scan.cpp
index 1ae5d110a24..d2102cea044 100644
--- a/src/mongo/db/query/sbe_stage_builder_coll_scan.cpp
+++ b/src/mongo/db/query/sbe_stage_builder_coll_scan.cpp
@@ -268,16 +268,15 @@ std::pair<std::unique_ptr<sbe::PlanStage>, PlanStageSlots> generateOptimizedOplo
auto resumeRecordIdSlot = state.env->getSlot("resumeRecordId"_sd);
return {resumeRecordIdSlot, makeVariable(resumeRecordIdSlot)};
} else if (csn->resumeAfterRecordId) {
- return {
- state.slotId(),
- makeConstant(sbe::value::TypeTags::RecordId, csn->resumeAfterRecordId->getLong())};
+ auto [tag, val] = sbe::value::makeCopyRecordId(*csn->resumeAfterRecordId);
+ return {state.slotId(), makeConstant(tag, val)};
} else if (csn->minRecord) {
auto cursor = collection->getRecordStore()->getCursor(state.opCtx);
auto startRec = cursor->seekNear(*csn->minRecord);
if (startRec) {
LOGV2_DEBUG(205841, 3, "Using direct oplog seek");
- return {state.slotId(),
- makeConstant(sbe::value::TypeTags::RecordId, startRec->id.getLong())};
+ auto [tag, val] = sbe::value::makeCopyRecordId(startRec->id);
+ return {state.slotId(), makeConstant(tag, val)};
}
}
return {};
@@ -550,9 +549,8 @@ std::pair<std::unique_ptr<sbe::PlanStage>, PlanStageSlots> generateGenericCollSc
auto [seekRecordIdSlot, seekRecordIdExpression] =
[&]() -> std::pair<boost::optional<sbe::value::SlotId>, std::unique_ptr<sbe::EExpression>> {
if (csn->resumeAfterRecordId) {
- return {
- state.slotId(),
- makeConstant(sbe::value::TypeTags::RecordId, csn->resumeAfterRecordId->getLong())};
+ auto [tag, val] = sbe::value::makeCopyRecordId(*csn->resumeAfterRecordId);
+ return {state.slotId(), makeConstant(tag, val)};
} else if (isTailableResumeBranch) {
auto resumeRecordIdSlot = state.env->getSlot("resumeRecordId"_sd);
return {resumeRecordIdSlot, makeVariable(resumeRecordIdSlot)};