diff options
author | heikki@hundin.mysql.fi <> | 2002-07-01 02:19:58 +0300 |
---|---|---|
committer | heikki@hundin.mysql.fi <> | 2002-07-01 02:19:58 +0300 |
commit | 18bb6008177c31824d5ed2a531d91ef69ebb2e7f (patch) | |
tree | 7e85b106228a6cda3b895b69fd143f12c99b4f44 /innobase/row/row0ins.c | |
parent | 1111a8d6a8a71aafa1c8bd3016b81ab2601a225f (diff) | |
download | mariadb-git-18bb6008177c31824d5ed2a531d91ef69ebb2e7f.tar.gz |
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
Diffstat (limited to 'innobase/row/row0ins.c')
-rw-r--r-- | innobase/row/row0ins.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/innobase/row/row0ins.c b/innobase/row/row0ins.c index bbec004176b..ee4805d51d2 100644 --- a/innobase/row/row0ins.c +++ b/innobase/row/row0ins.c @@ -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); + + timeout_expired = srv_suspend_mysql_thread(thr); - row_mysql_handle_errors(&err, thr_get_trx(thr), thr, NULL); + if (!timeout_expired) { + + goto run_again; + } - goto run_again; + err = DB_LOCK_WAIT_TIMEOUT; } return(err); |