Indexes not updated when types change but values compare equally

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Done
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • None
    • Storage Execution
    • ALL
    • None
    • 3
    • None
    • None
    • None
    • None
    • None
    • None

      The AccessMethod code above the indexes groups values into added, removed, and unchanged based on value comparisons. Since this doesn't consider types, all values where only the type changed are considered "unchanged" and the index is not notified of the change.

      > db.foo.insert({_id:1, a:1})
      WriteResult({ "nInserted" : 1 })
      > db.foo.ensureIndex({a:1})
      {
              "createdCollectionAutomatically" : false,
              "numIndexesBefore" : 1,
              "numIndexesAfter" : 2,
              "ok" : 1
      }
      > db.foo.find({a:1}, {a:1, _id:0})
      { "a" : 1 }
      > db.foo.save({_id:1, a: NumberLong(1)})
      WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
      > db.foo.find({a:1}, {a:1, _id:0})
      { "a" : 1 }
      > db.foo.find({a:1}, {a:1, _id:0}).hint({$natural: 1})
      { "a" : NumberLong(1) }
      

            Assignee:
            [DO NOT USE] Backlog - Storage Execution Team
            Reporter:
            Mathias Stearn
            Votes:
            0 Vote for this issue
            Watchers:
            8 Start watching this issue

              Created:
              Updated:
              Resolved: