diff options
author | heikki@hundin.mysql.fi <> | 2002-10-01 13:47:58 +0300 |
---|---|---|
committer | heikki@hundin.mysql.fi <> | 2002-10-01 13:47:58 +0300 |
commit | 43f9ef5d0ffcaa5841f07027c5137e2d98adbe63 (patch) | |
tree | e3f2e81fae30278e1ae06d9c4d6151160b1ad69f /innobase/lock | |
parent | 66646cc4588d4119165127e4d69b15ed53a046e4 (diff) | |
download | mariadb-git-43f9ef5d0ffcaa5841f07027c5137e2d98adbe63.tar.gz |
lock0lock.c:
Fix bug: the AUTO-INC lock was held to the end of trx if it was granted after a lock wait
Diffstat (limited to 'innobase/lock')
-rw-r--r-- | innobase/lock/lock0lock.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/innobase/lock/lock0lock.c b/innobase/lock/lock0lock.c index da4092b926e..5fe8dc62f5a 100644 --- a/innobase/lock/lock0lock.c +++ b/innobase/lock/lock0lock.c @@ -1863,6 +1863,19 @@ lock_grant( ut_ad(mutex_own(&kernel_mutex)); lock_reset_lock_and_trx_wait(lock); + + if (lock_get_mode(lock) == LOCK_AUTO_INC) { + + if (lock->trx->auto_inc_lock != NULL) { + fprintf(stderr, + "InnoDB: Error: trx already had an AUTO-INC lock!\n"); + } + + /* Store pointer to lock to trx so that we know to + release it at the end of the SQL statement */ + + lock->trx->auto_inc_lock = lock; + } if (lock_print_waits) { printf("Lock wait for trx %lu ends\n", |