diff options
author | monty@mashka.mysql.fi <> | 2002-11-21 15:56:48 +0200 |
---|---|---|
committer | monty@mashka.mysql.fi <> | 2002-11-21 15:56:48 +0200 |
commit | dac6498f9b5b28d94473baf46c6e6f174943728d (patch) | |
tree | d3df5d3fc1abf364dcbcc8eb2305a1cf62540192 /sql/lock.cc | |
parent | 305d16a7cb3955c20ab5d119b3eb0968008683b6 (diff) | |
parent | e60050c4dd652c7a431aebeb95b7dd944be87bf8 (diff) | |
download | mariadb-git-dac6498f9b5b28d94473baf46c6e6f174943728d.tar.gz |
Merge with 4.0
Diffstat (limited to 'sql/lock.cc')
-rw-r--r-- | sql/lock.cc | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/sql/lock.cc b/sql/lock.cc index 3b2444c8e9d..74d1109b203 100644 --- a/sql/lock.cc +++ b/sql/lock.cc @@ -80,7 +80,7 @@ extern HASH open_cache; static MYSQL_LOCK *get_lock_data(THD *thd, TABLE **table,uint count, bool unlock, TABLE **write_locked); -static int lock_external(TABLE **table,uint count); +static int lock_external(THD *thd, TABLE **table,uint count); static int unlock_external(THD *thd, TABLE **table,uint count); static void print_lock_error(int error); @@ -116,14 +116,14 @@ MYSQL_LOCK *mysql_lock_tables(THD *thd,TABLE **tables,uint count) } thd->proc_info="System lock"; - if (lock_external(tables,count)) + if (lock_external(thd, tables, count)) { my_free((gptr) sql_lock,MYF(0)); sql_lock=0; thd->proc_info=0; break; } - thd->proc_info=0; + thd->proc_info="Table lock"; thd->locked=1; if (thr_multi_lock(sql_lock->locks,sql_lock->lock_count)) { @@ -142,6 +142,7 @@ MYSQL_LOCK *mysql_lock_tables(THD *thd,TABLE **tables,uint count) thd->locked=0; break; } + thd->proc_info=0; /* some table was altered or deleted. reopen tables marked deleted */ mysql_unlock_tables(thd,sql_lock); @@ -151,6 +152,7 @@ retry: if (wait_for_tables(thd)) break; // Couldn't open tables } + thd->proc_info=0; if (thd->killed) { my_error(ER_SERVER_SHUTDOWN,MYF(0)); @@ -166,15 +168,15 @@ retry: } -static int lock_external(TABLE **tables,uint count) +static int lock_external(THD *thd, TABLE **tables, uint count) { reg1 uint i; int lock_type,error; - THD *thd=current_thd; DBUG_ENTER("lock_external"); for (i=1 ; i <= count ; i++, tables++) { + DBUG_ASSERT((*tables)->reginfo.lock_type >= TL_READ); lock_type=F_WRLCK; /* Lock exclusive */ if ((*tables)->db_stat & HA_READ_ONLY || ((*tables)->reginfo.lock_type >= TL_READ && |