diff options
author | monty@narttu.mysql.fi <> | 2003-03-04 12:22:35 +0200 |
---|---|---|
committer | monty@narttu.mysql.fi <> | 2003-03-04 12:22:35 +0200 |
commit | 2a7dfa172c9edf84ce503fdde37e22a8227ef9dc (patch) | |
tree | 6c1fb5d875ec9be01b82dead74784385452e9aa2 /sql/lock.cc | |
parent | 065bcf92fb8d193508602ed9ea0bf086b21038ce (diff) | |
download | mariadb-git-2a7dfa172c9edf84ce503fdde37e22a8227ef9dc.tar.gz |
Fixed bug in LOCK TABLE + DROP TABLE when other thread was waiting for a table that was locked bug not droped
Diffstat (limited to 'sql/lock.cc')
-rw-r--r-- | sql/lock.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/sql/lock.cc b/sql/lock.cc index 4c84bbb6e69..64456e6ec36 100644 --- a/sql/lock.cc +++ b/sql/lock.cc @@ -313,6 +313,25 @@ void mysql_lock_abort(THD *thd, TABLE *table) } +/* Abort one thread / table combination */ + +void mysql_lock_abort_for_thread(THD *thd, TABLE *table) +{ + MYSQL_LOCK *locked; + TABLE *write_lock_used; + DBUG_ENTER("mysql_lock_abort_for_thread"); + + if ((locked = get_lock_data(thd,&table,1,1,&write_lock_used))) + { + for (uint i=0; i < locked->lock_count; i++) + thr_abort_locks_for_thread(locked->locks[i]->lock, + table->in_use->real_id); + my_free((gptr) locked,MYF(0)); + } + DBUG_VOID_RETURN; +} + + MYSQL_LOCK *mysql_lock_merge(MYSQL_LOCK *a,MYSQL_LOCK *b) { MYSQL_LOCK *sql_lock; |