Files
mongo/jstests/core/query/explain/explain_sample.js
Zac 591928c619 SERVER-108478 JS formatted by prettier and remove clang-format (#39656)
GitOrigin-RevId: 6c8f6aded47f260aa4f7c231b17dae3302cb1e04
2025-08-21 17:27:09 +00:00

38 lines
1.1 KiB
JavaScript

/**
* Tests for explaining an aggregation pipeline which uses the $sample stage.
* @tags: [
* assumes_read_concern_local,
* ]
*/
import {getAggPlanStages} from "jstests/libs/query/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),
);