diff options
author | Jon Olav Hauglid <jon.hauglid@oracle.com> | 2010-08-18 13:29:04 +0200 |
---|---|---|
committer | Jon Olav Hauglid <jon.hauglid@oracle.com> | 2010-08-18 13:29:04 +0200 |
commit | eb498cce4dafc2eda285c71ed96d64e451f02ec2 (patch) | |
tree | b38d061771d52ab55fe9d428e45627d4c08d5f63 /sql/sql_base.cc | |
parent | 6293c44ff6debb4f617260df727b281e77a41b5c (diff) | |
parent | e28d6ee66a8404dd0f8fe3aaabb9d72544e5d42e (diff) | |
download | mariadb-git-eb498cce4dafc2eda285c71ed96d64e451f02ec2.tar.gz |
Manual merge from mysql-5.5-bugfixing to mysql-5.5-runtime.
Diffstat (limited to 'sql/sql_base.cc')
-rw-r--r-- | sql/sql_base.cc | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/sql/sql_base.cc b/sql/sql_base.cc index d00da4be05e..849bc9662a0 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -8918,93 +8918,6 @@ bool is_equal(const LEX_STRING *a, const LEX_STRING *b) /* - Unlock and close table before renaming and dropping partitions - SYNOPSIS - alter_close_tables() - lpt Struct carrying parameters - RETURN VALUES - 0 -*/ - -static int alter_close_tables(ALTER_PARTITION_PARAM_TYPE *lpt) -{ - TABLE_SHARE *share= lpt->table->s; - THD *thd= lpt->thd; - TABLE *table; - DBUG_ENTER("alter_close_tables"); - /* - We can safely remove locks for all tables with the same name: - later they will all be closed anyway in - alter_partition_lock_handling(). - */ - for (table= thd->open_tables; table ; table= table->next) - { - if (!strcmp(table->s->table_name.str, share->table_name.str) && - !strcmp(table->s->db.str, share->db.str)) - { - /* - No need to take LOCK_thd_data to protect mysql_lock_remove(), - since mysql_lock_abort_for_thread() only aborts waiting - locks, and our lock is already granted. - */ - mysql_lock_remove(thd, thd->lock, table); - /* - Protect members of thd->open_tables concurrently used - in mysql_notify_thread_having_shared_lock(). - */ - mysql_mutex_lock(&thd->LOCK_thd_data); - table->file->close(); - table->db_stat= 0; // Mark file closed - mysql_mutex_unlock(&thd->LOCK_thd_data); - /* - Ensure that we won't end up with a crippled table instance - in the table cache if an error occurs before we reach - alter_partition_lock_handling() and the table is closed - by close_thread_tables() instead. - */ - tdc_remove_table(thd, TDC_RT_REMOVE_UNUSED, - table->s->db.str, - table->s->table_name.str, - FALSE); - } - } - DBUG_RETURN(0); -} - - -/* - SYNOPSIS - abort_and_upgrade_lock_and_close_table() - lpt Parameter passing struct - All parameters passed through the ALTER_PARTITION_PARAM_TYPE object - RETURN VALUE - 0 - DESCRIPTION - Remember old lock level (for possible downgrade later on), abort all - waiting threads and ensure that all keeping locks currently are - completed such that we own the lock exclusively and no other interaction - is ongoing. Close the table and hold the name lock. - - thd Thread object - table Table object - db Database name - table_name Table name - old_lock_level Old lock level -*/ - -int abort_and_upgrade_lock_and_close_table(ALTER_PARTITION_PARAM_TYPE *lpt) -{ - DBUG_ENTER("abort_and_upgrade_lock_and_close_table"); - - if (wait_while_table_is_used(lpt->thd, lpt->table, HA_EXTRA_FORCE_REOPEN)) - DBUG_RETURN(1); - if (alter_close_tables(lpt)) - DBUG_RETURN(1); - DBUG_RETURN(0); -} - - -/* Tells if two (or more) tables have auto_increment columns and we want to lock those tables with a write lock. |