mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Backport of:
------------------------------------------------------------ revno: 2630.4.32 committer: Dmitry Lenev <dlenev@mysql.com> branch nick: mysql-6.0-3726-w2 timestamp: Thu 2008-06-19 16:39:58 +0400 message: WL#3726 "DDL locking for all metadata objects". After-review fixes in progress. Ensure that metadata locking subsystem properly handles out-of-memory conditions. Clarified MDL interface by separating release of locks and removal of lock requests from the context.
This commit is contained in:
@ -1170,7 +1170,10 @@ bool mysql_truncate(THD *thd, TABLE_LIST *table_list, bool dont_send_ok)
|
||||
mdl_set_lock_type(mdl_lock_data, MDL_EXCLUSIVE);
|
||||
mdl_add_lock(&thd->mdl_context, mdl_lock_data);
|
||||
if (mdl_acquire_exclusive_locks(&thd->mdl_context))
|
||||
{
|
||||
mdl_remove_lock(&thd->mdl_context, mdl_lock_data);
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
pthread_mutex_lock(&LOCK_open);
|
||||
tdc_remove_table(thd, TDC_RT_REMOVE_ALL, table_list->db,
|
||||
table_list->table_name);
|
||||
@ -1200,12 +1203,18 @@ end:
|
||||
my_ok(thd); // This should return record count
|
||||
}
|
||||
if (mdl_lock_data)
|
||||
{
|
||||
mdl_release_lock(&thd->mdl_context, mdl_lock_data);
|
||||
mdl_remove_lock(&thd->mdl_context, mdl_lock_data);
|
||||
}
|
||||
}
|
||||
else if (error)
|
||||
{
|
||||
if (mdl_lock_data)
|
||||
{
|
||||
mdl_release_lock(&thd->mdl_context, mdl_lock_data);
|
||||
mdl_remove_lock(&thd->mdl_context, mdl_lock_data);
|
||||
}
|
||||
}
|
||||
DBUG_RETURN(error);
|
||||
|
||||
|
Reference in New Issue
Block a user