Commit e8a709a6 authored by Marko Mäkelä's avatar Marko Mäkelä

ibuf_set_del_mark(): Do not complain about already delete-marked records.

According to a comment in row_upd_sec_index_entry(), it is a
legitimate situation that can be caused by a lock wait.
parent e85e1206
...@@ -3997,21 +3997,22 @@ ibuf_set_del_mark( ...@@ -3997,21 +3997,22 @@ ibuf_set_del_mark(
rec = page_cur_get_rec(&page_cur); rec = page_cur_get_rec(&page_cur);
page_zip = page_cur_get_page_zip(&page_cur); page_zip = page_cur_get_page_zip(&page_cur);
if (UNIV_UNLIKELY /* Delete mark the old index record. According to a
(rec_get_deleted_flag( comment in row_upd_sec_index_entry(), it can already
have been delete marked if a lock wait occurred in
row_ins_index_entry() in a previous invocation of
row_upd_sec_index_entry(). */
if (UNIV_LIKELY
(!rec_get_deleted_flag(
rec, dict_table_is_comp(index->table)))) { rec, dict_table_is_comp(index->table)))) {
ut_print_timestamp(stderr); btr_cur_set_deleted_flag_for_ibuf(rec, page_zip,
fputs(" InnoDB: record is already delete-marked\n", TRUE, mtr);
stderr);
goto failure;
} }
btr_cur_set_deleted_flag_for_ibuf(rec, page_zip, TRUE, mtr);
} else { } else {
ut_print_timestamp(stderr); ut_print_timestamp(stderr);
fputs(" InnoDB: unable to find a record to delete-mark\n", fputs(" InnoDB: unable to find a record to delete-mark\n",
stderr); stderr);
failure:
fputs("InnoDB: tuple ", stderr); fputs("InnoDB: tuple ", stderr);
dtuple_print(stderr, entry); dtuple_print(stderr, entry);
fputs("\n" fputs("\n"
......
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