summaryrefslogtreecommitdiff
path: root/src/mongo/db/s/auto_split_vector.cpp
diff options
context:
space:
mode:
authorLucas de Castro Borges <lucas@gnuabordo.com.br>2025-02-11 15:07:35 -0300
committerLucas de Castro Borges <lucas@gnuabordo.com.br>2025-02-11 15:07:35 -0300
commit4cb8841196d0625dfa3825aa326f071cd27c7b8b (patch)
tree1682a647d4463397c119183369ae6f750d5fdcff /src/mongo/db/s/auto_split_vector.cpp
parentaa03c6362cbaa767638e6eed9b031d86dd2643d1 (diff)
parent8f0827553e09872941945a093b647a4211a9db7f (diff)
Update upstream source from tag 'upstream/6.0.0'master
Update to upstream version '6.0.0' with Debian dir 5604a80ec1c96ca76f25f40d78e6ef855abec322
Diffstat (limited to 'src/mongo/db/s/auto_split_vector.cpp')
-rw-r--r--src/mongo/db/s/auto_split_vector.cpp19
1 files changed, 4 insertions, 15 deletions
diff --git a/src/mongo/db/s/auto_split_vector.cpp b/src/mongo/db/s/auto_split_vector.cpp
index 2dcb509f156..8be8c5dde8b 100644
--- a/src/mongo/db/s/auto_split_vector.cpp
+++ b/src/mongo/db/s/auto_split_vector.cpp
@@ -50,16 +50,7 @@
namespace mongo {
namespace {
-/*
- * BSON arrays are serialized as BSON objects with the index of each element as a string key: for
- * example, the array ["a","b","c"] is going to be serialized as {"0":"a","1":"b","2":"c"}. The
- * minimum size for a BSON object is `BSONObj::kMinBSONLength`.
- *
- * Given that the `vector<BSONObj>` returned by `autoSplitVector` can't be greater than 16MB when
- * serialized, pessimistically assume that each key occupies the highest possible number of bytes.
- */
-const int estimatedAdditionalBytesPerItemInBSONArray{
- (int)std::to_string(BSONObjMaxUserSize / BSONObj::kMinBSONLength).length()};
+constexpr int estimatedAdditionalBytesPerItemInBSONArray{2};
constexpr int kMaxSplitPointsToReposition{3};
@@ -94,11 +85,9 @@ const std::tuple<BSONObj, BSONObj> getMinMaxExtendedBounds(const ShardKeyIndex&
/*
* Reshuffle fields according to the shard key pattern.
*/
-auto orderShardKeyFields(const BSONObj& keyPattern, const BSONObj& key) {
- // Note: It is correct to hydrate the indexKey 'key' with 'keyPattern', because the index key
- // pattern is a prefix of 'keyPattern'.
- return dotted_path_support::extractElementsBasedOnTemplate(key.replaceFieldNames(keyPattern),
- keyPattern);
+auto orderShardKeyFields(const BSONObj& keyPattern, BSONObj& key) {
+ return dotted_path_support::extractElementsBasedOnTemplate(
+ prettyKey(keyPattern, key.getOwned()), keyPattern);
}
} // namespace