diff options
Diffstat (limited to 'src/mongo/db/exec/sbe/stages/scan.cpp')
-rw-r--r-- | src/mongo/db/exec/sbe/stages/scan.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/mongo/db/exec/sbe/stages/scan.cpp b/src/mongo/db/exec/sbe/stages/scan.cpp index 7556cd8ef4b..2b7b62240d9 100644 --- a/src/mongo/db/exec/sbe/stages/scan.cpp +++ b/src/mongo/db/exec/sbe/stages/scan.cpp @@ -32,6 +32,7 @@ #include "mongo/db/exec/sbe/stages/scan.h" #include "mongo/db/exec/sbe/expressions/expression.h" +#include "mongo/db/exec/trial_run_tracker.h" #include "mongo/db/repl/replication_coordinator.h" #include "mongo/util/str.h" @@ -45,7 +46,6 @@ ScanStage::ScanStage(const NamespaceStringOrUUID& name, boost::optional<value::SlotId> seekKeySlot, bool forward, PlanYieldPolicy* yieldPolicy, - TrialRunProgressTracker* tracker, PlanNodeId nodeId, ScanOpenCallback openCallback) : PlanStage(seekKeySlot ? "seek"_sd : "scan"_sd, yieldPolicy, nodeId), @@ -56,7 +56,6 @@ ScanStage::ScanStage(const NamespaceStringOrUUID& name, _vars(std::move(vars)), _seekKeySlot(seekKeySlot), _forward(forward), - _tracker(tracker), _openCallback(openCallback) { invariant(_fields.size() == _vars.size()); invariant(!_seekKeySlot || _forward); @@ -71,7 +70,6 @@ std::unique_ptr<PlanStage> ScanStage::clone() const { _seekKeySlot, _forward, _yieldPolicy, - _tracker, _commonStats.nodeId, _openCallback); } @@ -151,12 +149,20 @@ void ScanStage::doDetachFromOperationContext() { } } -void ScanStage::doAttachFromOperationContext(OperationContext* opCtx) { +void ScanStage::doAttachToOperationContext(OperationContext* opCtx) { if (_cursor) { _cursor->reattachToOperationContext(opCtx); } } +void ScanStage::doDetachFromTrialRunTracker() { + _tracker = nullptr; +} + +void ScanStage::doAttachToTrialRunTracker(TrialRunTracker* tracker) { + _tracker = tracker; +} + void ScanStage::open(bool reOpen) { _commonStats.opens++; invariant(_opCtx); @@ -251,7 +257,7 @@ PlanState ScanStage::getNext() { } } - if (_tracker && _tracker->trackProgress<TrialRunProgressTracker::kNumReads>(1)) { + if (_tracker && _tracker->trackProgress<TrialRunTracker::kNumReads>(1)) { // If we're collecting execution stats during multi-planning and reached the end of the // trial period (trackProgress() will return 'true' in this case), then we can reset the // tracker. Note that a trial period is executed only once per a PlanStge tree, and once @@ -448,7 +454,7 @@ void ParallelScanStage::doDetachFromOperationContext() { } } -void ParallelScanStage::doAttachFromOperationContext(OperationContext* opCtx) { +void ParallelScanStage::doAttachToOperationContext(OperationContext* opCtx) { if (_cursor) { _cursor->reattachToOperationContext(opCtx); } |