[Date Prev][Date Next] [Chronological] [Thread] [Top]

(ITS#7861) Wrong entry count with MDB_DUPSORT databases

Full_Name: Hallvard B Furuseth
Version: mdb.master, 4b9aed26a5b1c0027b10d211c6e7270dbb1ade1c
OS: Linux x86_64
Submission from: (NULL) (2001:700:100:556::233)
Submitted by: hallvard

mdb_cursor_put() does not always know if it'll be inserting a
new item or not, e.g. when inserting in a sub-database.  This
was always wrong, but recent commits changed how it was wrong.

Fix: Split 'insert' in 'insert_key' + 'insert_data'.  Compute
insert_data from mx_db.md_entries before and after the insert.
In my UiO repo, branch mdb/todo-3:
  02dd3865d5 [Rewritten] ITS#xxxx Fix MDB_db.md_entries.
  c6c78f71d3 [New] Tweak varname 'insert'.
  (Cosmetic patch which does not apply cleanly, I guess I should
  make an mdb/todo-4 branch where it is applied earlier.)
Affects ITS#7834.

mdb_cursor_del(, MDB_NODUPDATA) only subtracts 1 from md_entries
when deleting a sub-page, instead of no of DUP entries.
  fa8e827026 [New,Squash] Fix md_entries in  mdb_cursor_del:MDB_NODUPDATA.