diff options
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. |