mirror of
https://github.com/MariaDB/server.git
synced 2026-04-29 03:35:34 +02:00
Backport of:
------------------------------------------------------------
revno: 2630.4.18
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w2
timestamp: Tue 2008-06-03 21:07:58 +0400
message:
WL#3726 "DDL locking for all metadata objects".
After review fixes in progress.
Now during upgrading/downgrading metadata locks we deal with
individual metadata lock requests rather than with all requests
for this object in the context. This makes API a bit more clear
and makes adjust_mdl_locks_upgradability() much nicer.
sql/lock.cc:
lock_table_names():
Set TABLE_LIST::mdl_lock_data when allocating new metadata
lock request object for table list element.
sql/mdl.cc:
Now during upgrading/downgrading metadata locks we deal with
individual metadata lock requests rather than with all
requests for this object in the context. Adjusted upgrade/
downgrade functions accordingly.
We also got rid of mdl_release_exclusive_locks() and
now release locks individually. To simplify this process
mdl_release_all_locks_for_name() was introduced.
sql/mdl.h:
Now during upgrading/downgrading metadata locks we deal with
individual metadata lock requests rather than with all
requests for this object in the context. Adjusted upgrade/
downgrade functions accordingly.
We also got rid of mdl_release_exclusive_locks() and
now release locks individually. To simplify this process
mdl_release_all_locks_for_name() was introduced.
sql/sql_base.cc:
Now during upgrading/downgrading metadata locks we deal with
individual metadata lock requests rather than with all
requests for this object in the context.
We also got rid of mdl_release_exclusive_locks() and
now release locks individually.
sql/sql_parse.cc:
adjust_mdl_locks_upgradability() is much simplier now due to the
fact that now during upgrading/downgrading metadata locks we
deal with individual metadata lock requests rather than with
all requests for this object in the context.
sql/sql_table.cc:
Now during upgrading/downgrading metadata locks we deal with
individual metadata lock requests rather than with all
requests for this object in the context. Adjusted upgrade/
downgrade functions accordingly.
We also got rid of mdl_release_exclusive_locks() and
now release locks individually. To simplify this process
mdl_release_all_locks_for_name() was introduced.
sql/sql_trigger.cc:
ow during upgrading/downgrading metadata locks we deal with
individual metadata lock requests rather than with all
requests for this object in the context.
This commit is contained in:
parent
e23046d1bc
commit
b05303c132
7 changed files with 221 additions and 202 deletions
|
|
@ -527,8 +527,9 @@ end:
|
|||
locks. Otherwise call to close_thread_tables() will take care about both
|
||||
TABLE instance created by reopen_name_locked_table() and meta-data lock.
|
||||
*/
|
||||
if (thd->locked_tables)
|
||||
mdl_downgrade_exclusive_locks(&thd->mdl_context);
|
||||
if (thd->locked_tables && tables && tables->table)
|
||||
mdl_downgrade_exclusive_lock(&thd->mdl_context,
|
||||
tables->table->mdl_lock_data);
|
||||
|
||||
if (need_start_waiting)
|
||||
start_waiting_global_read_lock(thd);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue