Files
mongo/jstests/core/query/explain/explain_sample.js
Nick Zolnierz 668a6f4e9e SERVER-94971 Add query ownership for files under jstests/libs (#27763)
GitOrigin-RevId: 1cd8a1cdb3d45876003ad3ccddd4d466cd9fb66c
2024-10-03 16:08:45 +00:00

32 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));