From c829e1c49770b65cd4e4eb9134fa29a11c42dab7 Mon Sep 17 00:00:00 2001 From: marko <> Date: Wed, 22 Oct 2008 10:00:01 +0000 Subject: [PATCH] branches/innodb+: ibuf_insert_to_index_page(): When the page is empty, look at the first deleted record when checking the number of fields. This fixes part of Issue #82. --- ibuf/ibuf0ibuf.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ibuf/ibuf0ibuf.c b/ibuf/ibuf0ibuf.c index a8816d493c2..a0cf50b1505 100644 --- a/ibuf/ibuf0ibuf.c +++ b/ibuf/ibuf0ibuf.c @@ -3330,6 +3330,20 @@ ibuf_insert_to_index_page( rec = page_rec_get_next(page_get_infimum_rec(page)); + if (page_rec_is_supremum(rec)) { + /* Empty pages can result from buffered delete operations. + The first record from the free list can be used to find the + father node. */ + rec = page_header_get_ptr(page, PAGE_FREE); + if (UNIV_UNLIKELY(rec == NULL)) { + fputs("InnoDB: Trying to insert a record from" + " the insert buffer to an index page\n" + "InnoDB: but the index page is empty!\n", + stderr); + goto dump; + } + } + if (UNIV_UNLIKELY(rec_get_n_fields(rec, index) != dtuple_get_n_fields(entry))) { fputs("InnoDB: Trying to insert a record from"