diff options
Diffstat (limited to 'src/mongo/db/pipeline/pipeline_d.cpp')
-rw-r--r-- | src/mongo/db/pipeline/pipeline_d.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/mongo/db/pipeline/pipeline_d.cpp b/src/mongo/db/pipeline/pipeline_d.cpp index 75fb836c319..33043acde9e 100644 --- a/src/mongo/db/pipeline/pipeline_d.cpp +++ b/src/mongo/db/pipeline/pipeline_d.cpp @@ -627,6 +627,10 @@ StatusWith<std::unique_ptr<PlanExecutor, PlanExecutor::Deleter>> PipelineD::prep plannerOpts |= QueryPlannerParams::NO_UNCOVERED_PROJECTIONS; } + if (expCtx->needsMerge && expCtx->tailableMode == TailableMode::kTailableAndAwaitData) { + plannerOpts |= QueryPlannerParams::TRACK_LATEST_OPLOG_TS; + } + const BSONObj emptyProjection; const BSONObj metaSortProjection = BSON("$meta" << "sortKey"); @@ -781,6 +785,14 @@ void PipelineD::addCursorSource(Collection* collection, pipeline->optimizePipeline(); } +Timestamp PipelineD::getLatestOplogTimestamp(const Pipeline* pipeline) { + if (auto docSourceCursor = + dynamic_cast<DocumentSourceCursor*>(pipeline->_sources.front().get())) { + return docSourceCursor->getLatestOplogTimestamp(); + } + return Timestamp(); +} + std::string PipelineD::getPlanSummaryStr(const Pipeline* pPipeline) { if (auto docSourceCursor = dynamic_cast<DocumentSourceCursor*>(pPipeline->_sources.front().get())) { |