summaryrefslogtreecommitdiff
path: root/jstests/explain6.js
blob: 36a81e2fca361d87fa346bdb8b29e28dab268498 (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
// Test explain result count when a skip parameter is used.

t = db.jstests_explain6;
t.drop();

t.save( {} );
explain = t.find().skip( 1 ).explain( true );
assert.eq( 0, explain.n );
// With only one plan, the skip information is known for the plan.  This is an arbitrary
// implementation detail, but it changes the way n is calculated.
assert.eq( 0, explain.allPlans[ 0 ].n );

t.ensureIndex( {a:1} );
explain = t.find( {a:null,b:null} ).skip( 1 ).explain( true );
assert.eq( 0, explain.n );

// QUERY MIGRATION
// printjson( explain )
// Old Comment: With multiple plans, the skip information is not known to the plan
// In the new query system, the skip applies to alternative plans as well
// assert.eq( 1, explain.allPlans[ 0 ].n );

t.dropIndexes();
explain = t.find().skip( 1 ).sort({a:1}).explain( true );
// Skip is applied for an in memory sort.
assert.eq( 0, explain.n );
printjson(explain);
// See above comment about query migration
// assert.eq( 1, explain.allPlans[ 0 ].n );