summaryrefslogtreecommitdiff
path: root/sql/rpl_rli.cc
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2013-11-23 00:50:54 +0100
committerSergei Golubchik <sergii@pisem.net>2013-11-23 00:50:54 +0100
commitc6d30805db3a1a2a098c3009fde8a42efd9fb9de (patch)
treee55f68e5adf40e1a75e08bda91b712ab6a094643 /sql/rpl_rli.cc
parent2c032b990e4ec470fad2e9f61cf6267a68b7e937 (diff)
parenteea310e498f3b7ac95a4492d48f04e08d3009412 (diff)
downloadmariadb-git-c6d30805db3a1a2a098c3009fde8a42efd9fb9de.tar.gz
5.5 merge
Diffstat (limited to 'sql/rpl_rli.cc')
-rw-r--r--sql/rpl_rli.cc12
1 files changed, 10 insertions, 2 deletions
diff --git a/sql/rpl_rli.cc b/sql/rpl_rli.cc
index 3bf6a0cff76..d4db81b79c1 100644
--- a/sql/rpl_rli.cc
+++ b/sql/rpl_rli.cc
@@ -1,4 +1,5 @@
-/* Copyright (c) 2006, 2012, Oracle and/or its affiliates.
+/* Copyright (c) 2006, 2013, Oracle and/or its affiliates.
+ Copyright (c) 2011, 2013, Monty Program Ab
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
@@ -1672,6 +1673,8 @@ void rpl_group_info::slave_close_thread_tables(THD *thd)
close_thread_tables(thd);
/*
+ - If transaction rollback was requested due to deadlock
+ perform it and release metadata locks.
- If inside a multi-statement transaction,
defer the release of metadata locks until the current
transaction is either committed or rolled back. This prevents
@@ -1681,7 +1684,12 @@ void rpl_group_info::slave_close_thread_tables(THD *thd)
- If in autocommit mode, or outside a transactional context,
automatically release metadata locks of the current statement.
*/
- if (! thd->in_multi_stmt_transaction_mode())
+ if (thd->transaction_rollback_request)
+ {
+ trans_rollback_implicit(thd);
+ thd->mdl_context.release_transactional_locks();
+ }
+ else if (! thd->in_multi_stmt_transaction_mode())
thd->mdl_context.release_transactional_locks();
else
thd->mdl_context.release_statement_locks();