mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Bug#53674: InnoDB: Error: unlock row could not find a 4 mode lock on the record
In semi-consistent read, only unlock freshly locked non-matching records. lock_rec_lock_fast(): Return LOCK_REC_SUCCESS, LOCK_REC_SUCCESS_CREATED, or LOCK_REC_FAIL instead of TRUE/FALSE. enum db_err: Add DB_SUCCESS_LOCKED_REC for indicating a successful operation where a record lock was created. lock_sec_rec_read_check_and_lock(), lock_clust_rec_read_check_and_lock(), lock_rec_enqueue_waiting(), lock_rec_lock_slow(), lock_rec_lock(), row_ins_set_shared_rec_lock(), row_ins_set_exclusive_rec_lock(), sel_set_rec_lock(), row_sel_get_clust_rec_for_mysql(): Return DB_SUCCESS_LOCKED_REC if a new record lock was created. Adjust callers. row_unlock_for_mysql(): Correct the function documentation. row_prebuilt_t::new_rec_locks: Correct the documentation.
This commit is contained in:
@ -340,11 +340,12 @@ lock_sec_rec_modify_check_and_lock(
|
||||
que_thr_t* thr, /*!< in: query thread */
|
||||
mtr_t* mtr); /*!< in/out: mini-transaction */
|
||||
/*********************************************************************//**
|
||||
Like the counterpart for a clustered index below, but now we read a
|
||||
Like lock_clust_rec_read_check_and_lock(), but reads a
|
||||
secondary index record.
|
||||
@return DB_SUCCESS, DB_LOCK_WAIT, DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */
|
||||
@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK,
|
||||
or DB_QUE_THR_SUSPENDED */
|
||||
UNIV_INTERN
|
||||
ulint
|
||||
enum db_err
|
||||
lock_sec_rec_read_check_and_lock(
|
||||
/*=============================*/
|
||||
ulint flags, /*!< in: if BTR_NO_LOCKING_FLAG
|
||||
@ -371,9 +372,10 @@ if the query thread should anyway be suspended for some reason; if not, then
|
||||
puts the transaction and the query thread to the lock wait state and inserts a
|
||||
waiting request for a record lock to the lock queue. Sets the requested mode
|
||||
lock on the record.
|
||||
@return DB_SUCCESS, DB_LOCK_WAIT, DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */
|
||||
@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK,
|
||||
or DB_QUE_THR_SUSPENDED */
|
||||
UNIV_INTERN
|
||||
ulint
|
||||
enum db_err
|
||||
lock_clust_rec_read_check_and_lock(
|
||||
/*===============================*/
|
||||
ulint flags, /*!< in: if BTR_NO_LOCKING_FLAG
|
||||
|
Reference in New Issue
Block a user