summaryrefslogtreecommitdiff
path: root/innobase/srv
diff options
context:
space:
mode:
authorunknown <monty@hundin.mysql.fi>2002-04-25 01:16:42 +0300
committerunknown <monty@hundin.mysql.fi>2002-04-25 01:16:42 +0300
commit422dcbf04b9de2eae50cfb7bf43bfbdead5e89cd (patch)
tree539e3f41736108728458d901c552313e5f058e8f /innobase/srv
parent834598a6662d0c3146e48cbe6d7505f7fd987759 (diff)
parent216096025e207b945b1df874889a3e7c89ce66b9 (diff)
downloadmariadb-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.c20
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));