diff options
author | Sergey Vojtovich <svoj@mariadb.org> | 2017-02-07 13:27:42 +0400 |
---|---|---|
committer | Sergey Vojtovich <svoj@mariadb.org> | 2017-03-22 19:08:24 +0400 |
commit | 8026cd6202bd252dc9baac31d6c8bc39653bd637 (patch) | |
tree | 0c51f976d916ab4dd0c9b02804a4b84343e4d256 /sql/mdl.cc | |
parent | 4c6ae99285922a5aefe174b390bb2640a0d5c997 (diff) | |
download | mariadb-git-8026cd6202bd252dc9baac31d6c8bc39653bd637.tar.gz |
MDEV-11379, MDEV-11388 - [WAIT n|NOWAIT]
Extended syntax so that it is now possible to set lock_wait_timeout for the
following statements:
SELECT ... FOR UPDATE [WAIT n|NOWAIT]
SELECT ... LOCK IN SHARED MODE [WAIT n|NOWAIT]
LOCK TABLE ... [WAIT n|NOWAIT]
CREATE ... INDEX ON tbl_name (index_col_name, ...) [WAIT n|NOWAIT] ...
ALTER TABLE tbl_name [WAIT n|NOWAIT] ...
OPTIMIZE TABLE tbl_name [WAIT n|NOWAIT]
DROP INDEX ... [WAIT n|NOWAIT]
TRUNCATE TABLE tbl_name [WAIT n|NOWAIT]
RENAME TABLE tbl_name [WAIT n|NOWAIT] ...
DROP TABLE tbl_name [WAIT n|NOWAIT] ...
Valid range of lock_wait_timeout and innodb_lock_wait_timeout was extended so
that 0 is acceptable value (means no wait).
This is amended AliSQL patch. We prefer Oracle syntax for [WAIT n|NOWAIT]
instead of original [WAIT [n]|NO_WAIT].
Diffstat (limited to 'sql/mdl.cc')
-rw-r--r-- | sql/mdl.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sql/mdl.cc b/sql/mdl.cc index c05fdc0157b..e453ad956eb 100644 --- a/sql/mdl.cc +++ b/sql/mdl.cc @@ -2086,6 +2086,14 @@ MDL_context::acquire_lock(MDL_request *mdl_request, double lock_wait_timeout) */ lock= ticket->m_lock; + if (lock_wait_timeout == 0) + { + mysql_prlock_unlock(&lock->m_rwlock); + MDL_ticket::destroy(ticket); + my_error(ER_LOCK_WAIT_TIMEOUT, MYF(0)); + DBUG_RETURN(TRUE); + } + lock->m_waiting.add_ticket(ticket); /* |