summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/pipeline_d.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/pipeline/pipeline_d.cpp')
-rw-r--r--src/mongo/db/pipeline/pipeline_d.cpp12
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())) {