diff options
author | unknown <monty@hundin.mysql.fi> | 2002-04-25 01:16:42 +0300 |
---|---|---|
committer | unknown <monty@hundin.mysql.fi> | 2002-04-25 01:16:42 +0300 |
commit | 422dcbf04b9de2eae50cfb7bf43bfbdead5e89cd (patch) | |
tree | 539e3f41736108728458d901c552313e5f058e8f /innobase/srv | |
parent | 834598a6662d0c3146e48cbe6d7505f7fd987759 (diff) | |
parent | 216096025e207b945b1df874889a3e7c89ce66b9 (diff) | |
download | mariadb-git-422dcbf04b9de2eae50cfb7bf43bfbdead5e89cd.tar.gz |
merge
BitKeeper/etc/logging_ok:
auto-union
configure.in:
Auto merged
BitKeeper/deleted/.del-identity.result~e41453a364242503:
Auto merged
BitKeeper/deleted/.del-identity.test~326f469b59105404:
Auto merged
include/my_pthread.h:
Auto merged
innobase/dict/dict0crea.c:
Auto merged
innobase/dict/dict0dict.c:
Auto merged
innobase/dict/dict0load.c:
Auto merged
innobase/include/univ.i:
Auto merged
innobase/lock/lock0lock.c:
Auto merged
innobase/pars/pars0opt.c:
Auto merged
innobase/que/que0que.c:
Auto merged
innobase/row/row0ins.c:
Auto merged
innobase/row/row0mysql.c:
Auto merged
innobase/row/row0sel.c:
Auto merged
innobase/row/row0upd.c:
Auto merged
innobase/srv/srv0srv.c:
Auto merged
innobase/sync/sync0sync.c:
Auto merged
innobase/trx/trx0trx.c:
Auto merged
libmysql/libmysql.c:
Auto merged
myisam/myisampack.c:
Auto merged
mysql-test/t/func_test.test:
Auto merged
mysql-test/t/show_check.test:
Auto merged
mysql-test/t/variables.test:
Auto merged
mysys/my_pthread.c:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/share/danish/errmsg.txt:
Auto merged
sql/share/english/errmsg.txt:
Auto merged
sql/share/french/errmsg.txt:
Auto merged
sql/share/german/errmsg.txt:
Auto merged
sql/share/greek/errmsg.txt:
Auto merged
sql/share/hungarian/errmsg.txt:
Auto merged
sql/sql_show.cc:
Auto merged
sql/share/italian/errmsg.txt:
Auto merged
sql/share/japanese/errmsg.txt:
Auto merged
sql/share/korean/errmsg.txt:
Auto merged
sql/share/norwegian-ny/errmsg.txt:
Auto merged
sql/share/norwegian/errmsg.txt:
Auto merged
sql/share/polish/errmsg.txt:
Auto merged
sql/share/portuguese/errmsg.txt:
Auto merged
sql/share/romanian/errmsg.txt:
Auto merged
sql/share/russian/errmsg.txt:
Auto merged
sql/share/slovak/errmsg.txt:
Auto merged
sql/share/spanish/errmsg.txt:
Auto merged
sql/share/swedish/errmsg.txt:
Auto merged
sql/share/ukrainian/errmsg.txt:
Auto merged
Diffstat (limited to 'innobase/srv')
-rw-r--r-- | innobase/srv/srv0srv.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/innobase/srv/srv0srv.c b/innobase/srv/srv0srv.c index a17646a8c0f..f366ce0d160 100644 --- a/innobase/srv/srv0srv.c +++ b/innobase/srv/srv0srv.c @@ -2026,15 +2026,18 @@ srv_suspend_mysql_thread( /*=====================*/ /* out: TRUE if the lock wait timeout was exceeded */ - que_thr_t* thr) /* in: query thread associated with - the MySQL OS thread */ + que_thr_t* thr) /* in: query thread associated with the MySQL + OS thread */ { srv_slot_t* slot; os_event_t event; double wait_time; - + trx_t* trx; + ut_ad(!mutex_own(&kernel_mutex)); + trx = thr_get_trx(thr); + os_event_set(srv_lock_timeout_thread_event); mutex_enter(&kernel_mutex); @@ -2070,10 +2073,21 @@ srv_suspend_mysql_thread( srv_conc_force_exit_innodb(thr_get_trx(thr)); + /* Release possible foreign key check latch */ + if (trx->has_dict_foreign_key_check_lock) { + + rw_lock_s_unlock(&dict_foreign_key_check_lock); + } + /* Wait for the release */ os_event_wait(event); + if (trx->has_dict_foreign_key_check_lock) { + + rw_lock_s_lock(&dict_foreign_key_check_lock); + } + /* Return back inside InnoDB */ srv_conc_force_enter_innodb(thr_get_trx(thr)); |