summaryrefslogtreecommitdiff
path: root/jstests/explain6.js
diff options
context:
space:
mode:
authorAaron <aaron@10gen.com>2012-02-14 09:30:08 -0800
committerAaron <aaron@10gen.com>2012-02-24 22:49:08 -0800
commitafc4e7fe813a753bf24414ff1385226d8ebbbd86 (patch)
tree8f9e15194fb18651a9c7e73635fe7a5c6176758b /jstests/explain6.js
parentcb40560b1a085f9cd0e632b3e6879d6611df10dc (diff)
downloadmongo-afc4e7fe813a753bf24414ff1385226d8ebbbd86.tar.gz
4150 explain implementation checkpoint
Diffstat (limited to 'jstests/explain6.js')
-rw-r--r--jstests/explain6.js23
1 files changed, 23 insertions, 0 deletions
diff --git a/jstests/explain6.js b/jstests/explain6.js
new file mode 100644
index 00000000000..cf9668c9dbb
--- /dev/null
+++ b/jstests/explain6.js
@@ -0,0 +1,23 @@
+// 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 );
+// With multiple plans, the skip information is not known to the plan.
+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 );
+assert.eq( 1, explain.allPlans[ 0 ].n );