summaryrefslogtreecommitdiff
path: root/src/mongo/db/exec/shard_filterer_impl.cpp
diff options
context:
space:
mode:
authorSergi Mateo Bellido <sergi.mateo-bellido@mongodb.com>2022-02-10 14:57:17 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-02-10 15:24:54 +0000
commit541b8978175bd3bae5c2813691030c9f6563be1f (patch)
tree6ff2fd8d3417e25d9fcce12deb60627e55c41061 /src/mongo/db/exec/shard_filterer_impl.cpp
parenta1d291fdaf2389e9b5999e759a8486bd344ff1cb (diff)
downloadmongo-541b8978175bd3bae5c2813691030c9f6563be1f.tar.gz
SERVER-63474 Do not recompute the ShardKeyPattern
Diffstat (limited to 'src/mongo/db/exec/shard_filterer_impl.cpp')
-rw-r--r--src/mongo/db/exec/shard_filterer_impl.cpp22
1 files changed, 9 insertions, 13 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