summaryrefslogtreecommitdiff
path: root/jstests/core/explain_skip.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/core/explain_skip.js')
-rw-r--r--jstests/core/explain_skip.js28
1 files changed, 28 insertions, 0 deletions
diff --git a/jstests/core/explain_skip.js b/jstests/core/explain_skip.js
new file mode 100644
index 00000000000..b6e01d6a436
--- /dev/null
+++ b/jstests/core/explain_skip.js
@@ -0,0 +1,28 @@
+/**
+ * Tests that explain reports the skip stage statistics correctly.
+ *
+ * @tags: [
+ * assumes_unsharded_collection,
+ * assumes_against_mongod_not_mongos,
+ * ]
+ */
+load("jstests/libs/analyze_plan.js"); // For getWinningPlan.
+
+var coll = db.explain_skip;
+coll.drop();
+
+assert.commandWorked(coll.insert({a: 1, b: 1}));
+assert.commandWorked(coll.insert({a: 1, b: 2}));
+assert.commandWorked(coll.insert({a: 1, b: 3}));
+assert.commandWorked(coll.insert({a: 2, b: 1}));
+assert.commandWorked(coll.insert({a: 2, b: 2}));
+assert.commandWorked(coll.insert({a: 2, b: 3}));
+
+assert.commandWorked(coll.createIndex({a: 1}));
+assert.commandWorked(coll.createIndex({b: 1}));
+
+var explain = coll.find({a: 1, b: 1}).sort({_id: 1}).skip(5).explain();
+var winningPlan = getWinningPlan(explain.queryPlanner);
+var skipStage = getPlanStage(winningPlan, "SKIP");
+assert.neq(null, skipStage, explain);
+assert.eq(5, skipStage.skipAmount, explain);