blob: 5ead920b48c8cf701a8ba206f5f1c8a32dd0cf30 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
(function() {
"use strict";
load("jstests/libs/optimizer_utils.js"); // For checkCascadesOptimizerEnabled.
if (!checkCascadesOptimizerEnabled(db)) {
jsTestLog("Skipping test because the optimizer is not enabled");
return;
}
const coll = db.cqf_find_sort;
coll.drop();
const bulk = coll.initializeUnorderedBulkOp();
const nDocs = 10000;
let numResults = 0;
Random.srand(0);
for (let i = 0; i < nDocs; i++) {
const va = 100.0 * Random.rand();
const vb = 100.0 * Random.rand();
if (va < 5.0 && vb < 5.0) {
numResults++;
}
bulk.insert({a: va, b: vb});
}
assert.gt(numResults, 0);
assert.commandWorked(bulk.execute());
assert.commandWorked(coll.createIndex({a: 1, b: 1}));
const res = coll.explain("executionStats")
.find({a: {$lt: 5}, b: {$lt: 5}}, {a: 1, b: 1})
.sort({b: 1})
.finish();
assert.eq(numResults, res.executionStats.nReturned);
const indexScanNode = res.queryPlanner.winningPlan.optimizerPlan.child.child.child.leftChild.child;
assert.eq("IndexScan", indexScanNode.nodeType);
assert.eq(5, indexScanNode.interval[0].highBound.bound.value);
}());
|