-
Type: Bug
-
Resolution: Done
-
Priority: Major - P3
-
Affects Version/s: 2.5.4
-
Component/s: Querying
-
Minor Change
-
ALL
attached smoke test specifies index using the more correct numerical value
{a: 1}instead of using boolean. still get similar results. When the sort spec is not exactly the same as the index spec, the query optimizer fails to come up with a plan that uses the sparse index. query planning output below:
Beginning planning, options = INCLUDE_COLLSCAN Canonical query: ns=test.server11568 limit=0 skip=0 Tree: $and Sort: { a: true } Proj: {} ============================= idx 0 is { _id: 1 } idx 1 is { a: 1.0 } sparse Finding relevant indices rated tree $and Planner: outputted 0 indexed solutions. Planner: outputting a collscan: SORT ---pattern = { a: true } ---fetched = 1 ---sortedByDiskLoc = 0 ---getSort = [] Child: ------COLLSCAN ---------ns = test.server11568 --------- filter = $and ---------fetched = 1 ---------sortedByDiskLoc = 0 ---------getSort = [] not caching runner but returning 2 results
-------------------
2.4.6 (and afaict, since "forever")
> db.example.ensureIndex({title: true}, {sparse: true}) > db.example.insert({name: "Bob", title: "doctor"}) > db.example.insert({name: "Jim"}) > db.example.find().sort({title: true}) { "_id" : ObjectId("5278370b13b0e338b3511f67"), "name" : "Bob", "title" : "doctor" } > db.example.find().sort({title: 1}) { "_id" : ObjectId("5278370b13b0e338b3511f67"), "name" : "Bob", "title" : "doctor" } >
in master from today (worked fine ~7days ago):
db.example.ensureIndex({title: true}, {sparse: true}) > db.example.insert({name: "Bob", title: "doctor"}) > db.example.insert({name: "Jim"}) > db.example.find().sort({title: true}) { "_id" : ObjectId("527836b596870941233e3da8"), "name" : "Bob", "title" : "doctor" } > db.example.find().sort({title: 1}) { "_id" : ObjectId("527836bb96870941233e3da9"), "name" : "Jim" } { "_id" : ObjectId("527836b596870941233e3da8"), "name" : "Bob", "title" : "doctor" } >
Suddenly it matters if its 1 or true
- is related to
-
SERVER-8067 incorrect use of sparse index to sort query results
- Closed
-
SERVER-11064 Stricter validation of index key patterns during index creation and startup
- Closed
-
SERVER-15287 Query planner sort analysis incorrectly allows index key pattern plugin fields to provide sort
- Closed