-
Type: Bug
-
Resolution: Duplicate
-
Priority: Major - P3
-
None
-
Affects Version/s: 2.6.5
-
Component/s: Aggregation Framework, Diagnostics, Querying
-
None
-
Fully Compatible
-
ALL
Affects 2.6.x.
When an aggregation explain is run on a cached plan, the server outputs a truncated value for the "cursor" field.
> db.foo.drop() true > db.foo.ensureIndex({a:1}) { "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 } > db.foo.ensureIndex({b:1}) { "createdCollectionAutomatically" : false, "numIndexesBefore" : 2, "numIndexesAfter" : 3, "ok" : 1 } > db.foo.insert({a:1,b:2}) WriteResult({ "nInserted" : 1 }) > db.foo.insert({a:1,b:2}) WriteResult({ "nInserted" : 1 }) > db.foo.insert({a:1,b:2}) WriteResult({ "nInserted" : 1 }) > db.foo.aggregate([{$match: {a:1,b:1}}]) // Caches plan. > db.foo.aggregate([{$match: {a:1,b:1}}],{explain:true}) { "stages" : [ { "$cursor" : { "query" : { "a" : 1, "b" : 1 }, "plan" : { "cursor" : "BtreeCursor ", // INCORRECT "isMultiKey" : false, "scanAndOrder" : false, "indexBounds" : { "b" : [ [ 1, 1 ] ] }, "allPlans" : [ { "cursor" : "BtreeCursor ", // INCORRECT "isMultiKey" : false, "scanAndOrder" : false, "indexBounds" : { "b" : [ [ 1, 1 ] ] } } ] } } } ], "ok" : 1 } >
Aggregation queries with only one solution are affected, as well.
> db.foo.aggregate([{$match: {a:1}}],{explain:true}) { "stages" : [ { "$cursor" : { "query" : { "a" : 1 }, "plan" : { "cursor" : "BtreeCursor ", // INCORRECT "isMultiKey" : false, "scanAndOrder" : false, "indexBounds" : { "a" : [ [ 1, 1 ] ] }, "allPlans" : [ { "cursor" : "BtreeCursor ", // INCORRECT "isMultiKey" : false, "scanAndOrder" : false, "indexBounds" : { "a" : [ [ 1, 1 ] ] } } ] } } } ], "ok" : 1 } >
- duplicates
-
SERVER-15958 The "isMultiKey" value is not correct in the output of aggregation explain plan
- Closed
- related to
-
SERVER-14610 Detailed explain does not list rejected plans
- Closed