Files
mongo/jstests/core/explain_sample.js
2022-05-05 22:09:42 +00:00

37 lines
1.1 KiB
JavaScript

/**
* Tests for explaining an aggregation pipeline which uses the $sample stage.
* @tags: [
* assumes_read_concern_local,
* ]
*/
(function() {
"use strict";
load("jstests/libs/analyze_plan.js");
const coll = db.explain_sample;
coll.drop();
let docsToInsert = [];
for (let i = 0; i < 1000; ++i) {
docsToInsert.push({_id: i});
}
assert.commandWorked(coll.insert(docsToInsert));
// Verify that explain reports execution stats for the MULTI_ITERATOR stage. This is designed to
// reproduce SERVER-35973.
const explain =
assert.commandWorked(coll.explain("allPlansExecution").aggregate([{$sample: {size: 10}}]));
const multiIteratorStages = getAggPlanStages(explain, "MULTI_ITERATOR");
assert.gt(multiIteratorStages.length, 0, tojson(explain));
assert.gt(multiIteratorStages.reduce((acc, stage) => acc + stage.nReturned, 0),
0,
tojson(multiIteratorStages));
assert.gt(multiIteratorStages.reduce((acc, stage) => acc + stage.advanced, 0),
0,
tojson(multiIteratorStages));
assert.gt(multiIteratorStages.reduce((acc, stage) => acc + stage.works, 0),
0,
tojson(multiIteratorStages));
}());