diff options
author | unknown <Sinisa@sinisa.nasamreza.org> | 2003-04-03 20:24:15 +0300 |
---|---|---|
committer | unknown <Sinisa@sinisa.nasamreza.org> | 2003-04-03 20:24:15 +0300 |
commit | 89bb3165501b09b2922d361905a4efb7b490d8b0 (patch) | |
tree | 97b51391b1053e0078ae3754910ee7fd30a879ee /sql/sql_table.cc | |
parent | bd4d87297d03706b49eab04d030b2e63a4bc9997 (diff) | |
download | mariadb-git-89bb3165501b09b2922d361905a4efb7b490d8b0.tar.gz |
One test case, one bug fix and one new feature
mysql-test/r/innodb.result:
A test case for non-functional rollback after inserting a row into
MyISAM table with binary log enabled.
mysql-test/t/innodb.test:
A test case for non-functional rollback after inserting a row into
MyISAM table with binary log enabled.
sql/sql_show.cc:
Displaying disabled keys in SHOW KEYS
sql/sql_table.cc:
Fix for a serious bug with ALTER TABLE ENABLE / DISABLE KEYS
Diffstat (limited to 'sql/sql_table.cc')
-rw-r--r-- | sql/sql_table.cc | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 0cdb0a7ff48..8cec738edb0 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -912,12 +912,9 @@ mysql_rename_table(enum db_type base, Win32 clients must also have a WRITE LOCK on the table ! */ -bool close_cached_table(THD *thd,TABLE *table) +static void safe_remove_from_cache(THD *thd,TABLE *table) { - bool result=0; - DBUG_ENTER("close_cached_table"); - safe_mutex_assert_owner(&LOCK_open); - + DBUG_ENTER("safe_remove_from_cache"); if (table) { DBUG_PRINT("enter",("table: %s", table->real_name)); @@ -940,7 +937,18 @@ bool close_cached_table(THD *thd,TABLE *table) #endif /* When lock on LOCK_open is freed other threads can continue */ pthread_cond_broadcast(&COND_refresh); + } + DBUG_VOID_RETURN; +} + +bool close_cached_table(THD *thd,TABLE *table) +{ + DBUG_ENTER("close_cached_table"); + safe_mutex_assert_owner(&LOCK_open); + if (table) + { + safe_remove_from_cache(thd,table); /* Close lock if this is not got with LOCK TABLES */ if (thd->lock) { @@ -949,7 +957,7 @@ bool close_cached_table(THD *thd,TABLE *table) /* Close all copies of 'table'. This also frees all LOCK TABLES lock */ thd->open_tables=unlink_open_table(thd,thd->open_tables,table); } - DBUG_RETURN(result); + DBUG_RETURN(0); } static int send_check_errmsg(THD* thd, TABLE_LIST* table, @@ -1456,9 +1464,11 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name, case LEAVE_AS_IS: break; case ENABLE: - error=table->file->activate_all_index(thd); + safe_remove_from_cache(thd,table); + error= table->file->activate_all_index(thd); break; case DISABLE: + safe_remove_from_cache(thd,table); table->file->deactivate_non_unique_index(HA_POS_ERROR); break; } |