mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
row0ins.c:
The UNIV_DEBUG version asserted if a foreign key check failed because of a lock wait timeout btr0cur.c: Fix a bug: if the primary key was updated (or delete + insert) so that only the case of characters changed, we were left with a dangling adaptive hash index pointer, often causing an assertion failure in page0page.ic line 515 innobase/btr/btr0cur.c: Fix a bug: if the primary key was updated (or delete + insert) so that only the case of characters changed, we were left with a dangling adaptive hash index pointer, often causing an assertion failure in page0page.ic line 515 innobase/row/row0ins.c: The UNIV_DEBUG version asserted if a foreign key check failed because of a lock wait timeout
This commit is contained in:
parent
fbaede459b
commit
ea13cafbfe
2 changed files with 15 additions and 3 deletions
|
@ -1355,6 +1355,12 @@ btr_cur_update_in_place(
|
|||
block = buf_block_align(rec);
|
||||
|
||||
if (block->is_hashed) {
|
||||
if (row_upd_changes_ord_field_binary(NULL, index, update)) {
|
||||
|
||||
/* Remove possible hash index pointer to this record */
|
||||
btr_search_update_hash_on_delete(cursor);
|
||||
}
|
||||
|
||||
rw_lock_x_lock(&btr_search_latch);
|
||||
}
|
||||
|
||||
|
|
|
@ -627,6 +627,7 @@ row_ins_check_foreign_constraint(
|
|||
dict_table_t* check_table;
|
||||
dict_index_t* check_index;
|
||||
ulint n_fields_cmp;
|
||||
ibool timeout_expired;
|
||||
rec_t* rec;
|
||||
btr_pcur_t pcur;
|
||||
ibool moved;
|
||||
|
@ -790,10 +791,15 @@ do_possible_lock_wait:
|
|||
thr_get_trx(thr)->error_state = err;
|
||||
|
||||
que_thr_stop_for_mysql(thr);
|
||||
|
||||
row_mysql_handle_errors(&err, thr_get_trx(thr), thr, NULL);
|
||||
|
||||
goto run_again;
|
||||
timeout_expired = srv_suspend_mysql_thread(thr);
|
||||
|
||||
if (!timeout_expired) {
|
||||
|
||||
goto run_again;
|
||||
}
|
||||
|
||||
err = DB_LOCK_WAIT_TIMEOUT;
|
||||
}
|
||||
|
||||
return(err);
|
||||
|
|
Loading…
Reference in a new issue