From 035b06b4e1cacb0a1abe4c4272661827c2aa00ba Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 18 Jul 2007 15:39:13 +0500 Subject: BUG#28838 - duplicate external_lock in mysql_alter_table Removed duplicate call to handler::external_lock() when ALTER TABLE that doesn't need to copy a table (quick ALTER TABLE) was executed. Also quick ALTER TABLE doesn't hold LOCK_open anymore when it enables/disables indexes. sql/sql_table.cc: Do not call handler::external_lock() as table is already locked by open_ltable(). Also do not hold LOCK_open mutex for alter_table_manage_keys() as this function doesn't require LOCK_open (LOCK_open is required by wait_while_table_is_used() only). --- sql/sql_table.cc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'sql/sql_table.cc') diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 87f23097a66..277d6d76ead 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -3789,11 +3789,9 @@ view_err: { VOID(pthread_mutex_lock(&LOCK_open)); wait_while_table_is_used(thd, table, HA_EXTRA_FORCE_REOPEN); - table->file->external_lock(thd, F_WRLCK); + VOID(pthread_mutex_unlock(&LOCK_open)); alter_table_manage_keys(table, table->file->indexes_are_disabled(), alter_info->keys_onoff); - table->file->external_lock(thd, F_UNLCK); - VOID(pthread_mutex_unlock(&LOCK_open)); error= ha_commit_stmt(thd); if (ha_commit(thd)) error= 1; -- cgit v1.2.1