diff options
-rw-r--r-- | src/mongo/db/exec/shard_filterer_impl.cpp | 22 | ||||
-rw-r--r-- | src/mongo/db/exec/shard_filterer_impl.h | 1 |
2 files changed, 9 insertions, 14 deletions
diff --git a/src/mongo/db/exec/shard_filterer_impl.cpp b/src/mongo/db/exec/shard_filterer_impl.cpp index 577883c1bf6..ebe4f2a52a8 100644 --- a/src/mongo/db/exec/shard_filterer_impl.cpp +++ b/src/mongo/db/exec/shard_filterer_impl.cpp @@ -40,11 +40,8 @@ std::unique_ptr<ShardFilterer> ShardFiltererImpl::clone() const { return std::make_unique<ShardFiltererImpl>(_collectionFilter); } -ShardFiltererImpl::ShardFiltererImpl(ScopedCollectionFilter cf) : _collectionFilter(std::move(cf)) { - if (_collectionFilter.isSharded()) { - _keyPattern = ShardKeyPattern(_collectionFilter.getKeyPattern()); - } -} +ShardFiltererImpl::ShardFiltererImpl(ScopedCollectionFilter cf) + : _collectionFilter(std::move(cf)) {} ShardFilterer::DocumentBelongsResult ShardFiltererImpl::keyBelongsToMeHelper( const BSONObj& shardKey) const { @@ -63,7 +60,8 @@ ShardFilterer::DocumentBelongsResult ShardFiltererImpl::documentBelongsToMe( } if (wsm.hasObj()) { - return keyBelongsToMeHelper(_keyPattern->extractShardKeyFromDoc(wsm.doc.value().toBson())); + return keyBelongsToMeHelper(_collectionFilter.getShardKeyPattern().extractShardKeyFromDoc( + wsm.doc.value().toBson())); } // Transform 'IndexKeyDatum' provided by 'wsm' into 'IndexKeyData' to call // extractShardKeyFromIndexKeyData(). @@ -73,7 +71,8 @@ ShardFilterer::DocumentBelongsResult ShardFiltererImpl::documentBelongsToMe( for (auto&& indexKeyData : wsm.keyData) { indexKeyDataVector.push_back({indexKeyData.keyData, indexKeyData.indexKeyPattern}); } - return keyBelongsToMeHelper(_keyPattern->extractShardKeyFromIndexKeyData(indexKeyDataVector)); + return keyBelongsToMeHelper( + _collectionFilter.getShardKeyPattern().extractShardKeyFromIndexKeyData(indexKeyDataVector)); } ShardFilterer::DocumentBelongsResult ShardFiltererImpl::documentBelongsToMe( @@ -81,19 +80,16 @@ ShardFilterer::DocumentBelongsResult ShardFiltererImpl::documentBelongsToMe( if (!_collectionFilter.isSharded()) { return DocumentBelongsResult::kBelongs; } - return keyBelongsToMeHelper(_keyPattern->extractShardKeyFromDoc(doc)); + return keyBelongsToMeHelper(_collectionFilter.getShardKeyPattern().extractShardKeyFromDoc(doc)); } const KeyPattern& ShardFiltererImpl::getKeyPattern() const { - invariant(_keyPattern); - return _keyPattern->getKeyPattern(); + return _collectionFilter.getShardKeyPattern().getKeyPattern(); } size_t ShardFiltererImpl::getApproximateSize() const { // _collectionFilter contains a pointer to metadata but it doesn't own this metadata, so we // don't account for the size of the metadata here. - auto size = sizeof(ShardFiltererImpl); - size += _keyPattern ? _keyPattern->getApproximateSize() - sizeof(ShardKeyPattern) : 0; - return size; + return sizeof(ShardFiltererImpl); } } // namespace mongo diff --git a/src/mongo/db/exec/shard_filterer_impl.h b/src/mongo/db/exec/shard_filterer_impl.h index f50428d3768..f974f9da5ec 100644 --- a/src/mongo/db/exec/shard_filterer_impl.h +++ b/src/mongo/db/exec/shard_filterer_impl.h @@ -60,6 +60,5 @@ private: DocumentBelongsResult keyBelongsToMeHelper(const BSONObj& doc) const; ScopedCollectionFilter _collectionFilter; - boost::optional<ShardKeyPattern> _keyPattern; }; } // namespace mongo |