From 97ea8de07f7d578a5c7dffabaa68d6706703d12c Mon Sep 17 00:00:00 2001 From: David Chen <42048732+davidchen2001@users.noreply.github.com> Date: Mon, 8 Dec 2025 17:19:02 -0500 Subject: [PATCH] SERVER-113895: Perform range-based and compound shard key testing for productionized orphan deleter script (#44114) GitOrigin-RevId: a4b98b9ab9fe4b351c7be6b61e662a99ef7b7b58 --- jstests/sharding/libs/sharding_util.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/jstests/sharding/libs/sharding_util.js b/jstests/sharding/libs/sharding_util.js index cdd0920f698..e0c65b1815f 100644 --- a/jstests/sharding/libs/sharding_util.js +++ b/jstests/sharding/libs/sharding_util.js @@ -100,3 +100,25 @@ export function isSlowBuild(conn) { (rawBuildInfo.hasOwnProperty("buildEnvironment") && rawBuildInfo.buildEnvironment.target_os == "windows") ); } + +/** + * Builds a MinKey or MaxKey object based on shard key structure. + * @param {Object} shardKey - The shard key pattern object (e.g., {x: 1, y: 1}) + * @param {Object} keyType - Either MinKey or MaxKey + * @returns {Object} An object with the same keys as shardKey, but values set to keyType + */ +export function buildShardKeyBoundary(shardKey, keyType) { + const boundary = {}; + Object.keys(shardKey).forEach((key) => { + boundary[key] = keyType; + }); + return boundary; +} + +export function buildMinKey(shardKey) { + return buildShardKeyBoundary(shardKey, MinKey); +} + +export function buildMaxKey(shardKey) { + return buildShardKeyBoundary(shardKey, MaxKey); +}