SERVER-119477 Add HashJoin spilling stats to slow query log (#49155)

GitOrigin-RevId: ea5dfc4fbb120971ce75e074624e25777f20a291
This commit is contained in:
Projjal Chanda
2026-03-06 21:42:59 +00:00
committed by MongoDB Bot
parent e7fa522806
commit 54ff814ae2
7 changed files with 524 additions and 78 deletions

View File

@@ -53,10 +53,10 @@ export function beginGoldenTest(relativePathToExpectedOutput, fileExtension = ""
relativePathToExpectedOutput + "/internalEnableJoinOptimization/" + outputName,
);
if (sbeIndividualFeaturesEnabled && sbeIndividualFeaturesExpectedExists) {
relativePathToExpectedOutput += "/sbeIndividualFeatures";
} else if (joinOptimizationStatus && joinOptimizationExpectedExists) {
if (joinOptimizationStatus && joinOptimizationExpectedExists) {
relativePathToExpectedOutput += "/internalEnableJoinOptimization";
} else if (sbeIndividualFeaturesEnabled && sbeIndividualFeaturesExpectedExists) {
relativePathToExpectedOutput += "/sbeIndividualFeatures";
} else if (sbeExpectedExists && planRankerModeExpectedExists) {
// Both SBE and CBR expected outputs exist, bail.
assert.fail(

View File

@@ -171,14 +171,14 @@ Query 25 (with useIndex=false): [ { "$addFields" : { "b" : "$j", "f" : 7 } }, {
Query 26 (with useIndex=false): [ { "$match" : { "i" : { "$lte" : 96 } } }, { "$addFields" : { "i" : "$f", "y" : "$y" } }, { "$project" : { "c" : 0, "d" : 0, "y" : 0 } }, { "$addFields" : { "e" : 34, "i" : "$h", "k" : 21 } }, { "$project" : { "f" : 0 } }, { "$addFields" : { "f" : 48 } }, { "$addFields" : { "l" : 72, "b" : "$c", "x" : "$y" } }, { "$project" : { "j" : 0, "x" : 0 } }, { "$addFields" : { "g" : 59, "x" : "$x" } } ]
{_id: 1, e: 34, a: 32, h: 71, g: 59, w: {a: 18, b: 25, c: 26}, f: 48, i: 71, k: 21, l: 72},
{_id: 2, e: 34, w: {a: 94, b: 32, c: 58}, i: 50, h: 50, g: 59, a: 85, f: 48, k: 21, l: 72},
{_id: 3, a: 27, h: 72, g: 59, w: {a: 11, b: 3, c: 9}, f: 48, i: 72, e: 34, k: 21, l: 72},
{_id: 4, a: 29, h: 83, g: 59, w: {a: 86, b: 75, c: 3}, f: 48, i: 83, e: 34, k: 21, l: 72},
{_id: 5, i: 75, g: 59, e: 34, a: 89, w: {a: 44, b: 19, c: 96}, h: 75, f: 48, k: 21, l: 72},
{_id: 6, f: 48, e: 34, a: 85, w: {a: 10, b: 66, c: 62}, i: 71, h: 71, g: 59, k: 21, l: 72},
{_id: 7, w: {a: 48, b: 63, c: 47}, h: 86, f: 48, i: 86, g: 59, e: 34, a: 85, k: 21, l: 72},
{_id: 8, g: 59, w: {a: 15, b: 23, c: 89}, f: 48, i: 74, e: 34, a: 75, h: 74, k: 21, l: 72}
{_id: 1, e: 34, a: 32, h: 71, g: 59, w: {a: 18, b: 25, c: 26}, i: 71, k: 21, f: 48, l: 72},
{_id: 2, e: 34, w: {a: 94, b: 32, c: 58}, i: 50, h: 50, g: 59, a: 85, k: 21, f: 48, l: 72},
{_id: 3, a: 27, h: 72, g: 59, w: {a: 11, b: 3, c: 9}, i: 72, e: 34, k: 21, f: 48, l: 72},
{_id: 4, a: 29, h: 83, g: 59, w: {a: 86, b: 75, c: 3}, i: 83, e: 34, k: 21, f: 48, l: 72},
{_id: 5, i: 75, g: 59, e: 34, a: 89, w: {a: 44, b: 19, c: 96}, h: 75, k: 21, f: 48, l: 72},
{_id: 6, e: 34, a: 85, w: {a: 10, b: 66, c: 62}, i: 71, h: 71, g: 59, k: 21, f: 48, l: 72},
{_id: 7, w: {a: 48, b: 63, c: 47}, h: 86, i: 86, g: 59, e: 34, a: 85, k: 21, f: 48, l: 72},
{_id: 8, g: 59, w: {a: 15, b: 23, c: 89}, i: 74, e: 34, a: 75, h: 74, k: 21, f: 48, l: 72}
Query 27 (with useIndex=false): [ { "$addFields" : { "j" : 79, "i" : "$a", "e" : 93 } }, { "$addFields" : { "h" : 64, "f" : 24, "l" : 31, "x" : "$y" } }, { "$project" : { "j" : 0, "d" : 0, "x" : 0 } }, { "$addFields" : { "l" : 29, "c" : "$b", "k" : 34, "w" : "$w" } } ]
@@ -210,7 +210,7 @@ Query 30 (with useIndex=false): [ { "$addFields" : { "l" : 30 } }, { "$match" :
Query 31 (with useIndex=false): [ { "$group" : { "_id" : "$a", "l" : { "$sum" : "$l" }, "b" : { "$sum" : "$b" }, "f" : { "$sum" : "$f" }, "j" : { "$sum" : "$j" }, "k" : { "$sum" : "$k" }, "i" : { "$sum" : "$i" }, "d" : { "$sum" : "$d" }, "h" : { "$sum" : "$h" }, "a" : { "$sum" : "$a" }, "c" : { "$sum" : "$c" }, "x" : { "$min" : "$x" }, "y" : { "$min" : "$y" }, "w" : { "$min" : "$w" } } }, { "$addFields" : { "g" : "$s", "k" : "$f", "b" : "$k", "y" : "$x" } }, { "$addFields" : { "c" : "$q", "f" : 50, "x" : "$x" } }, { "$project" : { "b" : 0, "i" : 0, "w" : 0 } }, { "$group" : { "_id" : "$i", "g" : { "$sum" : "$g" }, "d" : { "$sum" : "$d" }, "a" : { "$sum" : "$a" }, "k" : { "$sum" : "$k" }, "f" : { "$sum" : "$f" }, "h" : { "$sum" : "$h" }, "i" : { "$sum" : "$i" }, "l" : { "$sum" : "$l" }, "e" : { "$sum" : "$e" }, "c" : { "$sum" : "$c" }, "b" : { "$sum" : "$b" }, "w" : { "$min" : "$w" }, "y" : { "$min" : "$y" }, "x" : { "$min" : "$x" } } }, { "$addFields" : { "i" : "$r", "l" : 21 } }, { "$addFields" : { "l" : "$l", "g" : "$t", "f" : "$i", "w" : "$x" } }, { "$match" : { "c" : { "$lt" : 91 } } }, { "$addFields" : { "c" : "$c", "b" : "$d", "i" : 52 } }, { "$addFields" : { "i" : 96, "f" : 60, "c" : 1, "w" : "$y" } } ]
{_id: null, d: 449, a: 507, k: 414, f: 60, h: 582, i: 96, l: 21, e: 0, c: 1, b: 449, w: {a: 4, b: 40, c: 0}, y: {a: 4, b: 40, c: 0}, x: {a: 4, b: 40, c: 0}}
{_id: null, d: 449, a: 507, k: 414, h: 582, l: 21, e: 0, c: 1, b: 449, w: {a: 4, b: 40, c: 0}, y: {a: 4, b: 40, c: 0}, x: {a: 4, b: 40, c: 0}, i: 96, f: 60}
Query 32 (with useIndex=false): [ { "$group" : { "_id" : "$a", "l" : { "$sum" : "$l" }, "h" : { "$sum" : "$h" }, "a" : { "$sum" : "$a" }, "j" : { "$sum" : "$j" }, "g" : { "$sum" : "$g" }, "d" : { "$sum" : "$d" }, "f" : { "$sum" : "$f" }, "b" : { "$sum" : "$b" }, "e" : { "$sum" : "$e" }, "i" : { "$sum" : "$i" }, "k" : { "$sum" : "$k" }, "w" : { "$min" : "$w" }, "x" : { "$min" : "$x" }, "y" : { "$min" : "$y" } } }, { "$sort" : { "k" : 1, "_id" : 1 } }, { "$sort" : { "g" : 1, "_id" : 1 } }, { "$project" : { "b" : 0, "c" : 0 } }, { "$group" : { "_id" : "$k", "f" : { "$sum" : "$f" }, "e" : { "$sum" : "$e" }, "g" : { "$sum" : "$g" }, "j" : { "$sum" : "$j" }, "h" : { "$sum" : "$h" }, "l" : { "$sum" : "$l" }, "i" : { "$sum" : "$i" }, "a" : { "$sum" : "$a" }, "b" : { "$sum" : "$b" }, "k" : { "$sum" : "$k" }, "x" : { "$min" : "$x" }, "y" : { "$min" : "$y" }, "w" : { "$min" : "$w" } } }, { "$match" : { "g" : { "$gt" : 0 } } }, { "$match" : { "d" : { "$lte" : 98 } } }, { "$match" : { "j" : { "$lte" : 94 } } } ]
@@ -242,22 +242,22 @@ Query 38 (with useIndex=false): [ { "$addFields" : { "i" : 28, "x" : "$x" } }, {
Query 39 (with useIndex=false): [ { "$match" : { "g" : { "$gte" : 24 } } }, { "$project" : { "d" : 0, "b" : 0 } }, { "$project" : { "k" : 0 } }, { "$addFields" : { "l" : 7, "d" : 89, "a" : 78, "y" : "$w" } }, { "$project" : { "l" : 0, "w.c" : 0 } }, { "$project" : { "f" : 0, "y.a" : 0, "y.b" : 0 } }, { "$addFields" : { "b" : 24, "h" : "$h" } }, { "$project" : { "c" : 0, "w" : 0 } }, { "$project" : { "d" : 0, "a" : 0 } }, { "$addFields" : { "h" : 22, "j" : 83, "d" : "$r", "y" : "$w" } }, { "$addFields" : { "c" : "$n", "h" : 68, "w" : "$w" } }, { "$addFields" : { "a" : "$j", "f" : "$t", "w" : "$w" } } ]
{_id: 1, e: 95, a: 83, h: 68, x: {a: 4, b: 40, c: 0}, g: 26, i: 65, b: 24, j: 83},
{_id: 7, h: 68, x: {a: 47, b: 88, c: 40}, i: 44, g: 66, e: 78, a: 83, b: 24, j: 83},
{_id: 8, g: 62, i: 43, e: 63, a: 83, h: 68, x: {a: 9, b: 4, c: 79}, b: 24, j: 83}
{_id: 1, e: 95, h: 68, x: {a: 4, b: 40, c: 0}, g: 26, i: 65, b: 24, j: 83, a: 83},
{_id: 7, h: 68, x: {a: 47, b: 88, c: 40}, i: 44, g: 66, e: 78, b: 24, j: 83, a: 83},
{_id: 8, g: 62, i: 43, e: 63, h: 68, x: {a: 9, b: 4, c: 79}, b: 24, j: 83, a: 83}
Query 40 (with useIndex=false): [ { "$project" : { "g" : 0, "d" : 0, "w" : 0 } }, { "$project" : { "e" : 0 } }, { "$match" : { "d" : { "$gte" : 19 } } }, { "$addFields" : { "j" : "$b" } }, { "$project" : { "k" : 0, "y.a" : 0 } }, { "$project" : { "d" : 0 } }, { "$project" : { "g" : 1, "k" : 1, "j" : 1, "h" : 1, "a" : 1, "d" : 1, "b" : 1, "f" : 1, "c" : 1, "e" : 1, "y.c" : 1, "x.c" : 1 } }, { "$match" : { "h" : { "$lt" : 90 } } }, { "$project" : { "i" : 1, "c" : 1, "e" : 1, "b" : 1, "f" : 1, "a" : 1, "d" : "$e", "l" : 1, "j" : "$f", "y" : 1 } }, { "$addFields" : { "j" : 58, "f" : 94, "d" : "$t" } }, { "$addFields" : { "h" : 88, "l" : 10, "w" : "$x" } } ]
Query 41 (with useIndex=false): [ { "$project" : { "c" : 1, "j" : "$j", "h" : 1, "f" : 1, "a" : "$e", "k" : 1, "b" : 1, "g" : 1, "i" : { "$literal" : 48 }, "e" : 1, "y.b" : 1, "y.c" : 1, "w.a" : 1 } }, { "$project" : { "j" : 0, "d" : 0, "w.b" : 0 } }, { "$match" : { "e" : { "$gte" : 24 } } }, { "$project" : { "f" : 0, "k" : 0, "y.c" : 0 } }, { "$addFields" : { "j" : "$r", "w" : "$w" } }, { "$project" : { "k" : 0, "f" : 0, "x" : 0 } }, { "$addFields" : { "f" : 78, "k" : 82, "y.c" : 0, "y.a" : 30 } }, { "$addFields" : { "f" : 86, "j" : 0, "i" : 1 } }, { "$match" : { "f" : { "$gt" : 1 } } }, { "$addFields" : { "i" : 87, "c" : 90, "x" : "$w" } }, { "$project" : { "b" : 0 } }, { "$addFields" : { "f" : "$q", "w.c" : 22 } } ]
{_id: 1, e: 95, h: 71, g: 26, c: 90, w: {a: 18, c: 22}, j: 0, a: 95, i: 87, y: {c: 0, a: 30}, k: 82, x: {a: 18}},
{_id: 3, h: 72, g: 8, c: 90, w: {a: 11, c: 22}, e: 40, j: 0, a: 40, i: 87, y: {c: 0, a: 30}, k: 82, x: {a: 11}},
{_id: 4, h: 83, g: 16, c: 90, w: {a: 86, c: 22}, e: 82, j: 0, a: 82, i: 87, y: {c: 0, a: 30}, k: 82, x: {a: 86}},
{_id: 5, g: 15, e: 87, c: 90, w: {a: 44, c: 22}, h: 75, j: 0, a: 87, i: 87, y: {c: 0, a: 30}, k: 82, x: {a: 44}},
{_id: 6, e: 55, c: 90, w: {a: 10, c: 22}, h: 71, g: 16, j: 0, a: 55, i: 87, y: {c: 0, a: 30}, k: 82, x: {a: 10}},
{_id: 7, w: {a: 48, c: 22}, h: 86, g: 66, e: 78, c: 90, j: 0, a: 78, i: 87, y: {c: 0, a: 30}, k: 82, x: {a: 48}},
{_id: 8, g: 62, c: 90, w: {a: 15, c: 22}, e: 63, h: 74, j: 0, a: 63, i: 87, y: {c: 0, a: 30}, k: 82, x: {a: 15}}
{_id: 1, e: 95, h: 71, g: 26, c: 90, w: {a: 18, c: 22}, a: 95, i: 87, k: 82, y: {c: 0, a: 30}, j: 0, x: {a: 18}},
{_id: 3, h: 72, g: 8, c: 90, w: {a: 11, c: 22}, e: 40, a: 40, i: 87, k: 82, y: {c: 0, a: 30}, j: 0, x: {a: 11}},
{_id: 4, h: 83, g: 16, c: 90, w: {a: 86, c: 22}, e: 82, a: 82, i: 87, k: 82, y: {c: 0, a: 30}, j: 0, x: {a: 86}},
{_id: 5, g: 15, e: 87, c: 90, w: {a: 44, c: 22}, h: 75, a: 87, i: 87, k: 82, y: {c: 0, a: 30}, j: 0, x: {a: 44}},
{_id: 6, e: 55, c: 90, w: {a: 10, c: 22}, h: 71, g: 16, a: 55, i: 87, k: 82, y: {c: 0, a: 30}, j: 0, x: {a: 10}},
{_id: 7, w: {a: 48, c: 22}, h: 86, g: 66, e: 78, c: 90, a: 78, i: 87, k: 82, y: {c: 0, a: 30}, j: 0, x: {a: 48}},
{_id: 8, g: 62, c: 90, w: {a: 15, c: 22}, e: 63, h: 74, a: 63, i: 87, k: 82, y: {c: 0, a: 30}, j: 0, x: {a: 15}}
Query 42 (with useIndex=false): [ { "$addFields" : { "f" : "$o", "y" : "$x" } }, { "$addFields" : { "i" : 31, "h" : 8, "y" : "$w" } }, { "$match" : { "i" : { "$lte" : 77 } } }, { "$match" : { "k" : { "$gt" : 1 } } }, { "$addFields" : { "b" : "$n", "k" : 1, "x.c" : 9 } }, { "$match" : { "i" : { "$lte" : 98 } } }, { "$setWindowFields" : { "partitionBy" : "$j", "sortBy" : { "b" : -1, "_id" : 1 }, "output" : { "h" : { "$sum" : "$h", "window" : { "documents" : [ "unbounded", "unbounded" ] } } } } }, { "$match" : { "l" : { "$gte" : 3 } } }, { "$addFields" : { "c" : "$b", "y" : "$x" } }, { "$match" : { "i" : { "$gte" : 15 } } }, { "$project" : { "g" : 0, "w.b" : 0, "w.a" : 0 } }, { "$addFields" : { "i" : 91, "a" : "$f", "l" : 40 } } ]
@@ -362,14 +362,14 @@ Query 60 (with useIndex=false): [ { "$lookup" : { "from" : "complex_pipelines_fo
Query 61 (with useIndex=false): [ { "$addFields" : { "b" : "$q" } }, { "$addFields" : { "i" : 16, "b" : 57, "w" : "$y" } }, { "$addFields" : { "g" : "$l", "w.c" : 93, "w.a" : 97 } }, { "$match" : { "f" : { "$gt" : 1 } } }, { "$match" : { "b" : { "$gte" : 2 } } }, { "$addFields" : { "d" : 29, "h" : "$d" } }, { "$setWindowFields" : { "partitionBy" : "$b", "sortBy" : { "a" : -1, "_id" : 1 }, "output" : { "e" : { "$sum" : "$e", "window" : { "documents" : [ -2, 2 ] } } } } }, { "$addFields" : { "a" : 56, "b" : 74, "d" : "$f", "y" : "$x" } }, { "$match" : { "w.c" : { "$gte" : 1 } } }, { "$match" : { "e" : { "$gte" : 12 } } } ]
{_id: 1, e: 358, a: 56, h: 10, d: 85, x: {a: 4, b: 40, c: 0}, c: 60, w: {c: 93, a: 97}, f: 85, b: 74, i: 16, y: {a: 4, b: 40, c: 0}},
{_id: 2, e: 233, w: {c: 93, a: 97}, d: 98, i: 16, c: 32, h: 94, b: 74, a: 56, f: 98, x: {a: 8, b: 71, c: 40}, y: {a: 8, b: 71, c: 40}},
{_id: 3, a: 56, h: 93, d: 49, x: {a: 19, b: 99, c: 77}, c: 77, w: {c: 93, a: 97}, f: 49, b: 74, i: 16, e: 217, y: {a: 19, b: 99, c: 77}},
{_id: 4, a: 56, h: 34, d: 50, x: {a: 81, b: 68, c: 20}, c: 87, w: {c: 93, a: 97}, f: 50, b: 74, i: 16, e: 280, y: {a: 81, b: 68, c: 20}},
{_id: 5, d: 69, b: 74, x: {a: 75, b: 5, c: 70}, i: 16, e: 155, c: 49, a: 56, w: {c: 93, a: 97}, h: 7, f: 69, y: {a: 75, b: 5, c: 70}},
{_id: 6, f: 41, e: 296, d: 41, c: 94, b: 74, a: 56, x: {a: 59, b: 36, c: 59}, w: {c: 93, a: 97}, i: 16, h: 54, y: {a: 59, b: 36, c: 59}},
{_id: 7, w: {c: 93, a: 97}, h: 65, f: 18, d: 18, b: 74, x: {a: 47, b: 88, c: 40}, i: 16, e: 304, c: 11, a: 56, y: {a: 47, b: 88, c: 40}},
{_id: 8, c: 24, w: {c: 93, a: 97}, f: 4, b: 74, i: 16, e: 373, a: 56, h: 92, d: 4, x: {a: 9, b: 4, c: 79}, y: {a: 9, b: 4, c: 79}}
{_id: 1, e: 358, a: 56, h: 10, d: 85, x: {a: 4, b: 40, c: 0}, c: 60, f: 85, i: 16, b: 74, w: {c: 93, a: 97}, y: {a: 4, b: 40, c: 0}},
{_id: 2, e: 233, d: 98, i: 16, c: 32, h: 94, a: 56, f: 98, x: {a: 8, b: 71, c: 40}, b: 74, w: {c: 93, a: 97}, y: {a: 8, b: 71, c: 40}},
{_id: 3, a: 56, h: 93, d: 49, x: {a: 19, b: 99, c: 77}, c: 77, f: 49, i: 16, e: 217, b: 74, w: {c: 93, a: 97}, y: {a: 19, b: 99, c: 77}},
{_id: 4, a: 56, h: 34, d: 50, x: {a: 81, b: 68, c: 20}, c: 87, f: 50, i: 16, e: 280, b: 74, w: {c: 93, a: 97}, y: {a: 81, b: 68, c: 20}},
{_id: 5, d: 69, x: {a: 75, b: 5, c: 70}, i: 16, e: 155, c: 49, a: 56, h: 7, f: 69, b: 74, w: {c: 93, a: 97}, y: {a: 75, b: 5, c: 70}},
{_id: 6, f: 41, e: 296, d: 41, c: 94, a: 56, x: {a: 59, b: 36, c: 59}, i: 16, h: 54, b: 74, w: {c: 93, a: 97}, y: {a: 59, b: 36, c: 59}},
{_id: 7, h: 65, f: 18, d: 18, x: {a: 47, b: 88, c: 40}, i: 16, e: 304, c: 11, a: 56, b: 74, w: {c: 93, a: 97}, y: {a: 47, b: 88, c: 40}},
{_id: 8, c: 24, f: 4, i: 16, e: 373, a: 56, h: 92, d: 4, x: {a: 9, b: 4, c: 79}, b: 74, w: {c: 93, a: 97}, y: {a: 9, b: 4, c: 79}}
Query 62 (with useIndex=false): [ { "$addFields" : { "f" : "$r", "b" : 11 } }, { "$match" : { "y.b" : { "$lte" : 97 } } }, { "$addFields" : { "f" : 73, "c" : 64 } }, { "$addFields" : { "e" : 96, "g" : 10, "w" : "$x" } }, { "$sort" : { "i" : 1, "_id" : 1 } }, { "$limit" : 7 } ]
@@ -390,14 +390,14 @@ Query 65 (with useIndex=false): [ { "$sort" : { "i" : -1, "_id" : 1 } }, { "$lim
Query 66 (with useIndex=false): [ { "$sort" : { "c" : -1, "f" : 1, "_id" : 1 } }, { "$project" : { "i" : "$g", "h" : 1, "d" : 1, "l" : 1, "e" : 1, "g" : 1, "k" : 1, "b" : 1, "c" : "$b", "a" : 1, "j" : 1, "w" : 1 } }, { "$project" : { "b" : 1, "j" : 1, "e" : 1, "l" : 1, "c" : 1, "i" : 1, "f" : 1, "h" : 1, "a" : "$f", "x.a" : 1, "y.c" : 1 } }, { "$addFields" : { "f" : 80, "g" : "$f", "e" : 71, "w.b" : 44, "w.c" : 77 } }, { "$addFields" : { "a" : "$f", "g" : 46, "k" : 70 } } ]
{_id: 1, e: 71, h: 71, b: 64, i: 26, c: 64, a: 80, f: 80, g: 46, w: {b: 44, c: 77}, k: 70},
{_id: 2, e: 71, h: 50, b: 21, i: 2, c: 21, a: 80, f: 80, g: 46, w: {b: 44, c: 77}, k: 70},
{_id: 3, h: 72, b: 47, e: 71, i: 8, c: 47, a: 80, f: 80, g: 46, w: {b: 44, c: 77}, k: 70},
{_id: 4, h: 83, b: 76, e: 71, i: 16, c: 76, a: 80, f: 80, g: 46, w: {b: 44, c: 77}, k: 70},
{_id: 5, b: 4, e: 71, h: 75, i: 15, c: 4, a: 80, f: 80, g: 46, w: {b: 44, c: 77}, k: 70},
{_id: 6, e: 71, b: 71, h: 71, i: 16, c: 71, a: 80, f: 80, g: 46, w: {b: 44, c: 77}, k: 70},
{_id: 7, h: 86, b: 40, e: 71, i: 66, c: 40, a: 80, f: 80, g: 46, w: {b: 44, c: 77}, k: 70},
{_id: 8, b: 81, e: 71, h: 74, i: 62, c: 81, a: 80, f: 80, g: 46, w: {b: 44, c: 77}, k: 70}
{_id: 1, e: 71, h: 71, b: 64, i: 26, c: 64, f: 80, w: {b: 44, c: 77}, a: 80, g: 46, k: 70},
{_id: 2, e: 71, h: 50, b: 21, i: 2, c: 21, f: 80, w: {b: 44, c: 77}, a: 80, g: 46, k: 70},
{_id: 3, h: 72, b: 47, e: 71, i: 8, c: 47, f: 80, w: {b: 44, c: 77}, a: 80, g: 46, k: 70},
{_id: 4, h: 83, b: 76, e: 71, i: 16, c: 76, f: 80, w: {b: 44, c: 77}, a: 80, g: 46, k: 70},
{_id: 5, b: 4, e: 71, h: 75, i: 15, c: 4, f: 80, w: {b: 44, c: 77}, a: 80, g: 46, k: 70},
{_id: 6, e: 71, b: 71, h: 71, i: 16, c: 71, f: 80, w: {b: 44, c: 77}, a: 80, g: 46, k: 70},
{_id: 7, h: 86, b: 40, e: 71, i: 66, c: 40, f: 80, w: {b: 44, c: 77}, a: 80, g: 46, k: 70},
{_id: 8, b: 81, e: 71, h: 74, i: 62, c: 81, f: 80, w: {b: 44, c: 77}, a: 80, g: 46, k: 70}
Query 67 (with useIndex=false): [ { "$addFields" : { "b" : "$d", "w.a" : 44 } }, { "$addFields" : { "j" : 57, "y.c" : 60, "y.a" : 75 } }, { "$sort" : { "l" : -1, "_id" : 1 } }, { "$limit" : 7 }, { "$project" : { "b" : 0, "c" : 0, "y" : 0 } }, { "$match" : { "y.a" : { "$lte" : 96 } } }, { "$sort" : { "e" : 1, "_id" : 1 } }, { "$limit" : 8 }, { "$project" : { "i" : 0, "x" : 0 } } ]
@@ -567,14 +567,14 @@ Query 25 (with useIndex=true): [ { "$addFields" : { "b" : "$j", "f" : 7 } }, { "
Query 26 (with useIndex=true): [ { "$match" : { "i" : { "$lte" : 96 } } }, { "$addFields" : { "i" : "$f", "y" : "$y" } }, { "$project" : { "c" : 0, "d" : 0, "y" : 0 } }, { "$addFields" : { "e" : 34, "i" : "$h", "k" : 21 } }, { "$project" : { "f" : 0 } }, { "$addFields" : { "f" : 48 } }, { "$addFields" : { "l" : 72, "b" : "$c", "x" : "$y" } }, { "$project" : { "j" : 0, "x" : 0 } }, { "$addFields" : { "g" : 59, "x" : "$x" } } ]
{_id: 1, e: 34, a: 32, h: 71, g: 59, w: {a: 18, b: 25, c: 26}, f: 48, i: 71, k: 21, l: 72},
{_id: 2, e: 34, w: {a: 94, b: 32, c: 58}, i: 50, h: 50, g: 59, a: 85, f: 48, k: 21, l: 72},
{_id: 3, a: 27, h: 72, g: 59, w: {a: 11, b: 3, c: 9}, f: 48, i: 72, e: 34, k: 21, l: 72},
{_id: 4, a: 29, h: 83, g: 59, w: {a: 86, b: 75, c: 3}, f: 48, i: 83, e: 34, k: 21, l: 72},
{_id: 5, i: 75, g: 59, e: 34, a: 89, w: {a: 44, b: 19, c: 96}, h: 75, f: 48, k: 21, l: 72},
{_id: 6, f: 48, e: 34, a: 85, w: {a: 10, b: 66, c: 62}, i: 71, h: 71, g: 59, k: 21, l: 72},
{_id: 7, w: {a: 48, b: 63, c: 47}, h: 86, f: 48, i: 86, g: 59, e: 34, a: 85, k: 21, l: 72},
{_id: 8, g: 59, w: {a: 15, b: 23, c: 89}, f: 48, i: 74, e: 34, a: 75, h: 74, k: 21, l: 72}
{_id: 1, e: 34, a: 32, h: 71, g: 59, w: {a: 18, b: 25, c: 26}, i: 71, k: 21, f: 48, l: 72},
{_id: 2, e: 34, w: {a: 94, b: 32, c: 58}, i: 50, h: 50, g: 59, a: 85, k: 21, f: 48, l: 72},
{_id: 3, a: 27, h: 72, g: 59, w: {a: 11, b: 3, c: 9}, i: 72, e: 34, k: 21, f: 48, l: 72},
{_id: 4, a: 29, h: 83, g: 59, w: {a: 86, b: 75, c: 3}, i: 83, e: 34, k: 21, f: 48, l: 72},
{_id: 5, i: 75, g: 59, e: 34, a: 89, w: {a: 44, b: 19, c: 96}, h: 75, k: 21, f: 48, l: 72},
{_id: 6, e: 34, a: 85, w: {a: 10, b: 66, c: 62}, i: 71, h: 71, g: 59, k: 21, f: 48, l: 72},
{_id: 7, w: {a: 48, b: 63, c: 47}, h: 86, i: 86, g: 59, e: 34, a: 85, k: 21, f: 48, l: 72},
{_id: 8, g: 59, w: {a: 15, b: 23, c: 89}, i: 74, e: 34, a: 75, h: 74, k: 21, f: 48, l: 72}
Query 27 (with useIndex=true): [ { "$addFields" : { "j" : 79, "i" : "$a", "e" : 93 } }, { "$addFields" : { "h" : 64, "f" : 24, "l" : 31, "x" : "$y" } }, { "$project" : { "j" : 0, "d" : 0, "x" : 0 } }, { "$addFields" : { "l" : 29, "c" : "$b", "k" : 34, "w" : "$w" } } ]
@@ -606,7 +606,7 @@ Query 30 (with useIndex=true): [ { "$addFields" : { "l" : 30 } }, { "$match" : {
Query 31 (with useIndex=true): [ { "$group" : { "_id" : "$a", "l" : { "$sum" : "$l" }, "b" : { "$sum" : "$b" }, "f" : { "$sum" : "$f" }, "j" : { "$sum" : "$j" }, "k" : { "$sum" : "$k" }, "i" : { "$sum" : "$i" }, "d" : { "$sum" : "$d" }, "h" : { "$sum" : "$h" }, "a" : { "$sum" : "$a" }, "c" : { "$sum" : "$c" }, "x" : { "$min" : "$x" }, "y" : { "$min" : "$y" }, "w" : { "$min" : "$w" } } }, { "$addFields" : { "g" : "$s", "k" : "$f", "b" : "$k", "y" : "$x" } }, { "$addFields" : { "c" : "$q", "f" : 50, "x" : "$x" } }, { "$project" : { "b" : 0, "i" : 0, "w" : 0 } }, { "$group" : { "_id" : "$i", "g" : { "$sum" : "$g" }, "d" : { "$sum" : "$d" }, "a" : { "$sum" : "$a" }, "k" : { "$sum" : "$k" }, "f" : { "$sum" : "$f" }, "h" : { "$sum" : "$h" }, "i" : { "$sum" : "$i" }, "l" : { "$sum" : "$l" }, "e" : { "$sum" : "$e" }, "c" : { "$sum" : "$c" }, "b" : { "$sum" : "$b" }, "w" : { "$min" : "$w" }, "y" : { "$min" : "$y" }, "x" : { "$min" : "$x" } } }, { "$addFields" : { "i" : "$r", "l" : 21 } }, { "$addFields" : { "l" : "$l", "g" : "$t", "f" : "$i", "w" : "$x" } }, { "$match" : { "c" : { "$lt" : 91 } } }, { "$addFields" : { "c" : "$c", "b" : "$d", "i" : 52 } }, { "$addFields" : { "i" : 96, "f" : 60, "c" : 1, "w" : "$y" } } ]
{_id: null, d: 449, a: 507, k: 414, f: 60, h: 582, i: 96, l: 21, e: 0, c: 1, b: 449, w: {a: 4, b: 40, c: 0}, y: {a: 4, b: 40, c: 0}, x: {a: 4, b: 40, c: 0}}
{_id: null, d: 449, a: 507, k: 414, h: 582, l: 21, e: 0, c: 1, b: 449, w: {a: 4, b: 40, c: 0}, y: {a: 4, b: 40, c: 0}, x: {a: 4, b: 40, c: 0}, i: 96, f: 60}
Query 32 (with useIndex=true): [ { "$group" : { "_id" : "$a", "l" : { "$sum" : "$l" }, "h" : { "$sum" : "$h" }, "a" : { "$sum" : "$a" }, "j" : { "$sum" : "$j" }, "g" : { "$sum" : "$g" }, "d" : { "$sum" : "$d" }, "f" : { "$sum" : "$f" }, "b" : { "$sum" : "$b" }, "e" : { "$sum" : "$e" }, "i" : { "$sum" : "$i" }, "k" : { "$sum" : "$k" }, "w" : { "$min" : "$w" }, "x" : { "$min" : "$x" }, "y" : { "$min" : "$y" } } }, { "$sort" : { "k" : 1, "_id" : 1 } }, { "$sort" : { "g" : 1, "_id" : 1 } }, { "$project" : { "b" : 0, "c" : 0 } }, { "$group" : { "_id" : "$k", "f" : { "$sum" : "$f" }, "e" : { "$sum" : "$e" }, "g" : { "$sum" : "$g" }, "j" : { "$sum" : "$j" }, "h" : { "$sum" : "$h" }, "l" : { "$sum" : "$l" }, "i" : { "$sum" : "$i" }, "a" : { "$sum" : "$a" }, "b" : { "$sum" : "$b" }, "k" : { "$sum" : "$k" }, "x" : { "$min" : "$x" }, "y" : { "$min" : "$y" }, "w" : { "$min" : "$w" } } }, { "$match" : { "g" : { "$gt" : 0 } } }, { "$match" : { "d" : { "$lte" : 98 } } }, { "$match" : { "j" : { "$lte" : 94 } } } ]
@@ -638,22 +638,22 @@ Query 38 (with useIndex=true): [ { "$addFields" : { "i" : 28, "x" : "$x" } }, {
Query 39 (with useIndex=true): [ { "$match" : { "g" : { "$gte" : 24 } } }, { "$project" : { "d" : 0, "b" : 0 } }, { "$project" : { "k" : 0 } }, { "$addFields" : { "l" : 7, "d" : 89, "a" : 78, "y" : "$w" } }, { "$project" : { "l" : 0, "w.c" : 0 } }, { "$project" : { "f" : 0, "y.a" : 0, "y.b" : 0 } }, { "$addFields" : { "b" : 24, "h" : "$h" } }, { "$project" : { "c" : 0, "w" : 0 } }, { "$project" : { "d" : 0, "a" : 0 } }, { "$addFields" : { "h" : 22, "j" : 83, "d" : "$r", "y" : "$w" } }, { "$addFields" : { "c" : "$n", "h" : 68, "w" : "$w" } }, { "$addFields" : { "a" : "$j", "f" : "$t", "w" : "$w" } } ]
{_id: 1, e: 95, a: 83, h: 68, x: {a: 4, b: 40, c: 0}, g: 26, i: 65, b: 24, j: 83},
{_id: 7, h: 68, x: {a: 47, b: 88, c: 40}, i: 44, g: 66, e: 78, a: 83, b: 24, j: 83},
{_id: 8, g: 62, i: 43, e: 63, a: 83, h: 68, x: {a: 9, b: 4, c: 79}, b: 24, j: 83}
{_id: 1, e: 95, h: 68, x: {a: 4, b: 40, c: 0}, g: 26, i: 65, b: 24, j: 83, a: 83},
{_id: 7, h: 68, x: {a: 47, b: 88, c: 40}, i: 44, g: 66, e: 78, b: 24, j: 83, a: 83},
{_id: 8, g: 62, i: 43, e: 63, h: 68, x: {a: 9, b: 4, c: 79}, b: 24, j: 83, a: 83}
Query 40 (with useIndex=true): [ { "$project" : { "g" : 0, "d" : 0, "w" : 0 } }, { "$project" : { "e" : 0 } }, { "$match" : { "d" : { "$gte" : 19 } } }, { "$addFields" : { "j" : "$b" } }, { "$project" : { "k" : 0, "y.a" : 0 } }, { "$project" : { "d" : 0 } }, { "$project" : { "g" : 1, "k" : 1, "j" : 1, "h" : 1, "a" : 1, "d" : 1, "b" : 1, "f" : 1, "c" : 1, "e" : 1, "y.c" : 1, "x.c" : 1 } }, { "$match" : { "h" : { "$lt" : 90 } } }, { "$project" : { "i" : 1, "c" : 1, "e" : 1, "b" : 1, "f" : 1, "a" : 1, "d" : "$e", "l" : 1, "j" : "$f", "y" : 1 } }, { "$addFields" : { "j" : 58, "f" : 94, "d" : "$t" } }, { "$addFields" : { "h" : 88, "l" : 10, "w" : "$x" } } ]
Query 41 (with useIndex=true): [ { "$project" : { "c" : 1, "j" : "$j", "h" : 1, "f" : 1, "a" : "$e", "k" : 1, "b" : 1, "g" : 1, "i" : { "$literal" : 48 }, "e" : 1, "y.b" : 1, "y.c" : 1, "w.a" : 1 } }, { "$project" : { "j" : 0, "d" : 0, "w.b" : 0 } }, { "$match" : { "e" : { "$gte" : 24 } } }, { "$project" : { "f" : 0, "k" : 0, "y.c" : 0 } }, { "$addFields" : { "j" : "$r", "w" : "$w" } }, { "$project" : { "k" : 0, "f" : 0, "x" : 0 } }, { "$addFields" : { "f" : 78, "k" : 82, "y.c" : 0, "y.a" : 30 } }, { "$addFields" : { "f" : 86, "j" : 0, "i" : 1 } }, { "$match" : { "f" : { "$gt" : 1 } } }, { "$addFields" : { "i" : 87, "c" : 90, "x" : "$w" } }, { "$project" : { "b" : 0 } }, { "$addFields" : { "f" : "$q", "w.c" : 22 } } ]
{_id: 1, e: 95, h: 71, g: 26, c: 90, w: {a: 18, c: 22}, j: 0, a: 95, i: 87, y: {c: 0, a: 30}, k: 82, x: {a: 18}},
{_id: 3, h: 72, g: 8, c: 90, w: {a: 11, c: 22}, e: 40, j: 0, a: 40, i: 87, y: {c: 0, a: 30}, k: 82, x: {a: 11}},
{_id: 4, h: 83, g: 16, c: 90, w: {a: 86, c: 22}, e: 82, j: 0, a: 82, i: 87, y: {c: 0, a: 30}, k: 82, x: {a: 86}},
{_id: 5, g: 15, e: 87, c: 90, w: {a: 44, c: 22}, h: 75, j: 0, a: 87, i: 87, y: {c: 0, a: 30}, k: 82, x: {a: 44}},
{_id: 6, e: 55, c: 90, w: {a: 10, c: 22}, h: 71, g: 16, j: 0, a: 55, i: 87, y: {c: 0, a: 30}, k: 82, x: {a: 10}},
{_id: 7, w: {a: 48, c: 22}, h: 86, g: 66, e: 78, c: 90, j: 0, a: 78, i: 87, y: {c: 0, a: 30}, k: 82, x: {a: 48}},
{_id: 8, g: 62, c: 90, w: {a: 15, c: 22}, e: 63, h: 74, j: 0, a: 63, i: 87, y: {c: 0, a: 30}, k: 82, x: {a: 15}}
{_id: 1, e: 95, h: 71, g: 26, c: 90, w: {a: 18, c: 22}, a: 95, i: 87, k: 82, y: {c: 0, a: 30}, j: 0, x: {a: 18}},
{_id: 3, h: 72, g: 8, c: 90, w: {a: 11, c: 22}, e: 40, a: 40, i: 87, k: 82, y: {c: 0, a: 30}, j: 0, x: {a: 11}},
{_id: 4, h: 83, g: 16, c: 90, w: {a: 86, c: 22}, e: 82, a: 82, i: 87, k: 82, y: {c: 0, a: 30}, j: 0, x: {a: 86}},
{_id: 5, g: 15, e: 87, c: 90, w: {a: 44, c: 22}, h: 75, a: 87, i: 87, k: 82, y: {c: 0, a: 30}, j: 0, x: {a: 44}},
{_id: 6, e: 55, c: 90, w: {a: 10, c: 22}, h: 71, g: 16, a: 55, i: 87, k: 82, y: {c: 0, a: 30}, j: 0, x: {a: 10}},
{_id: 7, w: {a: 48, c: 22}, h: 86, g: 66, e: 78, c: 90, a: 78, i: 87, k: 82, y: {c: 0, a: 30}, j: 0, x: {a: 48}},
{_id: 8, g: 62, c: 90, w: {a: 15, c: 22}, e: 63, h: 74, a: 63, i: 87, k: 82, y: {c: 0, a: 30}, j: 0, x: {a: 15}}
Query 42 (with useIndex=true): [ { "$addFields" : { "f" : "$o", "y" : "$x" } }, { "$addFields" : { "i" : 31, "h" : 8, "y" : "$w" } }, { "$match" : { "i" : { "$lte" : 77 } } }, { "$match" : { "k" : { "$gt" : 1 } } }, { "$addFields" : { "b" : "$n", "k" : 1, "x.c" : 9 } }, { "$match" : { "i" : { "$lte" : 98 } } }, { "$setWindowFields" : { "partitionBy" : "$j", "sortBy" : { "b" : -1, "_id" : 1 }, "output" : { "h" : { "$sum" : "$h", "window" : { "documents" : [ "unbounded", "unbounded" ] } } } } }, { "$match" : { "l" : { "$gte" : 3 } } }, { "$addFields" : { "c" : "$b", "y" : "$x" } }, { "$match" : { "i" : { "$gte" : 15 } } }, { "$project" : { "g" : 0, "w.b" : 0, "w.a" : 0 } }, { "$addFields" : { "i" : 91, "a" : "$f", "l" : 40 } } ]
@@ -758,14 +758,14 @@ Query 60 (with useIndex=true): [ { "$lookup" : { "from" : "complex_pipelines_for
Query 61 (with useIndex=true): [ { "$addFields" : { "b" : "$q" } }, { "$addFields" : { "i" : 16, "b" : 57, "w" : "$y" } }, { "$addFields" : { "g" : "$l", "w.c" : 93, "w.a" : 97 } }, { "$match" : { "f" : { "$gt" : 1 } } }, { "$match" : { "b" : { "$gte" : 2 } } }, { "$addFields" : { "d" : 29, "h" : "$d" } }, { "$setWindowFields" : { "partitionBy" : "$b", "sortBy" : { "a" : -1, "_id" : 1 }, "output" : { "e" : { "$sum" : "$e", "window" : { "documents" : [ -2, 2 ] } } } } }, { "$addFields" : { "a" : 56, "b" : 74, "d" : "$f", "y" : "$x" } }, { "$match" : { "w.c" : { "$gte" : 1 } } }, { "$match" : { "e" : { "$gte" : 12 } } } ]
{_id: 1, e: 358, a: 56, h: 10, d: 85, x: {a: 4, b: 40, c: 0}, c: 60, w: {c: 93, a: 97}, f: 85, b: 74, i: 16, y: {a: 4, b: 40, c: 0}},
{_id: 2, e: 233, w: {c: 93, a: 97}, d: 98, i: 16, c: 32, h: 94, b: 74, a: 56, f: 98, x: {a: 8, b: 71, c: 40}, y: {a: 8, b: 71, c: 40}},
{_id: 3, a: 56, h: 93, d: 49, x: {a: 19, b: 99, c: 77}, c: 77, w: {c: 93, a: 97}, f: 49, b: 74, i: 16, e: 217, y: {a: 19, b: 99, c: 77}},
{_id: 4, a: 56, h: 34, d: 50, x: {a: 81, b: 68, c: 20}, c: 87, w: {c: 93, a: 97}, f: 50, b: 74, i: 16, e: 280, y: {a: 81, b: 68, c: 20}},
{_id: 5, d: 69, b: 74, x: {a: 75, b: 5, c: 70}, i: 16, e: 155, c: 49, a: 56, w: {c: 93, a: 97}, h: 7, f: 69, y: {a: 75, b: 5, c: 70}},
{_id: 6, f: 41, e: 296, d: 41, c: 94, b: 74, a: 56, x: {a: 59, b: 36, c: 59}, w: {c: 93, a: 97}, i: 16, h: 54, y: {a: 59, b: 36, c: 59}},
{_id: 7, w: {c: 93, a: 97}, h: 65, f: 18, d: 18, b: 74, x: {a: 47, b: 88, c: 40}, i: 16, e: 304, c: 11, a: 56, y: {a: 47, b: 88, c: 40}},
{_id: 8, c: 24, w: {c: 93, a: 97}, f: 4, b: 74, i: 16, e: 373, a: 56, h: 92, d: 4, x: {a: 9, b: 4, c: 79}, y: {a: 9, b: 4, c: 79}}
{_id: 1, e: 358, a: 56, h: 10, d: 85, x: {a: 4, b: 40, c: 0}, c: 60, f: 85, i: 16, b: 74, w: {c: 93, a: 97}, y: {a: 4, b: 40, c: 0}},
{_id: 2, e: 233, d: 98, i: 16, c: 32, h: 94, a: 56, f: 98, x: {a: 8, b: 71, c: 40}, b: 74, w: {c: 93, a: 97}, y: {a: 8, b: 71, c: 40}},
{_id: 3, a: 56, h: 93, d: 49, x: {a: 19, b: 99, c: 77}, c: 77, f: 49, i: 16, e: 217, b: 74, w: {c: 93, a: 97}, y: {a: 19, b: 99, c: 77}},
{_id: 4, a: 56, h: 34, d: 50, x: {a: 81, b: 68, c: 20}, c: 87, f: 50, i: 16, e: 280, b: 74, w: {c: 93, a: 97}, y: {a: 81, b: 68, c: 20}},
{_id: 5, d: 69, x: {a: 75, b: 5, c: 70}, i: 16, e: 155, c: 49, a: 56, h: 7, f: 69, b: 74, w: {c: 93, a: 97}, y: {a: 75, b: 5, c: 70}},
{_id: 6, f: 41, e: 296, d: 41, c: 94, a: 56, x: {a: 59, b: 36, c: 59}, i: 16, h: 54, b: 74, w: {c: 93, a: 97}, y: {a: 59, b: 36, c: 59}},
{_id: 7, h: 65, f: 18, d: 18, x: {a: 47, b: 88, c: 40}, i: 16, e: 304, c: 11, a: 56, b: 74, w: {c: 93, a: 97}, y: {a: 47, b: 88, c: 40}},
{_id: 8, c: 24, f: 4, i: 16, e: 373, a: 56, h: 92, d: 4, x: {a: 9, b: 4, c: 79}, b: 74, w: {c: 93, a: 97}, y: {a: 9, b: 4, c: 79}}
Query 62 (with useIndex=true): [ { "$addFields" : { "f" : "$r", "b" : 11 } }, { "$match" : { "y.b" : { "$lte" : 97 } } }, { "$addFields" : { "f" : 73, "c" : 64 } }, { "$addFields" : { "e" : 96, "g" : 10, "w" : "$x" } }, { "$sort" : { "i" : 1, "_id" : 1 } }, { "$limit" : 7 } ]
@@ -786,14 +786,14 @@ Query 65 (with useIndex=true): [ { "$sort" : { "i" : -1, "_id" : 1 } }, { "$limi
Query 66 (with useIndex=true): [ { "$sort" : { "c" : -1, "f" : 1, "_id" : 1 } }, { "$project" : { "i" : "$g", "h" : 1, "d" : 1, "l" : 1, "e" : 1, "g" : 1, "k" : 1, "b" : 1, "c" : "$b", "a" : 1, "j" : 1, "w" : 1 } }, { "$project" : { "b" : 1, "j" : 1, "e" : 1, "l" : 1, "c" : 1, "i" : 1, "f" : 1, "h" : 1, "a" : "$f", "x.a" : 1, "y.c" : 1 } }, { "$addFields" : { "f" : 80, "g" : "$f", "e" : 71, "w.b" : 44, "w.c" : 77 } }, { "$addFields" : { "a" : "$f", "g" : 46, "k" : 70 } } ]
{_id: 1, l: null, j: null, h: 71, e: 71, b: 64, i: 26, c: 64, a: 80, f: 80, g: 46, w: {b: 44, c: 77}, k: 70},
{_id: 2, l: null, j: null, h: 50, e: 71, b: 21, i: 2, c: 21, a: 80, f: 80, g: 46, w: {b: 44, c: 77}, k: 70},
{_id: 3, l: null, j: null, h: 72, e: 71, b: 47, i: 8, c: 47, a: 80, f: 80, g: 46, w: {b: 44, c: 77}, k: 70},
{_id: 4, l: null, j: null, h: 83, e: 71, b: 76, i: 16, c: 76, a: 80, f: 80, g: 46, w: {b: 44, c: 77}, k: 70},
{_id: 5, l: null, j: null, h: 75, e: 71, b: 4, i: 15, c: 4, a: 80, f: 80, g: 46, w: {b: 44, c: 77}, k: 70},
{_id: 6, l: null, j: null, h: 71, e: 71, b: 71, i: 16, c: 71, a: 80, f: 80, g: 46, w: {b: 44, c: 77}, k: 70},
{_id: 7, l: null, j: null, h: 86, e: 71, b: 40, i: 66, c: 40, a: 80, f: 80, g: 46, w: {b: 44, c: 77}, k: 70},
{_id: 8, l: null, j: null, h: 74, e: 71, b: 81, i: 62, c: 81, a: 80, f: 80, g: 46, w: {b: 44, c: 77}, k: 70}
{_id: 1, l: null, j: null, h: 71, e: 71, b: 64, i: 26, c: 64, f: 80, w: {b: 44, c: 77}, a: 80, g: 46, k: 70},
{_id: 2, l: null, j: null, h: 50, e: 71, b: 21, i: 2, c: 21, f: 80, w: {b: 44, c: 77}, a: 80, g: 46, k: 70},
{_id: 3, l: null, j: null, h: 72, e: 71, b: 47, i: 8, c: 47, f: 80, w: {b: 44, c: 77}, a: 80, g: 46, k: 70},
{_id: 4, l: null, j: null, h: 83, e: 71, b: 76, i: 16, c: 76, f: 80, w: {b: 44, c: 77}, a: 80, g: 46, k: 70},
{_id: 5, l: null, j: null, h: 75, e: 71, b: 4, i: 15, c: 4, f: 80, w: {b: 44, c: 77}, a: 80, g: 46, k: 70},
{_id: 6, l: null, j: null, h: 71, e: 71, b: 71, i: 16, c: 71, f: 80, w: {b: 44, c: 77}, a: 80, g: 46, k: 70},
{_id: 7, l: null, j: null, h: 86, e: 71, b: 40, i: 66, c: 40, f: 80, w: {b: 44, c: 77}, a: 80, g: 46, k: 70},
{_id: 8, l: null, j: null, h: 74, e: 71, b: 81, i: 62, c: 81, f: 80, w: {b: 44, c: 77}, a: 80, g: 46, k: 70}
Query 67 (with useIndex=true): [ { "$addFields" : { "b" : "$d", "w.a" : 44 } }, { "$addFields" : { "j" : 57, "y.c" : 60, "y.a" : 75 } }, { "$sort" : { "l" : -1, "_id" : 1 } }, { "$limit" : 7 }, { "$project" : { "b" : 0, "c" : 0, "y" : 0 } }, { "$match" : { "y.a" : { "$lte" : 96 } } }, { "$sort" : { "e" : 1, "_id" : 1 } }, { "$limit" : 8 }, { "$project" : { "i" : 0, "x" : 0 } } ]

View File

@@ -0,0 +1,433 @@
## 1. Sort with large memory limit
### Pipeline
```json
[ { "$sort" : { "a" : 1 } } ]
```
### Slow query spilling stats
```json
{ }
```
## 2. Sort with empty collection
### Pipeline
```json
[ { "$sort" : { "a" : 1 } } ]
```
### Slow query spilling stats
```json
{ }
```
## 3. Sort with spilling
### Pipeline
```json
[ { "$sort" : { "a" : 1 } } ]
```
### Slow query spilling stats
```json
{
"sortSpilledBytes" : "X",
"sortSpilledDataStorageSize" : "X",
"sortSpilledRecords" : 8,
"sortSpills" : 5,
"usedDisk" : true
}
```
## 4. Multiple sorts
### Pipeline
```json
[
{
"$sort" : {
"a" : 1
}
},
{
"$limit" : 3
},
{
"$sort" : {
"b" : 1
}
}
]
```
### Slow query spilling stats
```json
{
"sortSpilledBytes" : "X",
"sortSpilledDataStorageSize" : "X",
"sortSpilledRecords" : 16,
"sortSpills" : 10,
"usedDisk" : true
}
```
## 5. Timeseries sort
### Pipeline
```json
[ { "$sort" : { "time" : 1 } } ]
```
### Slow query spilling stats
```json
{
"sortSpilledBytes" : "X",
"sortSpilledDataStorageSize" : "X",
"sortSpilledRecords" : 50,
"sortSpills" : 50,
"usedDisk" : true
}
```
## 6. Group
### Pipeline
```json
[
{
"$group" : {
"_id" : "$a",
"b" : {
"$sum" : "$b"
}
}
},
{
"$sort" : {
"b" : 1
}
}
]
```
### Slow query spilling stats
```json
{
"groupSpilledBytes" : "X",
"groupSpilledDataStorageSize" : "X",
"groupSpilledRecords" : 4,
"groupSpills" : 4,
"sortSpilledBytes" : "X",
"sortSpilledDataStorageSize" : "X",
"sortSpilledRecords" : 4,
"sortSpills" : 3,
"usedDisk" : true
}
```
### Slow query spill storage stats
```json
{ "timeWaitingMicros" : "X" }
```
## 7. TextOr and projection
### Pipeline
```json
[
{
"$match" : {
"$text" : {
"$search" : "black tea"
}
}
},
{
"$addFields" : {
"score" : {
"$meta" : "textScore"
}
}
}
]
```
### Slow query spilling stats
```json
{
"textOrSpilledBytes" : "X",
"textOrSpilledDataStorageSize" : "X",
"textOrSpilledRecords" : 4,
"textOrSpills" : 4,
"usedDisk" : true
}
```
## 8. TextOr and sort
### Pipeline
```json
[
{
"$match" : {
"$text" : {
"$search" : "black tea"
}
}
},
{
"$sort" : {
"_" : {
"$meta" : "textScore"
}
}
}
]
```
### Slow query spilling stats
```json
{
"sortSpilledBytes" : "X",
"sortSpilledDataStorageSize" : "X",
"sortSpilledRecords" : 8,
"sortSpills" : 5,
"textOrSpilledBytes" : "X",
"textOrSpilledDataStorageSize" : "X",
"textOrSpilledRecords" : 4,
"textOrSpills" : 4,
"usedDisk" : true
}
```
## 9. BucketAuto
### Pipeline
```json
[
{
"$bucketAuto" : {
"groupBy" : "$a",
"buckets" : 2,
"output" : {
"sum" : {
"$sum" : "$b"
}
}
}
}
]
```
### Slow query spilling stats
```json
{
"bucketAutoSpilledBytes" : "X",
"bucketAutoSpilledDataStorageSize" : "X",
"bucketAutoSpilledRecords" : 13,
"bucketAutoSpills" : 7,
"usedDisk" : true
}
```
## 10. HashLookup
### Pipeline
```json
[
{
"$lookup" : {
"from" : "logs_spilling_md_students",
"localField" : "name",
"foreignField" : "name",
"as" : "matched"
}
}
]
```
### Slow query spilling stats
```json
{
"hashLookupSpilledBytes" : "X",
"hashLookupSpilledDataStorageSize" : "X",
"hashLookupSpilledRecords" : 14,
"hashLookupSpills" : 16,
"usedDisk" : true
}
```
### Slow query spill storage stats
```json
{ "timeWaitingMicros" : "X" }
```
## 11. Graph lookup
### Pipeline
```json
[
{
"$limit" : 1
},
{
"$graphLookup" : {
"from" : "coll",
"startWith" : 1,
"connectFromField" : "to",
"connectToField" : "_id",
"as" : "path",
"depthField" : "depth"
}
}
]
```
### Slow query spilling stats
```json
{
"graphLookupSpilledBytes" : "X",
"graphLookupSpilledDataStorageSize" : "X",
"graphLookupSpilledRecords" : 2,
"graphLookupSpills" : 2,
"usedDisk" : true
}
```
### Slow query spill storage stats
```json
{ "timeWaitingMicros" : "X" }
```
## 12. Graph lookup with unwind and sort
### Pipeline
```json
[
{
"$limit" : 1
},
{
"$graphLookup" : {
"from" : "coll",
"startWith" : 1,
"connectFromField" : "to",
"connectToField" : "_id",
"as" : "path",
"depthField" : "depth"
}
},
{
"$unwind" : "$path"
},
{
"$sort" : {
"path.depth" : 1
}
}
]
```
### Slow query spilling stats
```json
{
"graphLookupSpilledBytes" : "X",
"graphLookupSpilledDataStorageSize" : "X",
"graphLookupSpilledRecords" : 2,
"graphLookupSpills" : 2,
"usedDisk" : true
}
```
### Slow query spill storage stats
```json
{ "timeWaitingMicros" : "X" }
```
## 13. HashLookupUnwind
### Pipeline
```json
[
{
"$lookup" : {
"from" : "logs_spilling_md_locations",
"localField" : "locationName",
"foreignField" : "name",
"as" : "location"
}
},
{
"$unwind" : "$location"
},
{
"$project" : {
"locationName" : false,
"location.extra" : false,
"location.coordinates" : false,
"colors" : false
}
}
]
```
### Slow query spilling stats
```json
{
"hashJoinSpilledBytes" : "X",
"hashJoinSpilledDataStorageSize" : "X",
"hashJoinSpilledRecords" : 10,
"hashJoinSpills" : 8,
"usedDisk" : true
}
```
## 14. SetWindowFields
### Pipeline
```json
[
{
"$setWindowFields" : {
"partitionBy" : "$a",
"sortBy" : {
"b" : 1
},
"output" : {
"sum" : {
"$sum" : "$b"
}
}
}
}
]
```
### Slow query spilling stats
```json
{
"setWindowFieldsSpilledBytes" : "X",
"setWindowFieldsSpilledDataStorageSize" : "X",
"setWindowFieldsSpilledRecords" : 4,
"setWindowFieldsSpills" : 2,
"sortSpilledBytes" : "X",
"sortSpilledDataStorageSize" : "X",
"sortSpilledRecords" : 13,
"sortSpills" : 7,
"usedDisk" : true
}
```
### Slow query spill storage stats
```json
{ "timeWaitingMicros" : "X" }
```
### Pipeline
```json
[
{
"$setWindowFields" : {
"partitionBy" : "$a",
"sortBy" : {
"b" : 1
},
"output" : {
"sum" : {
"$sum" : "$b"
}
}
}
},
{
"$limit" : 1
}
]
```
### Slow query spilling stats
```json
{
"setWindowFieldsSpilledBytes" : "X",
"setWindowFieldsSpilledDataStorageSize" : "X",
"setWindowFieldsSpilledRecords" : 2,
"setWindowFieldsSpills" : 1,
"sortSpilledBytes" : "X",
"sortSpilledDataStorageSize" : "X",
"sortSpilledRecords" : 13,
"sortSpills" : 7,
"usedDisk" : true
}
```
### Slow query spill storage stats
```json
{ "timeWaitingMicros" : "X" }
```

View File

@@ -279,7 +279,9 @@ outputPipelineAndSlowQueryLog(
coll.drop();
saveParameterToRestore("internalQuerySlotBasedExecutionHashJoinApproxMemoryUseInBytesBeforeSpill");
section("HashLookupUnwind");
setServerParameter("internalQuerySlotBasedExecutionHashJoinApproxMemoryUseInBytesBeforeSpill", 1);
const locations = db[jsTestName() + "_locations"];
locations.drop();
@@ -312,11 +314,6 @@ const animalsDocs = [
assert.commandWorked(locations.insertMany(locationsDocs));
assert.commandWorked(animals.insertMany(animalsDocs));
// TODO: SERVER-119477 remove the disablement of Join Optimization once we can force the spilling
// of its hash join implementation
saveParameterToRestore("internalEnableJoinOptimization");
setServerParameter("internalEnableJoinOptimization", false);
outputPipelineAndSlowQueryLog(
animals,
[

View File

@@ -140,6 +140,14 @@ void addSingleSpillingStats(PlanSummaryStats::SpillingStage stage,
appendCallback("hashLookupSpilledDataStorageSize",
static_cast<long long>(stats.getSpilledDataStorageSize()));
return;
case PlanSummaryStats::SpillingStage::HASH_JOIN:
appendCallback("hashJoinSpills", static_cast<long long>(stats.getSpills()));
appendCallback("hashJoinSpilledBytes", static_cast<long long>(stats.getSpilledBytes()));
appendCallback("hashJoinSpilledRecords",
static_cast<long long>(stats.getSpilledRecords()));
appendCallback("hashJoinSpilledDataStorageSize",
static_cast<long long>(stats.getSpilledDataStorageSize()));
return;
}
MONGO_UNREACHABLE_TASSERT(9851000);
}

View File

@@ -102,6 +102,7 @@ struct MONGO_MOD_PUBLIC PlanSummaryStats {
GRAPH_LOOKUP,
GROUP,
HASH_LOOKUP,
HASH_JOIN,
SET_WINDOW_FIELDS,
SORT,
TEXT_OR,

View File

@@ -108,6 +108,13 @@ public:
hashLookupSpillingStatsTotal);
}
}
void visit(tree_walker::MaybeConstPtr<true, sbe::HashJoinStats> stats) final {
if (stats->spillingStats.getSpills() > 0) {
_summary.usedDisk = true;
_summary.spillingStatsPerStage[PlanSummaryStats::SpillingStage::HASH_JOIN].accumulate(
stats->spillingStats);
}
}
void visit(tree_walker::MaybeConstPtr<true, DocumentSourceCursorStats> stats) final {
accumulate(stats->planSummaryStats);
}