summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/document_source_sequential_document_cache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/pipeline/document_source_sequential_document_cache.cpp')
-rw-r--r--src/mongo/db/pipeline/document_source_sequential_document_cache.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/mongo/db/pipeline/document_source_sequential_document_cache.cpp b/src/mongo/db/pipeline/document_source_sequential_document_cache.cpp
index a91be27fdd7..33c32f096b3 100644
--- a/src/mongo/db/pipeline/document_source_sequential_document_cache.cpp
+++ b/src/mongo/db/pipeline/document_source_sequential_document_cache.cpp
@@ -118,13 +118,14 @@ Pipeline::SourceContainer::iterator DocumentSourceSequentialDocumentCache::doOpt
DepsTracker deps(DepsTracker::kNoMetadata);
// Iterate through the pipeline stages until we find one which cannot be cached.
- // A stage cannot be cached if it either: 1. depends on a variable defined in this scope, or
- // 2. generates random numbers.
+ // A stage cannot be cached if it either:
+ // 1. does not support dependency tracking, and may thus require the full object and metadata.
+ // 2. depends on a variable defined in this scope, or
+ // 3. generates random numbers.
DocumentSource* lastPtr = nullptr;
for (; prefixSplit != container->end(); ++prefixSplit) {
- (*prefixSplit)->getDependencies(&deps);
-
- if (deps.hasVariableReferenceTo(varIDs) || deps.needRandomGenerator) {
+ if (((*prefixSplit)->getDependencies(&deps) == DepsTracker::State::NOT_SUPPORTED) ||
+ deps.hasVariableReferenceTo(varIDs) || deps.needRandomGenerator) {
break;
}