summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeert Bosch <geert.bosch@mongodb.com>2019-10-22 16:51:40 +0000
committerevergreen <evergreen@mongodb.com>2019-10-22 16:51:40 +0000
commit48706d5d2779e16e4f4183bc0fd6343510cb17e0 (patch)
treeff6b794cf384287fe42c22825d51b68621cd58c8
parentf21fbad4a68fb9447a26c355a006e387b9eccd7b (diff)
downloadmongo-48706d5d2779e16e4f4183bc0fd6343510cb17e0.tar.gz
SERVER-44098 Pass only number of keys in shouldMarkIndexAsMultiKey
-rw-r--r--src/mongo/db/catalog/validate_adaptor.cpp2
-rw-r--r--src/mongo/db/index/index_access_method.cpp10
-rw-r--r--src/mongo/db/index/index_access_method.h4
-rw-r--r--src/mongo/db/index/wildcard_access_method.cpp2
-rw-r--r--src/mongo/db/index/wildcard_access_method.h2
5 files changed, 10 insertions, 10 deletions
diff --git a/src/mongo/db/catalog/validate_adaptor.cpp b/src/mongo/db/catalog/validate_adaptor.cpp
index 1bee0a64c0a..61e592abc25 100644
--- a/src/mongo/db/catalog/validate_adaptor.cpp
+++ b/src/mongo/db/catalog/validate_adaptor.cpp
@@ -105,7 +105,7 @@ Status ValidateAdaptor::validateRecord(OperationContext* opCtx,
if (!descriptor->isMultikey() &&
iam->shouldMarkIndexAsMultikey(
- {documentKeySet.begin(), documentKeySet.end()},
+ documentKeySet.size(),
{multikeyMetadataKeys.begin(), multikeyMetadataKeys.end()},
multikeyPaths)) {
std::string msg = str::stream()
diff --git a/src/mongo/db/index/index_access_method.cpp b/src/mongo/db/index/index_access_method.cpp
index 05a93d4ebfe..321c682a5ec 100644
--- a/src/mongo/db/index/index_access_method.cpp
+++ b/src/mongo/db/index/index_access_method.cpp
@@ -179,7 +179,7 @@ Status AbstractIndexAccessMethod::insertKeys(OperationContext* opCtx,
result->numInserted += keys.size() + multikeyMetadataKeys.size();
}
- if (shouldMarkIndexAsMultikey(keys, multikeyMetadataKeys, multikeyPaths)) {
+ if (shouldMarkIndexAsMultikey(keys.size(), multikeyMetadataKeys, multikeyPaths)) {
_btreeState->setMultikey(opCtx, multikeyPaths);
}
return Status::OK();
@@ -407,7 +407,7 @@ Status AbstractIndexAccessMethod::update(OperationContext* opCtx,
}
if (shouldMarkIndexAsMultikey(
- {ticket.newKeys.begin(), ticket.newKeys.end()},
+ ticket.newKeys.size(),
{ticket.newMultikeyMetadataKeys.begin(), ticket.newMultikeyMetadataKeys.end()},
ticket.newMultikeyPaths)) {
_btreeState->setMultikey(opCtx, ticket.newMultikeyPaths);
@@ -514,7 +514,7 @@ Status AbstractIndexAccessMethod::BulkBuilderImpl::insert(OperationContext* opCt
_isMultiKey = _isMultiKey ||
_real->shouldMarkIndexAsMultikey(
- {keys.begin(), keys.end()},
+ keys.size(),
{_multikeyMetadataKeys.begin(), _multikeyMetadataKeys.end()},
multikeyPaths);
@@ -704,10 +704,10 @@ void AbstractIndexAccessMethod::getKeys(const BSONObj& obj,
}
bool AbstractIndexAccessMethod::shouldMarkIndexAsMultikey(
- const vector<KeyString::Value>& keys,
+ size_t numberOfKeys,
const vector<KeyString::Value>& multikeyMetadataKeys,
const MultikeyPaths& multikeyPaths) const {
- return (keys.size() > 1 || isMultikeyFromPaths(multikeyPaths));
+ return numberOfKeys > 1 || isMultikeyFromPaths(multikeyPaths);
}
SortedDataInterface* AbstractIndexAccessMethod::getSortedDataInterface() const {
diff --git a/src/mongo/db/index/index_access_method.h b/src/mongo/db/index/index_access_method.h
index b769dfe5a08..0961321b269 100644
--- a/src/mongo/db/index/index_access_method.h
+++ b/src/mongo/db/index/index_access_method.h
@@ -304,7 +304,7 @@ public:
* document, return 'true' if the index should be marked as multikey and 'false' otherwise.
*/
virtual bool shouldMarkIndexAsMultikey(
- const std::vector<KeyString::Value>& keys,
+ size_t numberOfKeys,
const std::vector<KeyString::Value>& multikeyMetadataKeys,
const MultikeyPaths& multikeyPaths) const = 0;
@@ -504,7 +504,7 @@ public:
MultikeyPaths* multikeyPaths,
boost::optional<RecordId> id = boost::none) const final;
- bool shouldMarkIndexAsMultikey(const std::vector<KeyString::Value>& keys,
+ bool shouldMarkIndexAsMultikey(size_t numberOfKeys,
const std::vector<KeyString::Value>& multikeyMetadataKeys,
const MultikeyPaths& multikeyPaths) const override;
diff --git a/src/mongo/db/index/wildcard_access_method.cpp b/src/mongo/db/index/wildcard_access_method.cpp
index 0f483710727..f77fe1d84a4 100644
--- a/src/mongo/db/index/wildcard_access_method.cpp
+++ b/src/mongo/db/index/wildcard_access_method.cpp
@@ -47,7 +47,7 @@ WildcardAccessMethod::WildcardAccessMethod(IndexCatalogEntry* wildcardState,
getSortedDataInterface()->getOrdering()) {}
bool WildcardAccessMethod::shouldMarkIndexAsMultikey(
- const std::vector<KeyString::Value>& keys,
+ size_t numberOfKeys,
const std::vector<KeyString::Value>& multikeyMetadataKeys,
const MultikeyPaths& multikeyPaths) const {
return !multikeyMetadataKeys.empty();
diff --git a/src/mongo/db/index/wildcard_access_method.h b/src/mongo/db/index/wildcard_access_method.h
index 3390261a0f8..69ca0ad80dd 100644
--- a/src/mongo/db/index/wildcard_access_method.h
+++ b/src/mongo/db/index/wildcard_access_method.h
@@ -66,7 +66,7 @@ public:
* more multikey metadata keys have been generated; that is, if the 'multikeyMetadataKeys'
* vector is non-empty.
*/
- bool shouldMarkIndexAsMultikey(const std::vector<KeyString::Value>& keys,
+ bool shouldMarkIndexAsMultikey(size_t numberOfKeys,
const std::vector<KeyString::Value>& multikeyMetadataKeys,
const MultikeyPaths& multikeyPaths) const final;