diff options
author | unknown <monty@hundin.mysql.fi> | 2001-10-02 21:08:08 +0300 |
---|---|---|
committer | unknown <monty@hundin.mysql.fi> | 2001-10-02 21:08:08 +0300 |
commit | 77b021005ef3648501b3413ac5bce4a7db495cf0 (patch) | |
tree | 10d5cc825ed60eb9400958861f0101e212097efb /sql/sql_insert.cc | |
parent | 396490901c77e3fce3aa8ab12a34760f5928567e (diff) | |
download | mariadb-git-77b021005ef3648501b3413ac5bce4a7db495cf0.tar.gz |
Fixed bug in INSERT DELAYED
Fixed some problems in SHOW CREATE TABLE
Fixed calculation of checksums in myisamchk
Docs/manual.texi:
ChangelogWh
client/mysql.cc:
Added comment
myisam/mi_check.c:
Fixed calcualtion of checksums
sql/sql_insert.cc:
Fixed bug in INSERT DELAYED
sql/sql_show.cc:
Fixed some problems in SHOW CREATE TABLE
Diffstat (limited to 'sql/sql_insert.cc')
-rw-r--r-- | sql/sql_insert.cc | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index cd738999383..f7ff3ed159c 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -841,6 +841,7 @@ void kill_delayed_threads(void) delayed_insert *tmp; while ((tmp=it++)) { + /* Ensure that the thread doesn't kill itself while we are looking at it */ pthread_mutex_lock(&tmp->mutex); tmp->thd.killed=1; if (tmp->thd.mysys_var) @@ -848,9 +849,15 @@ void kill_delayed_threads(void) pthread_mutex_lock(&tmp->thd.mysys_var->mutex); if (tmp->thd.mysys_var->current_cond) { - pthread_mutex_lock(tmp->thd.mysys_var->current_mutex); + /* + We need the following test because the main mutex may be locked + in handle_delayed_insert() + */ + if (&tmp->mutex != tmp->thd.mysys_var->current_mutex) + pthread_mutex_lock(tmp->thd.mysys_var->current_mutex); pthread_cond_broadcast(tmp->thd.mysys_var->current_cond); - pthread_mutex_unlock(tmp->thd.mysys_var->current_mutex); + if (&tmp->mutex != tmp->thd.mysys_var->current_mutex) + pthread_mutex_unlock(tmp->thd.mysys_var->current_mutex); } pthread_mutex_unlock(&tmp->thd.mysys_var->mutex); } |