summaryrefslogtreecommitdiff
path: root/innobase/lock
diff options
context:
space:
mode:
authorjan@hundin.mysql.fi <>2004-12-13 14:22:18 +0200
committerjan@hundin.mysql.fi <>2004-12-13 14:22:18 +0200
commita5a1f7d7c345d93f283749415031907c7b7c56bc (patch)
treebbd6a85684cc43c8f4fb1e5b94e0afbe39936e1e /innobase/lock
parent1d3a32c719d29c55c8cce10be2b55afaafe12db5 (diff)
downloadmariadb-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.c6
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++) {