Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
e15e879f
Commit
e15e879f
authored
Mar 13, 2018
by
Marko Mäkelä
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove the unreachable error DB_QUE_THR_SUSPENDED
parent
84129fb1
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
35 additions
and
99 deletions
+35
-99
storage/innobase/include/db0err.h
storage/innobase/include/db0err.h
+1
-2
storage/innobase/include/lock0lock.h
storage/innobase/include/lock0lock.h
+8
-10
storage/innobase/include/lock0prdt.h
storage/innobase/include/lock0prdt.h
+4
-3
storage/innobase/include/lock0priv.h
storage/innobase/include/lock0priv.h
+3
-3
storage/innobase/lock/lock0lock.cc
storage/innobase/lock/lock0lock.cc
+14
-51
storage/innobase/lock/lock0prdt.cc
storage/innobase/lock/lock0prdt.cc
+4
-4
storage/innobase/row/row0mysql.cc
storage/innobase/row/row0mysql.cc
+1
-24
storage/innobase/ut/ut0ut.cc
storage/innobase/ut/ut0ut.cc
+0
-2
No files found.
storage/innobase/include/db0err.h
View file @
e15e879f
/*****************************************************************************
/*****************************************************************************
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2015, 201
7
, MariaDB Corporation.
Copyright (c) 2015, 201
8
, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
the terms of the GNU General Public License as published by the Free Software
...
@@ -43,7 +43,6 @@ enum dberr_t {
...
@@ -43,7 +43,6 @@ enum dberr_t {
DB_DEADLOCK
,
DB_DEADLOCK
,
DB_ROLLBACK
,
DB_ROLLBACK
,
DB_DUPLICATE_KEY
,
DB_DUPLICATE_KEY
,
DB_QUE_THR_SUSPENDED
,
DB_MISSING_HISTORY
,
/*!< required history data has been
DB_MISSING_HISTORY
,
/*!< required history data has been
deleted due to lack of space in
deleted due to lack of space in
rollback segment */
rollback segment */
...
...
storage/innobase/include/lock0lock.h
View file @
e15e879f
/*****************************************************************************
/*****************************************************************************
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2017, MariaDB Corporation.
Copyright (c) 2017,
2018,
MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
the terms of the GNU General Public License as published by the Free Software
...
@@ -285,7 +285,7 @@ a record. If they do, first tests if the query thread should anyway
...
@@ -285,7 +285,7 @@ a record. If they do, first tests if the query thread should anyway
be suspended for some reason; if not, then puts the transaction and
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
the query thread to the lock wait state and inserts a waiting request
for a gap x-lock to the lock queue.
for a gap x-lock to the lock queue.
@return DB_SUCCESS, DB_LOCK_WAIT,
DB_DEADLOCK, or DB_QUE_THR_SUSPENDED
*/
@return DB_SUCCESS, DB_LOCK_WAIT,
or DB_DEADLOCK
*/
dberr_t
dberr_t
lock_rec_insert_check_and_lock
(
lock_rec_insert_check_and_lock
(
/*===========================*/
/*===========================*/
...
@@ -309,7 +309,7 @@ first tests if the query thread should anyway be suspended for some
...
@@ -309,7 +309,7 @@ first tests if the query thread should anyway be suspended for some
reason; if not, then puts the transaction and the query thread to the
reason; if not, then puts the transaction and the query thread to the
lock wait state and inserts a waiting request for a record x-lock to the
lock wait state and inserts a waiting request for a record x-lock to the
lock queue.
lock queue.
@return DB_SUCCESS, DB_LOCK_WAIT,
DB_DEADLOCK, or DB_QUE_THR_SUSPENDED
*/
@return DB_SUCCESS, DB_LOCK_WAIT,
or DB_DEADLOCK
*/
dberr_t
dberr_t
lock_clust_rec_modify_check_and_lock
(
lock_clust_rec_modify_check_and_lock
(
/*=================================*/
/*=================================*/
...
@@ -325,7 +325,7 @@ lock_clust_rec_modify_check_and_lock(
...
@@ -325,7 +325,7 @@ lock_clust_rec_modify_check_and_lock(
/*********************************************************************//**
/*********************************************************************//**
Checks if locks of other transactions prevent an immediate modify
Checks if locks of other transactions prevent an immediate modify
(delete mark or delete unmark) of a secondary index record.
(delete mark or delete unmark) of a secondary index record.
@return DB_SUCCESS, DB_LOCK_WAIT,
DB_DEADLOCK, or DB_QUE_THR_SUSPENDED
*/
@return DB_SUCCESS, DB_LOCK_WAIT,
or DB_DEADLOCK
*/
dberr_t
dberr_t
lock_sec_rec_modify_check_and_lock
(
lock_sec_rec_modify_check_and_lock
(
/*===============================*/
/*===============================*/
...
@@ -345,8 +345,7 @@ lock_sec_rec_modify_check_and_lock(
...
@@ -345,8 +345,7 @@ lock_sec_rec_modify_check_and_lock(
/*********************************************************************//**
/*********************************************************************//**
Like lock_clust_rec_read_check_and_lock(), but reads a
Like lock_clust_rec_read_check_and_lock(), but reads a
secondary index record.
secondary index record.
@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK,
@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, or DB_DEADLOCK */
or DB_QUE_THR_SUSPENDED */
dberr_t
dberr_t
lock_sec_rec_read_check_and_lock
(
lock_sec_rec_read_check_and_lock
(
/*=============================*/
/*=============================*/
...
@@ -374,8 +373,7 @@ if the query thread should anyway be suspended for some reason; if not, then
...
@@ -374,8 +373,7 @@ 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
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
waiting request for a record lock to the lock queue. Sets the requested mode
lock on the record.
lock on the record.
@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK,
@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, or DB_DEADLOCK */
or DB_QUE_THR_SUSPENDED */
dberr_t
dberr_t
lock_clust_rec_read_check_and_lock
(
lock_clust_rec_read_check_and_lock
(
/*===============================*/
/*===============================*/
...
@@ -405,7 +403,7 @@ waiting request for a record lock to the lock queue. Sets the requested mode
...
@@ -405,7 +403,7 @@ waiting request for a record lock to the lock queue. Sets the requested mode
lock on the record. This is an alternative version of
lock on the record. This is an alternative version of
lock_clust_rec_read_check_and_lock() that does not require the parameter
lock_clust_rec_read_check_and_lock() that does not require the parameter
"offsets".
"offsets".
@return DB_SUCCESS, DB_LOCK_WAIT,
DB_DEADLOCK, or DB_QUE_THR_SUSPENDED
*/
@return DB_SUCCESS, DB_LOCK_WAIT,
or DB_DEADLOCK
*/
dberr_t
dberr_t
lock_clust_rec_read_check_and_lock_alt
(
lock_clust_rec_read_check_and_lock_alt
(
/*===================================*/
/*===================================*/
...
@@ -460,7 +458,7 @@ lock_sec_rec_cons_read_sees(
...
@@ -460,7 +458,7 @@ lock_sec_rec_cons_read_sees(
/*********************************************************************//**
/*********************************************************************//**
Locks the specified database table in the mode given. If the lock cannot
Locks the specified database table in the mode given. If the lock cannot
be granted immediately, the query thread is put to wait.
be granted immediately, the query thread is put to wait.
@return DB_SUCCESS, DB_LOCK_WAIT,
DB_DEADLOCK, or DB_QUE_THR_SUSPENDED
*/
@return DB_SUCCESS, DB_LOCK_WAIT,
or DB_DEADLOCK
*/
dberr_t
dberr_t
lock_table
(
lock_table
(
/*=======*/
/*=======*/
...
...
storage/innobase/include/lock0prdt.h
View file @
e15e879f
/*****************************************************************************
/*****************************************************************************
Copyright (c) 2014, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2014, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2018, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
the terms of the GNU General Public License as published by the Free Software
...
@@ -36,7 +37,7 @@ typedef struct lock_prdt {
...
@@ -36,7 +37,7 @@ typedef struct lock_prdt {
/*********************************************************************//**
/*********************************************************************//**
Acquire a predicate lock on a block
Acquire a predicate lock on a block
@return DB_SUCCESS, DB_LOCK_WAIT,
DB_DEADLOCK, or DB_QUE_THR_SUSPENDED
*/
@return DB_SUCCESS, DB_LOCK_WAIT,
or DB_DEADLOCK
*/
dberr_t
dberr_t
lock_prdt_lock
(
lock_prdt_lock
(
/*===========*/
/*===========*/
...
@@ -56,7 +57,7 @@ lock_prdt_lock(
...
@@ -56,7 +57,7 @@ lock_prdt_lock(
/*********************************************************************//**
/*********************************************************************//**
Acquire a "Page" lock on a block
Acquire a "Page" lock on a block
@return DB_SUCCESS, DB_LOCK_WAIT,
DB_DEADLOCK, or DB_QUE_THR_SUSPENDED
*/
@return DB_SUCCESS, DB_LOCK_WAIT,
or DB_DEADLOCK
*/
dberr_t
dberr_t
lock_place_prdt_page_lock
(
lock_place_prdt_page_lock
(
/*======================*/
/*======================*/
...
@@ -129,7 +130,7 @@ lock_prdt_update_parent(
...
@@ -129,7 +130,7 @@ lock_prdt_update_parent(
/*********************************************************************//**
/*********************************************************************//**
Checks if locks of other transactions prevent an immediate insert of
Checks if locks of other transactions prevent an immediate insert of
a predicate record.
a predicate record.
@return DB_SUCCESS, DB_LOCK_WAIT,
DB_DEADLOCK, or DB_QUE_THR_SUSPENDED
*/
@return DB_SUCCESS, DB_LOCK_WAIT,
or DB_DEADLOCK
*/
dberr_t
dberr_t
lock_prdt_insert_check_and_lock
(
lock_prdt_insert_check_and_lock
(
/*============================*/
/*============================*/
...
...
storage/innobase/include/lock0priv.h
View file @
e15e879f
/*****************************************************************************
/*****************************************************************************
Copyright (c) 2007, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2007, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2015, 201
6, MariaDB Corporation
Copyright (c) 2015, 201
8, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
the terms of the GNU General Public License as published by the Free Software
...
@@ -715,7 +715,7 @@ class RecLock {
...
@@ -715,7 +715,7 @@ class RecLock {
@param[in, out] wait_for The lock that the the joining
@param[in, out] wait_for The lock that the the joining
transaction is waiting for
transaction is waiting for
@param[in] prdt Predicate [optional]
@param[in] prdt Predicate [optional]
@return DB_LOCK_WAIT, DB_DEADLOCK, or
DB_QUE_THR_SUSPENDED, or
@return DB_LOCK_WAIT, DB_DEADLOCK, or
DB_SUCCESS_LOCKED_REC; DB_SUCCESS_LOCKED_REC means that
DB_SUCCESS_LOCKED_REC; DB_SUCCESS_LOCKED_REC means that
there was a deadlock, but another transaction was chosen
there was a deadlock, but another transaction was chosen
as a victim, and we got the lock immediately: no need to
as a victim, and we got the lock immediately: no need to
...
@@ -843,7 +843,7 @@ class RecLock {
...
@@ -843,7 +843,7 @@ class RecLock {
/**
/**
Check and resolve any deadlocks
Check and resolve any deadlocks
@param[in, out] lock The lock being acquired
@param[in, out] lock The lock being acquired
@return DB_LOCK_WAIT, DB_DEADLOCK, or
DB_QUE_THR_SUSPENDED, or
@return DB_LOCK_WAIT, DB_DEADLOCK, or
DB_SUCCESS_LOCKED_REC; DB_SUCCESS_LOCKED_REC means that
DB_SUCCESS_LOCKED_REC; DB_SUCCESS_LOCKED_REC means that
there was a deadlock, but another transaction was chosen
there was a deadlock, but another transaction was chosen
as a victim, and we got the lock immediately: no need to
as a victim, and we got the lock immediately: no need to
...
...
storage/innobase/lock/lock0lock.cc
View file @
e15e879f
...
@@ -1999,7 +1999,7 @@ RecLock::check_deadlock_result(const trx_t* victim_trx, lock_t* lock)
...
@@ -1999,7 +1999,7 @@ RecLock::check_deadlock_result(const trx_t* victim_trx, lock_t* lock)
/**
/**
Check and resolve any deadlocks
Check and resolve any deadlocks
@param[in, out] lock The lock being acquired
@param[in, out] lock The lock being acquired
@return DB_LOCK_WAIT, DB_DEADLOCK, or
DB_QUE_THR_SUSPENDED, or
@return DB_LOCK_WAIT, DB_DEADLOCK, or
DB_SUCCESS_LOCKED_REC; DB_SUCCESS_LOCKED_REC means that
DB_SUCCESS_LOCKED_REC; DB_SUCCESS_LOCKED_REC means that
there was a deadlock, but another transaction was chosen
there was a deadlock, but another transaction was chosen
as a victim, and we got the lock immediately: no need to
as a victim, and we got the lock immediately: no need to
...
@@ -2097,7 +2097,7 @@ queue is itself waiting roll it back, also do a deadlock check and resolve.
...
@@ -2097,7 +2097,7 @@ queue is itself waiting roll it back, also do a deadlock check and resolve.
@param[in, out] wait_for The lock that the joining transaction is
@param[in, out] wait_for The lock that the joining transaction is
waiting for
waiting for
@param[in] prdt Predicate [optional]
@param[in] prdt Predicate [optional]
@return DB_LOCK_WAIT, DB_DEADLOCK, or
DB_QUE_THR_SUSPENDED, or
@return DB_LOCK_WAIT, DB_DEADLOCK, or
DB_SUCCESS_LOCKED_REC; DB_SUCCESS_LOCKED_REC means that
DB_SUCCESS_LOCKED_REC; DB_SUCCESS_LOCKED_REC means that
there was a deadlock, but another transaction was chosen
there was a deadlock, but another transaction was chosen
as a victim, and we got the lock immediately: no need to
as a victim, and we got the lock immediately: no need to
...
@@ -2380,8 +2380,7 @@ This is the general, and slower, routine for locking a record. This is a
...
@@ -2380,8 +2380,7 @@ This is the general, and slower, routine for locking a record. This is a
low-level function which does NOT look at implicit locks! Checks lock
low-level function which does NOT look at implicit locks! Checks lock
compatibility within explicit locks. This function sets a normal next-key
compatibility within explicit locks. This function sets a normal next-key
lock, or in the case of a page supremum record, a gap type lock.
lock, or in the case of a page supremum record, a gap type lock.
@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK,
@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, or DB_DEADLOCK */
or DB_QUE_THR_SUSPENDED */
static
static
dberr_t
dberr_t
lock_rec_lock_slow
(
lock_rec_lock_slow
(
...
@@ -2467,8 +2466,7 @@ possible, enqueues a waiting lock request. This is a low-level function
...
@@ -2467,8 +2466,7 @@ possible, enqueues a waiting lock request. This is a low-level function
which does NOT look at implicit locks! Checks lock compatibility within
which does NOT look at implicit locks! Checks lock compatibility within
explicit locks. This function sets a normal next-key lock, or in the case
explicit locks. This function sets a normal next-key lock, or in the case
of a page supremum record, a gap type lock.
of a page supremum record, a gap type lock.
@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK,
@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, or DB_DEADLOCK */
or DB_QUE_THR_SUSPENDED */
static
static
dberr_t
dberr_t
lock_rec_lock
(
lock_rec_lock
(
...
@@ -4446,7 +4444,7 @@ lock_table_remove_low(
...
@@ -4446,7 +4444,7 @@ lock_table_remove_low(
/*********************************************************************//**
/*********************************************************************//**
Enqueues a waiting request for a table lock which cannot be granted
Enqueues a waiting request for a table lock which cannot be granted
immediately. Checks for deadlocks.
immediately. Checks for deadlocks.
@return DB_LOCK_WAIT, DB_DEADLOCK, or
DB_QUE_THR_SUSPENDED, or
@return DB_LOCK_WAIT, DB_DEADLOCK, or
DB_SUCCESS; DB_SUCCESS means that there was a deadlock, but another
DB_SUCCESS; DB_SUCCESS means that there was a deadlock, but another
transaction was chosen as a victim, and we got the lock immediately:
transaction was chosen as a victim, and we got the lock immediately:
no need to wait then */
no need to wait then */
...
@@ -4468,16 +4466,7 @@ lock_table_enqueue_waiting(
...
@@ -4468,16 +4466,7 @@ lock_table_enqueue_waiting(
trx
=
thr_get_trx
(
thr
);
trx
=
thr_get_trx
(
thr
);
ut_ad
(
trx_mutex_own
(
trx
));
ut_ad
(
trx_mutex_own
(
trx
));
ut_a
(
!
que_thr_stop
(
thr
));
/* Test if there already is some other reason to suspend thread:
we do not enqueue a lock request if the query thread should be
stopped anyway */
if
(
que_thr_stop
(
thr
))
{
ut_error
;
return
(
DB_QUE_THR_SUSPENDED
);
}
switch
(
trx_get_dict_operation
(
trx
))
{
switch
(
trx_get_dict_operation
(
trx
))
{
case
TRX_DICT_OP_NONE
:
case
TRX_DICT_OP_NONE
:
...
@@ -4583,7 +4572,7 @@ lock_table_other_has_incompatible(
...
@@ -4583,7 +4572,7 @@ lock_table_other_has_incompatible(
/*********************************************************************//**
/*********************************************************************//**
Locks the specified database table in the mode given. If the lock cannot
Locks the specified database table in the mode given. If the lock cannot
be granted immediately, the query thread is put to wait.
be granted immediately, the query thread is put to wait.
@return DB_SUCCESS, DB_LOCK_WAIT,
DB_DEADLOCK, or DB_QUE_THR_SUSPENDED
*/
@return DB_SUCCESS, DB_LOCK_WAIT,
or DB_DEADLOCK
*/
dberr_t
dberr_t
lock_table
(
lock_table
(
/*=======*/
/*=======*/
...
@@ -4805,33 +4794,9 @@ lock_table_for_trx(
...
@@ -4805,33 +4794,9 @@ lock_table_for_trx(
}
else
{
}
else
{
que_thr_stop_for_mysql
(
thr
);
que_thr_stop_for_mysql
(
thr
);
if
(
err
!=
DB_QUE_THR_SUSPENDED
)
{
if
(
row_mysql_handle_errors
(
&
err
,
trx
,
thr
,
NULL
))
{
bool
was_lock_wait
;
was_lock_wait
=
row_mysql_handle_errors
(
&
err
,
trx
,
thr
,
NULL
);
if
(
was_lock_wait
)
{
goto
run_again
;
goto
run_again
;
}
}
}
else
{
que_thr_t
*
run_thr
;
que_node_t
*
parent
;
parent
=
que_node_get_parent
(
thr
);
run_thr
=
que_fork_start_command
(
static_cast
<
que_fork_t
*>
(
parent
));
ut_a
(
run_thr
==
thr
);
/* There was a lock wait but the thread was not
in a ready to run or running state. */
trx
->
error_state
=
DB_LOCK_WAIT
;
goto
run_again
;
}
}
}
que_graph_free
(
thr
->
graph
);
que_graph_free
(
thr
->
graph
);
...
@@ -6498,7 +6463,7 @@ a record. If they do, first tests if the query thread should anyway
...
@@ -6498,7 +6463,7 @@ a record. If they do, first tests if the query thread should anyway
be suspended for some reason; if not, then puts the transaction and
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
the query thread to the lock wait state and inserts a waiting request
for a gap x-lock to the lock queue.
for a gap x-lock to the lock queue.
@return DB_SUCCESS, DB_LOCK_WAIT,
DB_DEADLOCK, or DB_QUE_THR_SUSPENDED
*/
@return DB_SUCCESS, DB_LOCK_WAIT,
or DB_DEADLOCK
*/
dberr_t
dberr_t
lock_rec_insert_check_and_lock
(
lock_rec_insert_check_and_lock
(
/*===========================*/
/*===========================*/
...
@@ -6739,7 +6704,7 @@ first tests if the query thread should anyway be suspended for some
...
@@ -6739,7 +6704,7 @@ first tests if the query thread should anyway be suspended for some
reason; if not, then puts the transaction and the query thread to the
reason; if not, then puts the transaction and the query thread to the
lock wait state and inserts a waiting request for a record x-lock to the
lock wait state and inserts a waiting request for a record x-lock to the
lock queue.
lock queue.
@return DB_SUCCESS, DB_LOCK_WAIT,
DB_DEADLOCK, or DB_QUE_THR_SUSPENDED
*/
@return DB_SUCCESS, DB_LOCK_WAIT,
or DB_DEADLOCK
*/
dberr_t
dberr_t
lock_clust_rec_modify_check_and_lock
(
lock_clust_rec_modify_check_and_lock
(
/*=================================*/
/*=================================*/
...
@@ -6797,7 +6762,7 @@ lock_clust_rec_modify_check_and_lock(
...
@@ -6797,7 +6762,7 @@ lock_clust_rec_modify_check_and_lock(
/*********************************************************************//**
/*********************************************************************//**
Checks if locks of other transactions prevent an immediate modify (delete
Checks if locks of other transactions prevent an immediate modify (delete
mark or delete unmark) of a secondary index record.
mark or delete unmark) of a secondary index record.
@return DB_SUCCESS, DB_LOCK_WAIT,
DB_DEADLOCK, or DB_QUE_THR_SUSPENDED
*/
@return DB_SUCCESS, DB_LOCK_WAIT,
or DB_DEADLOCK
*/
dberr_t
dberr_t
lock_sec_rec_modify_check_and_lock
(
lock_sec_rec_modify_check_and_lock
(
/*===============================*/
/*===============================*/
...
@@ -6882,8 +6847,7 @@ lock_sec_rec_modify_check_and_lock(
...
@@ -6882,8 +6847,7 @@ lock_sec_rec_modify_check_and_lock(
/*********************************************************************//**
/*********************************************************************//**
Like lock_clust_rec_read_check_and_lock(), but reads a
Like lock_clust_rec_read_check_and_lock(), but reads a
secondary index record.
secondary index record.
@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK,
@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, or DB_DEADLOCK */
or DB_QUE_THR_SUSPENDED */
dberr_t
dberr_t
lock_sec_rec_read_check_and_lock
(
lock_sec_rec_read_check_and_lock
(
/*=============================*/
/*=============================*/
...
@@ -6961,8 +6925,7 @@ if the query thread should anyway be suspended for some reason; if not, then
...
@@ -6961,8 +6925,7 @@ 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
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
waiting request for a record lock to the lock queue. Sets the requested mode
lock on the record.
lock on the record.
@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK,
@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, or DB_DEADLOCK */
or DB_QUE_THR_SUSPENDED */
dberr_t
dberr_t
lock_clust_rec_read_check_and_lock
(
lock_clust_rec_read_check_and_lock
(
/*===============================*/
/*===============================*/
...
@@ -7036,7 +6999,7 @@ waiting request for a record lock to the lock queue. Sets the requested mode
...
@@ -7036,7 +6999,7 @@ waiting request for a record lock to the lock queue. Sets the requested mode
lock on the record. This is an alternative version of
lock on the record. This is an alternative version of
lock_clust_rec_read_check_and_lock() that does not require the parameter
lock_clust_rec_read_check_and_lock() that does not require the parameter
"offsets".
"offsets".
@return DB_SUCCESS, DB_LOCK_WAIT,
DB_DEADLOCK, or DB_QUE_THR_SUSPENDED
*/
@return DB_SUCCESS, DB_LOCK_WAIT,
or DB_DEADLOCK
*/
dberr_t
dberr_t
lock_clust_rec_read_check_and_lock_alt
(
lock_clust_rec_read_check_and_lock_alt
(
/*===================================*/
/*===================================*/
...
...
storage/innobase/lock/lock0prdt.cc
View file @
e15e879f
/*****************************************************************************
/*****************************************************************************
Copyright (c) 2014, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2014, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2018, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
the terms of the GNU General Public License as published by the Free Software
...
@@ -502,7 +503,7 @@ lock_prdt_add_to_queue(
...
@@ -502,7 +503,7 @@ lock_prdt_add_to_queue(
/*********************************************************************//**
/*********************************************************************//**
Checks if locks of other transactions prevent an immediate insert of
Checks if locks of other transactions prevent an immediate insert of
a predicate record.
a predicate record.
@return DB_SUCCESS, DB_LOCK_WAIT,
DB_DEADLOCK, or DB_QUE_THR_SUSPENDED
*/
@return DB_SUCCESS, DB_LOCK_WAIT,
or DB_DEADLOCK
*/
dberr_t
dberr_t
lock_prdt_insert_check_and_lock
(
lock_prdt_insert_check_and_lock
(
/*============================*/
/*============================*/
...
@@ -785,7 +786,7 @@ lock_init_prdt_from_mbr(
...
@@ -785,7 +786,7 @@ lock_init_prdt_from_mbr(
/*********************************************************************//**
/*********************************************************************//**
Acquire a predicate lock on a block
Acquire a predicate lock on a block
@return DB_SUCCESS, DB_LOCK_WAIT,
DB_DEADLOCK, or DB_QUE_THR_SUSPENDED
*/
@return DB_SUCCESS, DB_LOCK_WAIT,
or DB_DEADLOCK
*/
dberr_t
dberr_t
lock_prdt_lock
(
lock_prdt_lock
(
/*===========*/
/*===========*/
...
@@ -900,7 +901,7 @@ lock_prdt_lock(
...
@@ -900,7 +901,7 @@ lock_prdt_lock(
/*********************************************************************//**
/*********************************************************************//**
Acquire a "Page" lock on a block
Acquire a "Page" lock on a block
@return DB_SUCCESS, DB_LOCK_WAIT,
DB_DEADLOCK, or DB_QUE_THR_SUSPENDED
*/
@return DB_SUCCESS, DB_LOCK_WAIT,
or DB_DEADLOCK
*/
dberr_t
dberr_t
lock_place_prdt_page_lock
(
lock_place_prdt_page_lock
(
/*======================*/
/*======================*/
...
@@ -1049,4 +1050,3 @@ lock_prdt_page_free_from_discard(
...
@@ -1049,4 +1050,3 @@ lock_prdt_page_free_from_discard(
lock
=
next_lock
;
lock
=
next_lock
;
}
}
}
}
storage/innobase/row/row0mysql.cc
View file @
e15e879f
...
@@ -3155,30 +3155,7 @@ row_mysql_lock_table(
...
@@ -3155,30 +3155,7 @@ row_mysql_lock_table(
}
else
{
}
else
{
que_thr_stop_for_mysql
(
thr
);
que_thr_stop_for_mysql
(
thr
);
if
(
err
!=
DB_QUE_THR_SUSPENDED
)
{
if
(
row_mysql_handle_errors
(
&
err
,
trx
,
thr
,
NULL
))
{
ibool
was_lock_wait
;
was_lock_wait
=
row_mysql_handle_errors
(
&
err
,
trx
,
thr
,
NULL
);
if
(
was_lock_wait
)
{
goto
run_again
;
}
}
else
{
que_thr_t
*
run_thr
;
que_node_t
*
parent
;
parent
=
que_node_get_parent
(
thr
);
run_thr
=
que_fork_start_command
(
static_cast
<
que_fork_t
*>
(
parent
));
ut_a
(
run_thr
==
thr
);
/* There was a lock wait but the thread was not
in a ready to run or running state. */
trx
->
error_state
=
DB_LOCK_WAIT
;
goto
run_again
;
goto
run_again
;
}
}
}
}
...
...
storage/innobase/ut/ut0ut.cc
View file @
e15e879f
...
@@ -582,8 +582,6 @@ ut_strerr(
...
@@ -582,8 +582,6 @@ ut_strerr(
return
(
"Rollback"
);
return
(
"Rollback"
);
case
DB_DUPLICATE_KEY
:
case
DB_DUPLICATE_KEY
:
return
(
"Duplicate key"
);
return
(
"Duplicate key"
);
case
DB_QUE_THR_SUSPENDED
:
return
(
"The queue thread has been suspended"
);
case
DB_MISSING_HISTORY
:
case
DB_MISSING_HISTORY
:
return
(
"Required history data has been deleted"
);
return
(
"Required history data has been deleted"
);
case
DB_CLUSTER_NOT_FOUND
:
case
DB_CLUSTER_NOT_FOUND
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment