Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-8562

indexOnly should be false when sorting by a non indexed field

    • Type: Icon: Bug Bug
    • Resolution: Duplicate
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: 2.4.0-rc0
    • Component/s: Querying
    • None
    • Environment:
      2.4.0-rc0 on OS X
    • ALL
    • Hide

      var coll = db.getCollection("covered_negative_1")
      coll.drop()
      for (i=0;i<100;i++) {
      coll.insert(

      {a:i, b:"strvar_"+(i%13), c:NumberInt(i%10), d: i*10, e: [i, i%10]}

      )
      }
      coll.insert
      coll.ensureIndex(

      {a:1,b:-1,c:1}

      )
      coll.ensureIndex(

      {e:1}

      )
      coll.ensureIndex(

      {d:1}

      )
      // Test sort on non-indexed field
      var plan = coll.find({d:{$lt:1000}},

      {d:1, _id:0}

      ).sort(

      {c:1}

      ).hint(

      {d:1}

      ).explain()
      assert.eq(false, plan.indexOnly, "negative.1.6 - indexOnly should be false on a non covered query")

      Show
      var coll = db.getCollection("covered_negative_1") coll.drop() for (i=0;i<100;i++) { coll.insert( {a:i, b:"strvar_"+(i%13), c:NumberInt(i%10), d: i*10, e: [i, i%10]} ) } coll.insert coll.ensureIndex( {a:1,b:-1,c:1} ) coll.ensureIndex( {e:1} ) coll.ensureIndex( {d:1} ) // Test sort on non-indexed field var plan = coll.find({d:{$lt:1000}}, {d:1, _id:0} ).sort( {c:1} ).hint( {d:1} ).explain() assert.eq(false, plan.indexOnly, "negative.1.6 - indexOnly should be false on a non covered query")

      When sorting by a field that is not part of the index, indexOnly should be false irrespective of the fields projected.
      The test below yields indexOnly=true

            Assignee:
            Unassigned Unassigned
            Reporter:
            sridhar Sridhar Nanjundeswaran
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: