mirror of
https://github.com/MariaDB/server.git
synced 2026-05-14 19:07:15 +02:00
Port fix for bug #53756 from 5.1 built-in to 5.1 plugin.
This commit is contained in:
parent
72ec16b1d1
commit
1566c3657e
5 changed files with 320 additions and 14 deletions
|
|
@ -1,3 +1,7 @@
|
|||
2010-09-06 The InnoDB Team
|
||||
* dict/dict0load.c, innodb_bug53756.test innodb_bug53756.result
|
||||
Fix Bug #53756 ALTER TABLE ADD PRIMARY KEY affects crash recovery
|
||||
|
||||
2010-08-24 The InnoDB Team
|
||||
|
||||
* handler/ha_innodb.c, dict/dict0dict.c:
|
||||
|
|
|
|||
|
|
@ -1072,6 +1072,8 @@ dict_load_table_on_id(
|
|||
|
||||
ut_ad(mutex_own(&(dict_sys->mutex)));
|
||||
|
||||
table = NULL;
|
||||
|
||||
/* NOTE that the operation of this function is protected by
|
||||
the dictionary mutex, and therefore no deadlocks can occur
|
||||
with other dictionary operations. */
|
||||
|
|
@ -1098,15 +1100,17 @@ dict_load_table_on_id(
|
|||
BTR_SEARCH_LEAF, &pcur, &mtr);
|
||||
rec = btr_pcur_get_rec(&pcur);
|
||||
|
||||
if (!btr_pcur_is_on_user_rec(&pcur)
|
||||
|| rec_get_deleted_flag(rec, 0)) {
|
||||
if (!btr_pcur_is_on_user_rec(&pcur)) {
|
||||
/* Not found */
|
||||
goto func_exit;
|
||||
}
|
||||
|
||||
btr_pcur_close(&pcur);
|
||||
mtr_commit(&mtr);
|
||||
mem_heap_free(heap);
|
||||
|
||||
return(NULL);
|
||||
/* Find the first record that is not delete marked */
|
||||
while (rec_get_deleted_flag(rec, 0)) {
|
||||
if (!btr_pcur_move_to_next_user_rec(&pcur, &mtr)) {
|
||||
goto func_exit;
|
||||
}
|
||||
rec = btr_pcur_get_rec(&pcur);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------*/
|
||||
|
|
@ -1119,19 +1123,14 @@ dict_load_table_on_id(
|
|||
|
||||
/* Check if the table id in record is the one searched for */
|
||||
if (ut_dulint_cmp(table_id, mach_read_from_8(field)) != 0) {
|
||||
|
||||
btr_pcur_close(&pcur);
|
||||
mtr_commit(&mtr);
|
||||
mem_heap_free(heap);
|
||||
|
||||
return(NULL);
|
||||
goto func_exit;
|
||||
}
|
||||
|
||||
/* Now we get the table name from the record */
|
||||
field = rec_get_nth_field_old(rec, 1, &len);
|
||||
/* Load the table definition to memory */
|
||||
table = dict_load_table(mem_heap_strdupl(heap, (char*) field, len));
|
||||
|
||||
func_exit:
|
||||
btr_pcur_close(&pcur);
|
||||
mtr_commit(&mtr);
|
||||
mem_heap_free(heap);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue