diff options
author | jan@hundin.mysql.fi <> | 2004-12-13 14:22:18 +0200 |
---|---|---|
committer | jan@hundin.mysql.fi <> | 2004-12-13 14:22:18 +0200 |
commit | a5a1f7d7c345d93f283749415031907c7b7c56bc (patch) | |
tree | bbd6a85684cc43c8f4fb1e5b94e0afbe39936e1e /innobase/lock | |
parent | 1d3a32c719d29c55c8cce10be2b55afaafe12db5 (diff) | |
download | mariadb-git-a5a1f7d7c345d93f283749415031907c7b7c56bc.tar.gz |
Fixed problems with deadlocks on LOCK TABLES...WHERE ENGINE = InnoDB.
Diffstat (limited to 'innobase/lock')
-rw-r--r-- | innobase/lock/lock0lock.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/innobase/lock/lock0lock.c b/innobase/lock/lock0lock.c index ee171de114c..05466764063 100644 --- a/innobase/lock/lock0lock.c +++ b/innobase/lock/lock0lock.c @@ -3642,7 +3642,7 @@ lock_table( /* Another trx has a request on the table in an incompatible mode: this trx may have to wait */ - err = lock_table_enqueue_waiting(mode, table, thr); + err = lock_table_enqueue_waiting(mode | flags, table, thr); lock_mutex_exit_kernel(); @@ -4438,6 +4438,7 @@ lock_table_queue_validate( while (lock) { ut_a(((lock->trx)->conc_state == TRX_ACTIVE) + || ((lock->trx)->conc_state == TRX_PREPARED) || ((lock->trx)->conc_state == TRX_COMMITTED_IN_MEMORY)); if (!lock_get_wait(lock)) { @@ -4485,6 +4486,7 @@ lock_rec_queue_validate( while (lock) { ut_a(lock->trx->conc_state == TRX_ACTIVE + || lock->trx->conc_state == TRX_PREPARED || lock->trx->conc_state == TRX_COMMITTED_IN_MEMORY); @@ -4539,6 +4541,7 @@ lock_rec_queue_validate( while (lock) { ut_a(lock->trx->conc_state == TRX_ACTIVE + || lock->trx->conc_state == TRX_PREPARED || lock->trx->conc_state == TRX_COMMITTED_IN_MEMORY); ut_a(trx_in_trx_list(lock->trx)); @@ -4621,6 +4624,7 @@ loop: ut_a(trx_in_trx_list(lock->trx)); ut_a(lock->trx->conc_state == TRX_ACTIVE + || lock->trx->conc_state == TRX_PREPARED || lock->trx->conc_state == TRX_COMMITTED_IN_MEMORY); for (i = nth_bit; i < lock_rec_get_n_bits(lock); i++) { |