summaryrefslogtreecommitdiff
path: root/jstests/core/coveredIndex1.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/core/coveredIndex1.js')
-rw-r--r--jstests/core/coveredIndex1.js56
1 files changed, 27 insertions, 29 deletions
diff --git a/jstests/core/coveredIndex1.js b/jstests/core/coveredIndex1.js
index 434988b3b30..328c53ba0bc 100644
--- a/jstests/core/coveredIndex1.js
+++ b/jstests/core/coveredIndex1.js
@@ -11,78 +11,76 @@ t.save({fn: "john", ln: "smith"});
t.save({fn: "jack", ln: "black"});
t.save({fn: "bob", ln: "murray"});
t.save({fn: "aaa", ln: "bbb", obj: {a: 1, b: "blah"}});
-assert.eq( t.findOne({ln: "doe"}).fn, "john", "Cannot find right record" );
-assert.eq( t.count(), 6, "Not right length" );
+assert.eq(t.findOne({ln: "doe"}).fn, "john", "Cannot find right record");
+assert.eq(t.count(), 6, "Not right length");
// use simple index
t.ensureIndex({ln: 1});
-assert( !isIndexOnly(t.find({ln: "doe"}).explain().queryPlanner.winningPlan),
- "Find using covered index but all fields are returned");
-assert( !isIndexOnly(t.find({ln: "doe"}, {ln: 1}).explain().queryPlanner.winningPlan),
- "Find using covered index but _id is returned");
-assert( isIndexOnly(t.find({ln: "doe"}, {ln: 1, _id: 0}).explain().queryPlanner.winningPlan),
- "Find is not using covered index");
+assert(!isIndexOnly(t.find({ln: "doe"}).explain().queryPlanner.winningPlan),
+ "Find using covered index but all fields are returned");
+assert(!isIndexOnly(t.find({ln: "doe"}, {ln: 1}).explain().queryPlanner.winningPlan),
+ "Find using covered index but _id is returned");
+assert(isIndexOnly(t.find({ln: "doe"}, {ln: 1, _id: 0}).explain().queryPlanner.winningPlan),
+ "Find is not using covered index");
// this time, without a query spec
// SERVER-2109
-//assert.eq( t.find({}, {ln: 1, _id: 0}).explain().indexOnly, true, "Find is not using covered index");
-assert( isIndexOnly(t.find({}, {ln: 1, _id: 0}).hint({ln: 1}).explain().queryPlanner.winningPlan),
- "Find is not using covered index");
+// assert.eq( t.find({}, {ln: 1, _id: 0}).explain().indexOnly, true, "Find is not using covered
+// index");
+assert(isIndexOnly(t.find({}, {ln: 1, _id: 0}).hint({ln: 1}).explain().queryPlanner.winningPlan),
+ "Find is not using covered index");
// use compound index
t.dropIndex({ln: 1});
t.ensureIndex({ln: 1, fn: 1});
// return 1 field
var plan = t.find({ln: "doe"}, {ln: 1, _id: 0}).explain();
-assert( isIndexOnly(plan.queryPlanner.winningPlan), "Find is not using covered index");
+assert(isIndexOnly(plan.queryPlanner.winningPlan), "Find is not using covered index");
// return both fields, multiple docs returned
var plan = t.find({ln: "doe"}, {ln: 1, fn: 1, _id: 0}).explain();
-assert( isIndexOnly(plan.queryPlanner.winningPlan), "Find is not using covered index");
+assert(isIndexOnly(plan.queryPlanner.winningPlan), "Find is not using covered index");
// match 1 record using both fields
var plan = t.find({ln: "doe", fn: "john"}, {ln: 1, fn: 1, _id: 0}).explain();
-assert( isIndexOnly(plan.queryPlanner.winningPlan), "Find is not using covered index");
+assert(isIndexOnly(plan.queryPlanner.winningPlan), "Find is not using covered index");
// change ordering
var plan = t.find({fn: "john", ln: "doe"}, {fn: 1, ln: 1, _id: 0}).explain();
-assert( isIndexOnly(plan.queryPlanner.winningPlan), "Find is not using covered index");
+assert(isIndexOnly(plan.queryPlanner.winningPlan), "Find is not using covered index");
// ask from 2nd index key
var plan = t.find({fn: "john"}, {fn: 1, _id: 0}).explain();
-assert( !isIndexOnly(plan.queryPlanner.winningPlan),
- "Find is using covered index, but doesnt have 1st key");
+assert(!isIndexOnly(plan.queryPlanner.winningPlan),
+ "Find is using covered index, but doesnt have 1st key");
// repeat above but with _id field
t.dropIndex({ln: 1, fn: 1});
t.ensureIndex({_id: 1, ln: 1});
// return 1 field
var plan = t.find({_id: 123, ln: "doe"}, {_id: 1}).explain();
-assert( isIndexOnly(plan.queryPlanner.winningPlan), "Find is not using covered index");
+assert(isIndexOnly(plan.queryPlanner.winningPlan), "Find is not using covered index");
// match 1 record using both fields
var plan = t.find({_id: 123, ln: "doe"}, {ln: 1}).explain();
-assert( isIndexOnly(plan.queryPlanner.winningPlan), "Find is not using covered index");
+assert(isIndexOnly(plan.queryPlanner.winningPlan), "Find is not using covered index");
// change ordering
var plan = t.find({ln: "doe", _id: 123}, {ln: 1, _id: 1}).explain();
-assert( isIndexOnly(plan.queryPlanner.winningPlan), "Find is not using covered index");
+assert(isIndexOnly(plan.queryPlanner.winningPlan), "Find is not using covered index");
// ask from 2nd index key
var plan = t.find({ln: "doe"}, {ln: 1}).explain();
-assert( !isIndexOnly(plan.queryPlanner.winningPlan),
- "Find is using covered index, but doesnt have 1st key");
+assert(!isIndexOnly(plan.queryPlanner.winningPlan),
+ "Find is using covered index, but doesnt have 1st key");
// repeat above but with embedded obj
t.dropIndex({_id: 1, ln: 1});
t.ensureIndex({obj: 1});
var plan = t.find({"obj.a": 1}, {obj: 1}).explain();
-assert( !isIndexOnly(plan.queryPlanner.winningPlan),
- "Shouldnt use index when introspecting object");
+assert(!isIndexOnly(plan.queryPlanner.winningPlan), "Shouldnt use index when introspecting object");
var plan = t.find({obj: {a: 1, b: "blah"}}).explain();
-assert( !isIndexOnly(plan.queryPlanner.winningPlan), "Index doesnt have all fields to cover");
+assert(!isIndexOnly(plan.queryPlanner.winningPlan), "Index doesnt have all fields to cover");
var plan = t.find({obj: {a: 1, b: "blah"}}, {obj: 1, _id: 0}).explain();
-assert( isIndexOnly(plan.queryPlanner.winningPlan), "Find is not using covered index");
+assert(isIndexOnly(plan.queryPlanner.winningPlan), "Find is not using covered index");
// repeat above but with index on sub obj field
t.dropIndex({obj: 1});
t.ensureIndex({"obj.a": 1, "obj.b": 1});
var plan = t.find({"obj.a": 1}, {obj: 1}).explain();
-assert( !isIndexOnly(plan.queryPlanner.winningPlan),
- "Shouldnt use index when introspecting object");
+assert(!isIndexOnly(plan.queryPlanner.winningPlan), "Shouldnt use index when introspecting object");
assert(t.validate().valid);
-