ITS#8316 cursor fixup in page_merge
authorHoward Chu <hyc@openldap.org>
Thu, 19 Nov 2015 20:04:16 +0000 (20:04 +0000)
committerHoward Chu <hyc@openldap.org>
Thu, 19 Nov 2015 20:04:16 +0000 (20:04 +0000)
Deleting the merged page requires bumping down other ki's
of the page's parent.

libraries/liblmdb/mdb.c

index 99da353..9c0c95e 100644 (file)
@@ -7963,6 +7963,8 @@ mdb_page_merge(MDB_cursor *csrc, MDB_cursor *cdst)
                                m3->mc_pg[top] = pdst;
                                m3->mc_ki[top] += nkeys;
                                m3->mc_ki[top-1] = cdst->mc_ki[top-1];
+                       } else if (m3->mc_ki[top-1] > csrc->mc_ki[top-1]) {
+                               m3->mc_ki[top-1]--;
                        }
                }
        }