Commit c782aeff authored by marko's avatar marko

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.
parent 467b0a8d
...@@ -3330,6 +3330,20 @@ ibuf_insert_to_index_page( ...@@ -3330,6 +3330,20 @@ ibuf_insert_to_index_page(
rec = page_rec_get_next(page_get_infimum_rec(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) if (UNIV_UNLIKELY(rec_get_n_fields(rec, index)
!= dtuple_get_n_fields(entry))) { != dtuple_get_n_fields(entry))) {
fputs("InnoDB: Trying to insert a record from" fputs("InnoDB: Trying to insert a record from"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment