diff options
Diffstat (limited to 'src/mongo/db/pipeline/document_source_sample_from_random_cursor.cpp')
-rw-r--r-- | src/mongo/db/pipeline/document_source_sample_from_random_cursor.cpp | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/src/mongo/db/pipeline/document_source_sample_from_random_cursor.cpp b/src/mongo/db/pipeline/document_source_sample_from_random_cursor.cpp index f4b2299c9e8..9fc3b5bf105 100644 --- a/src/mongo/db/pipeline/document_source_sample_from_random_cursor.cpp +++ b/src/mongo/db/pipeline/document_source_sample_from_random_cursor.cpp @@ -52,6 +52,7 @@ DocumentSourceSampleFromRandomCursor::DocumentSourceSampleFromRandomCursor( : DocumentSource(pExpCtx), _size(size), _idField(std::move(idField)), + _seenDocs(pExpCtx->getValueComparator().makeUnorderedValueSet()), _nDocsInColl(nDocsInCollection) {} const char* DocumentSourceSampleFromRandomCursor::getSourceName() const { @@ -76,7 +77,7 @@ double smallestFromSampleOfUniform(PseudoRandom* prng, size_t N) { DocumentSource::GetNextResult DocumentSourceSampleFromRandomCursor::getNext() { pExpCtx->checkForInterrupt(); - if (_seenDocs->size() >= static_cast<size_t>(_size)) + if (_seenDocs.size() >= static_cast<size_t>(_size)) return GetNextResult::makeEOF(); auto nextResult = getNextNonDuplicateDocument(); @@ -114,7 +115,7 @@ DocumentSource::GetNextResult DocumentSourceSampleFromRandomCursor::getNextNonDu << nextInput.getDocument().toString(), !idField.missing()); - if (_seenDocs->insert(std::move(idField)).second) { + if (_seenDocs.insert(std::move(idField)).second) { return nextInput; } LOG(1) << "$sample encountered duplicate document: " @@ -147,10 +148,6 @@ DocumentSource::GetDepsReturn DocumentSourceSampleFromRandomCursor::getDependenc return SEE_NEXT; } -void DocumentSourceSampleFromRandomCursor::doInjectExpressionContext() { - _seenDocs = pExpCtx->getValueComparator().makeUnorderedValueSet(); -} - intrusive_ptr<DocumentSourceSampleFromRandomCursor> DocumentSourceSampleFromRandomCursor::create( const intrusive_ptr<ExpressionContext>& expCtx, long long size, @@ -158,7 +155,6 @@ intrusive_ptr<DocumentSourceSampleFromRandomCursor> DocumentSourceSampleFromRand long long nDocsInCollection) { intrusive_ptr<DocumentSourceSampleFromRandomCursor> source( new DocumentSourceSampleFromRandomCursor(expCtx, size, idField, nDocsInCollection)); - source->injectExpressionContext(expCtx); return source; } } // mongo |