summaryrefslogtreecommitdiff
path: root/sql/mdl.cc
diff options
context:
space:
mode:
authorSergey Vojtovich <svoj@mariadb.org>2017-02-07 13:27:42 +0400
committerSergey Vojtovich <svoj@mariadb.org>2017-03-22 19:08:24 +0400
commit8026cd6202bd252dc9baac31d6c8bc39653bd637 (patch)
tree0c51f976d916ab4dd0c9b02804a4b84343e4d256 /sql/mdl.cc
parent4c6ae99285922a5aefe174b390bb2640a0d5c997 (diff)
downloadmariadb-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.cc8
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);
/*