summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mongo/db/exec/shard_filterer_impl.cpp22
-rw-r--r--src/mongo/db/exec/shard_filterer_impl.h1
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