diff options
author | unknown <monty@work.mysql.com> | 2001-09-02 18:38:33 +0200 |
---|---|---|
committer | unknown <monty@work.mysql.com> | 2001-09-02 18:38:33 +0200 |
commit | 2edb76f0f7b0832daf0c0038c752564704fa05a1 (patch) | |
tree | 4689ffbe50e97ce9a47deb58fa2b9e7decdfc6a8 /sql/sql_class.cc | |
parent | 50a0734f1b4d56752c11341faca047e1a6f56740 (diff) | |
parent | f3e3aa4820661738d1f5401ea11e7749378333ad (diff) | |
download | mariadb-git-2edb76f0f7b0832daf0c0038c752564704fa05a1.tar.gz |
merge with 3.23.42
config.guess:
Auto merged
config.sub:
Auto merged
ltconfig:
Auto merged
BitKeeper/deleted/.del-violite.c~d7b85be615595ace:
Auto merged
BitKeeper/deleted/.del-violite.c~984c09cffe14a11b:
Auto merged
client/Makefile.am:
Auto merged
include/errmsg.h:
Auto merged
include/global.h:
Auto merged
include/heap.h:
Auto merged
include/my_sys.h:
Auto merged
include/mysql_com.h:
Auto merged
isam/isamlog.c:
Auto merged
libmysql/libmysql.c:
Auto merged
merge/open.c:
Auto merged
myisam/ft_search.c:
Auto merged
myisam/ftdefs.h:
Auto merged
myisam/mi_test_all.sh:
Auto merged
myisam/myisamchk.c:
Auto merged
myisam/myisamlog.c:
Auto merged
myisam/myisampack.c:
Auto merged
myisam/sort.c:
Auto merged
myisammrg/myrg_open.c:
Auto merged
mysys/hash.c:
Auto merged
mysys/mf_casecnv.c:
Auto merged
mysys/mf_format.c:
Auto merged
mysys/my_lib.c:
Auto merged
mysys/tree.c:
Auto merged
sql-bench/bench-init.pl.sh:
Auto merged
sql/filesort.cc:
Auto merged
sql/ha_myisam.cc:
Auto merged
sql/ha_myisammrg.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/handler.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/lex.h:
Auto merged
sql/log.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/net_serv.cc:
Auto merged
sql/slave.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_db.cc:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_show.cc:
Auto merged
mysql-test/r/func_time.result:
Auto merged
mysql-test/r/innodb.result:
Auto merged
mysql-test/t/bdb.test:
Auto merged
mysql-test/t/err000001.test:
Auto merged
mysql-test/t/func_time.test:
Auto merged
mysql-test/t/innodb.test:
Auto merged
mysql-test/t/overflow.test:
Auto merged
mysql-test/t/show_check.test:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_test.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
strings/ctype.c:
Auto merged
Docs/manual.texi:
Change to 3.23 manual.
(I will later add the changes for 4.0 to this copy)
client/mysql.cc:
merge
client/mysqlbinlog.cc:
merge
client/mysqldump.c:
merge
client/mysqltest.c:
merge
client/thread_test.c:
merge
configure.in:
merge
include/my_pthread.h:
merge
include/mysqld_error.h:
merge
libmysql/net.c:
merge
myisam/mi_cache.c:
merge
myisam/mi_check.c:
merge
mysql-test/t/fulltext.test:
merge
mysys/mf_qsort.c:
merge
sql/lock.cc:
merge
sql/md5.c:
merge
sql/mini_client.cc:
merge
sql/share/czech/errmsg.txt:
merge
sql/share/danish/errmsg.txt:
merge
sql/share/dutch/errmsg.txt:
merge
sql/share/english/errmsg.txt:
merge
sql/share/estonian/errmsg.txt:
merge
sql/share/french/errmsg.txt:
merge
sql/share/german/errmsg.txt:
merge
sql/share/greek/errmsg.txt:
merge
sql/share/hungarian/errmsg.txt:
merge
sql/share/italian/errmsg.txt:
merge
sql/share/japanese/errmsg.txt:
merge
sql/share/korean/errmsg.txt:
merge
sql/share/norwegian-ny/errmsg.txt:
merge
sql/share/norwegian/errmsg.txt:
merge
sql/share/polish/errmsg.txt:
merge
sql/share/portuguese/errmsg.txt:
merge
sql/share/romanian/errmsg.txt:
merge
sql/share/russian/errmsg.txt:
merge
sql/share/slovak/errmsg.txt:
merge
sql/share/spanish/errmsg.txt:
merge
sql/share/swedish/errmsg.txt:
merge
sql/sql_load.cc:
merge
sql/sql_repl.cc:
merge
Diffstat (limited to 'sql/sql_class.cc')
-rw-r--r-- | sql/sql_class.cc | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 13c60641db0..b77166d0bc0 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -106,7 +106,7 @@ THD::THD():user_time(0),fatal_error(0),last_insert_id_used(0), mysys_var=0; net.vio=0; ull=0; - system_thread=0; + system_thread=cleanup_done=0; #ifdef __WIN__ real_id = 0; #endif @@ -155,15 +155,11 @@ THD::THD():user_time(0),fatal_error(0),last_insert_id_used(0), #endif } -THD::~THD() +/* Do operations that may take a long time */ + +void THD::cleanup(void) { - DBUG_ENTER("~THD()"); - /* Close connection */ - if (net.vio) - { - vio_delete(net.vio); - net_end(&net); - } + DBUG_ENTER("THD::cleanup"); ha_rollback(this); if (locked_tables) { @@ -183,6 +179,21 @@ THD::~THD() ha_close_connection(this); } #endif + cleanup_done=1; + DBUG_VOID_RETURN; +} + +THD::~THD() +{ + DBUG_ENTER("~THD()"); + /* Close connection */ + if (net.vio) + { + vio_delete(net.vio); + net_end(&net); + } + if (!cleanup_done) + cleanup(); if (global_read_lock) unlock_global_read_lock(this); if (ull) @@ -221,12 +232,12 @@ void THD::prepare_to_die() pthread_mutex_lock(&mysys_var->mutex); if (!system_thread) // Don't abort locks mysys_var->abort=1; - if (mysys_var->current_mutex) - { - pthread_mutex_lock(mysys_var->current_mutex); - pthread_cond_broadcast(mysys_var->current_cond); - pthread_mutex_unlock(mysys_var->current_mutex); - } + if (mysys_var->current_cond) + { + pthread_mutex_lock(mysys_var->current_mutex); + pthread_cond_broadcast(mysys_var->current_cond); + pthread_mutex_unlock(mysys_var->current_mutex); + } pthread_mutex_unlock(&mysys_var->mutex); } } |