| Bug #65443 | Failure when applying insert buffer changes during crash recovery | ||
|---|---|---|---|
| Submitted: | 28 May 2012 21:18 | Modified: | 18 Sep 2012 10:07 |
| Reporter: | Nizameddin Ordulu | Email Updates: | |
| Status: | Duplicate | Impact on me: | |
| Category: | MySQL Server: InnoDB storage engine | Severity: | S1 (Critical) |
| Version: | 5.6 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | crash recovery, debug assertion, insert buffer | ||
[28 May 2012 21:18]
Nizameddin Ordulu
[29 May 2012 4:06]
Valeriy Kravchuk
This is likely a duplicate of Bug #58571. Check last comments from Marko there, they may give some hints.
[29 May 2012 18:55]
Mark Callaghan
For 5.1, the assert in ibuf_insert_to_index_page is new with
3351.14.276 marko.m |
| /* This is based on
| row_ins_sec_index_entry_by_modify(BTR_MODIFY_LEAF). */
| ut_ad(rec_get_deleted_flag(rec, page_is_comp(page)));
|
And that comes from
revno: 3513 [merge]
committer: Georgi Kodinov <Georgi.Kodinov@Oracle.com>
branch nick: merge-5.1-security
timestamp: Fri 2010-10-29 14:02:49 +0300
message:
merge to 5.1-security
------------------------------------------------------------
revno: 3452.1.96 [merge]
committer: Vasil Dimov <vasil.dimov@oracle.com>
branch nick: mysql-5.1-bugteam
timestamp: Fri 2010-10-29 10:45:11 +0300
message:
Merge mysql-5.1-innodb -> mysql-5.1-bugteam
------------------------------------------------------------
revno: 3351.14.276
committer: Marko Mäkelä <marko.makela@oracle.com>
branch nick: 5.1-innodb
timestamp: Tue 2010-10-19 09:04:15 +0300
message:
Bug #56680 wrong InnoDB results from a case-insensitive covering index
row_search_for_mysql(): When a secondary index record might not be
visible in the current transaction's read view and we consult the
clustered index and optionally some undo log records, return the
relevant columns of the clustered index record to MySQL instead of the
secondary index record.
ibuf_insert_to_index_page_low(): New function, refactored from
ibuf_insert_to_index_page().
ibuf_insert_to_index_page(): When we are inserting a record in place
of a delete-marked record and some fields of the record differ, update
that record just like row_ins_sec_index_entry_by_modify() would do.
btr_cur_update_alloc_zip(): Make the function public.
mysql_row_templ_t: Add clust_rec_field_no.
row_sel_store_mysql_rec(), row_sel_push_cache_row_for_mysql(): Add the
flag rec_clust, for returning data at clust_rec_field_no instead of
rec_field_no. Resurrect the debug assertion that the record not be
marked for deletion. (Bug #55626)
[UNIV_DEBUG || UNIV_IBUF_DEBUG] ibuf_debug, buf_page_get_gen(),
buf_flush_page_try():
Implement innodb_change_buffering_debug=1 for evicting pages from the
buffer pool, so that change buffering will be attempted more
frequently.
[17 Aug 2012 12:24]
Marko Mäkelä
This looks like a logical duplicate of Bug#58571 ut_ad assert rec_get_deleted_flag(rec, page_is_comp(page)) So far, we have failed to reproduce this with a simple test case. Reproduction could become easier with 5.6.6, where we sometimes can trigger this bug in row0log.cc, in online ALTER TABLE that involves rebuilding the table.
[18 Sep 2012 10:07]
Marko Mäkelä
This seems to be a duplicate of Bug#66819. My test case for this bug is not failing with the patch applied, and I was able to trigger this very assertion with instrumented code (fault injection).
