summaryrefslogtreecommitdiff
path: root/sql/sql_handler.cc
diff options
context:
space:
mode:
authorKonstantin Osipov <kostja@sun.com>2009-12-04 02:52:05 +0300
committerKonstantin Osipov <kostja@sun.com>2009-12-04 02:52:05 +0300
commita3a23ec4d3b9d9c22b8bdbc9adf2cd0f157c6a3f (patch)
tree6865c45e4fd723b4972eb4705acf049a4d4f9fff /sql/sql_handler.cc
parent195adcd201b78357ebdf8a30777d3f867829418a (diff)
downloadmariadb-git-a3a23ec4d3b9d9c22b8bdbc9adf2cd0f157c6a3f.tar.gz
Backport of:
---------------------------------------------------------- revno: 2617.23.20 committer: Konstantin Osipov <kostja@sun.com> branch nick: mysql-6.0-runtime timestamp: Wed 2009-03-04 16:31:31 +0300 message: WL#4284 "Transactional DDL locking" Review comments: "Objectify" the MDL API. MDL_request and MDL_context still need manual construction and destruction, since they are used in environment that is averse to constructors/destructors.
Diffstat (limited to 'sql/sql_handler.cc')
-rw-r--r--sql/sql_handler.cc30
1 files changed, 15 insertions, 15 deletions
diff --git a/sql/sql_handler.cc b/sql/sql_handler.cc
index 83c5c60dc01..4b07a00c779 100644
--- a/sql/sql_handler.cc
+++ b/sql/sql_handler.cc
@@ -125,7 +125,7 @@ static void mysql_ha_hash_free(TABLE_LIST *tables)
static void mysql_ha_close_table(THD *thd, TABLE_LIST *tables)
{
TABLE **table_ptr;
- MDL_LOCK_TICKET *mdl_lock_ticket;
+ MDL_ticket *mdl_ticket;
/*
Though we could take the table pointer from hash_tables->table,
@@ -141,7 +141,7 @@ static void mysql_ha_close_table(THD *thd, TABLE_LIST *tables)
if (*table_ptr)
{
(*table_ptr)->file->ha_index_or_rnd_end();
- mdl_lock_ticket= (*table_ptr)->mdl_lock_ticket;
+ mdl_ticket= (*table_ptr)->mdl_ticket;
pthread_mutex_lock(&LOCK_open);
if (close_thread_table(thd, table_ptr))
{
@@ -149,8 +149,8 @@ static void mysql_ha_close_table(THD *thd, TABLE_LIST *tables)
broadcast_refresh();
}
pthread_mutex_unlock(&LOCK_open);
- mdl_ticket_release(&thd->handler_mdl_context, mdl_lock_ticket);
- mdl_request_remove(&thd->handler_mdl_context, tables->mdl_lock_request);
+ thd->handler_mdl_context.release_lock(mdl_ticket);
+ thd->handler_mdl_context.remove_request(tables->mdl_request);
}
else if (tables->table)
{
@@ -194,8 +194,8 @@ bool mysql_ha_open(THD *thd, TABLE_LIST *tables, bool reopen)
uint dblen, namelen, aliaslen, counter;
int error;
TABLE *backup_open_tables;
- MDL_CONTEXT backup_mdl_context;
- MDL_LOCK_REQUEST *mdl_lock_request;
+ MDL_context backup_mdl_context;
+ MDL_request *mdl_request;
DBUG_ENTER("mysql_ha_open");
DBUG_PRINT("enter",("'%s'.'%s' as '%s' reopen: %d",
tables->db, tables->table_name, tables->alias,
@@ -246,7 +246,7 @@ bool mysql_ha_open(THD *thd, TABLE_LIST *tables, bool reopen)
&db, (uint) dblen,
&name, (uint) namelen,
&alias, (uint) aliaslen,
- &mdl_lock_request, sizeof(MDL_LOCK_REQUEST),
+ &mdl_request, sizeof(MDL_request),
NullS)))
{
DBUG_PRINT("exit",("ERROR"));
@@ -260,8 +260,8 @@ bool mysql_ha_open(THD *thd, TABLE_LIST *tables, bool reopen)
memcpy(hash_tables->db, tables->db, dblen);
memcpy(hash_tables->table_name, tables->table_name, namelen);
memcpy(hash_tables->alias, tables->alias, aliaslen);
- mdl_request_init(mdl_lock_request, 0, db, name);
- hash_tables->mdl_lock_request= mdl_lock_request;
+ mdl_request->init(0, db, name);
+ hash_tables->mdl_request= mdl_request;
/* add to hash */
if (my_hash_insert(&thd->handler_tables_hash, (uchar*) hash_tables))
@@ -289,7 +289,7 @@ bool mysql_ha_open(THD *thd, TABLE_LIST *tables, bool reopen)
*/
backup_open_tables= thd->open_tables;
thd->open_tables= NULL;
- mdl_context_backup_and_reset(&thd->mdl_context, &backup_mdl_context);
+ thd->mdl_context.backup_and_reset(&backup_mdl_context);
/*
open_tables() will set 'hash_tables->table' if successful.
@@ -328,10 +328,10 @@ bool mysql_ha_open(THD *thd, TABLE_LIST *tables, bool reopen)
thd->handler_tables= thd->open_tables;
}
}
- mdl_context_merge(&thd->handler_mdl_context, &thd->mdl_context);
+ thd->handler_mdl_context.merge(&thd->mdl_context);
thd->open_tables= backup_open_tables;
- mdl_context_restore(&thd->mdl_context, &backup_mdl_context);
+ thd->mdl_context.restore_from_backup(&backup_mdl_context);
if (error)
goto err;
@@ -800,11 +800,11 @@ void mysql_ha_flush(THD *thd)
{
hash_tables= (TABLE_LIST*) my_hash_element(&thd->handler_tables_hash, i);
/*
- TABLE::mdl_lock_ticket is 0 for temporary tables so we need extra check.
+ TABLE::mdl_ticket is 0 for temporary tables so we need extra check.
*/
if (hash_tables->table &&
- (hash_tables->table->mdl_lock_ticket &&
- mdl_has_pending_conflicting_lock(hash_tables->table->mdl_lock_ticket) ||
+ (hash_tables->table->mdl_ticket &&
+ hash_tables->table->mdl_ticket->has_pending_conflicting_lock() ||
hash_tables->table->needs_reopen()))
mysql_ha_close_table(thd, hash_tables);
}