diff options
author | unknown <monty@hundin.mysql.fi> | 2002-08-08 15:24:47 +0300 |
---|---|---|
committer | unknown <monty@hundin.mysql.fi> | 2002-08-08 15:24:47 +0300 |
commit | 267b80834ad524c0d72976bc71e5b5bc9815ea1a (patch) | |
tree | e7f4a2013ed3d66e640f6574e62cb7e534a5d77f /sql/sql_table.cc | |
parent | ca1875f54033c5ea067ec3ec07b00375de6975d7 (diff) | |
parent | 40d3c3901b0427eba76119730f46784f946990b3 (diff) | |
download | mariadb-git-267b80834ad524c0d72976bc71e5b5bc9815ea1a.tar.gz |
merge with 3.23.52
BitKeeper/etc/logging_ok:
auto-union
configure.in:
Auto merged
Docs/manual.texi:
Auto merged
include/my_pthread.h:
Auto merged
include/mysql_com.h:
Auto merged
include/mysql_version.h.in:
Auto merged
innobase/btr/btr0cur.c:
Auto merged
innobase/btr/btr0sea.c:
Auto merged
innobase/buf/buf0buf.c:
Auto merged
innobase/buf/buf0lru.c:
Auto merged
innobase/configure.in:
Auto merged
innobase/dict/dict0dict.c:
Auto merged
innobase/fil/fil0fil.c:
Auto merged
innobase/fsp/fsp0fsp.c:
Auto merged
innobase/include/buf0buf.ic:
Auto merged
innobase/include/dyn0dyn.ic:
Auto merged
innobase/include/ha0ha.ic:
Auto merged
innobase/include/sync0rw.ic:
Auto merged
innobase/include/univ.i:
Auto merged
innobase/lock/lock0lock.c:
Auto merged
innobase/log/log0log.c:
Auto merged
innobase/mem/mem0dbg.c:
Auto merged
innobase/os/os0file.c:
Auto merged
innobase/os/os0thread.c:
Auto merged
innobase/page/page0cur.c:
Auto merged
innobase/srv/srv0srv.c:
Auto merged
innobase/sync/sync0arr.c:
Auto merged
innobase/sync/sync0rw.c:
Auto merged
innobase/sync/sync0sync.c:
Auto merged
innobase/trx/trx0trx.c:
Auto merged
myisam/mi_create.c:
Auto merged
sql/ha_innodb.h:
Auto merged
sql/lex.h:
Auto merged
sql/log.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
strings/Makefile.am:
Auto merged
support-files/mysql.server.sh:
Auto merged
include/my_base.h:
merge with 3.23.52 (use local file)
include/sslopt-usage.h:
merge with 3.23.52 (use local file)
myisam/mi_search.c:
merge with 3.23.52 (use local file)
myisam/mi_write.c:
merge with 3.23.52 (use local file)
mysql-test/r/group_by.result:
merge with 3.23.52
(Need to be fixed before push)
mysys/my_pthread.c:
merge with 3.23.52 (use local file)
sql/gen_lex_hash.cc:
merge with 3.23.52 (use local file)
sql/ha_innodb.cc:
Total hand-merge with 3.23.52
sql/sql_yacc.yy:
merge with 3.23.52 (use local file)
support-files/mysql.spec.sh:
merge with 3.23.52 (use local file)
Diffstat (limited to 'sql/sql_table.cc')
-rw-r--r-- | sql/sql_table.cc | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/sql/sql_table.cc b/sql/sql_table.cc index df84bff0adc..f58201ae429 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -782,7 +782,9 @@ TABLE *create_table_from_items(THD *thd, HA_CREATE_INFO *create_info, table->reginfo.lock_type=TL_WRITE; if (!((*lock)=mysql_lock_tables(thd,&table,1))) { + VOID(pthread_mutex_lock(&LOCK_open)); hash_delete(&open_cache,(byte*) table); + VOID(pthread_mutex_unlock(&LOCK_open)); quick_rm_table(create_info->db_type,db,name); DBUG_RETURN(0); } @@ -977,19 +979,25 @@ static int prepare_for_repair(THD* thd, TABLE_LIST* table, if (my_rename(from, tmp, MYF(MY_WME))) { + pthread_mutex_lock(&LOCK_open); unlock_table_name(thd, table); + pthread_mutex_unlock(&LOCK_open); DBUG_RETURN(send_check_errmsg(thd, table, "repair", "Failed renaming .MYD file")); } if (mysql_truncate(thd, table, 1)) { + pthread_mutex_lock(&LOCK_open); unlock_table_name(thd, table); + pthread_mutex_unlock(&LOCK_open); DBUG_RETURN(send_check_errmsg(thd, table, "repair", "Failed generating table from .frm file")); } if (my_rename(tmp, from, MYF(MY_WME))) { + pthread_mutex_lock(&LOCK_open); unlock_table_name(thd, table); + pthread_mutex_unlock(&LOCK_open); DBUG_RETURN(send_check_errmsg(thd, table, "repair", "Failed restoring .MYD file")); } @@ -1000,7 +1008,11 @@ static int prepare_for_repair(THD* thd, TABLE_LIST* table, to finish the repair in the handler later on. */ if (!(table->table = reopen_name_locked_table(thd, table))) - unlock_table_name(thd, table); + { + pthread_mutex_lock(&LOCK_open); + unlock_table_name(thd, table); + pthread_mutex_unlock(&LOCK_open); + } DBUG_RETURN(0); } @@ -1855,8 +1867,8 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name, error=1; if (error) { - VOID(pthread_cond_broadcast(&COND_refresh)); VOID(pthread_mutex_unlock(&LOCK_open)); + VOID(pthread_cond_broadcast(&COND_refresh)); goto err; } #ifdef HAVE_BERKELEY_DB |