summaryrefslogtreecommitdiff
path: root/storage/innobase/trx/trx0trx.cc
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2021-10-18 16:36:24 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2021-10-18 16:36:24 +0300
commit9c5835e067e99e1f85477f28d3bdc807537393a8 (patch)
tree644c828a4812ab1f0fffb3ada2deb5822997ce46 /storage/innobase/trx/trx0trx.cc
parent78e023c2743c9b7fc17db31cc11524920b658075 (diff)
parent18eab4a83280049974265358b0d78389d05cd67b (diff)
downloadmariadb-git-9c5835e067e99e1f85477f28d3bdc807537393a8.tar.gz
Merge 10.5 into 10.6
Diffstat (limited to 'storage/innobase/trx/trx0trx.cc')
-rw-r--r--storage/innobase/trx/trx0trx.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/storage/innobase/trx/trx0trx.cc b/storage/innobase/trx/trx0trx.cc
index ad49d3e9c8e..43ef05f4f2b 100644
--- a/storage/innobase/trx/trx0trx.cc
+++ b/storage/innobase/trx/trx0trx.cc
@@ -1868,6 +1868,20 @@ trx_prepare(
We must not be holding any mutexes or latches here. */
trx_flush_log_if_needed(lsn, trx);
+
+ if (!UT_LIST_GET_LEN(trx->lock.trx_locks)
+ || trx->isolation_level == TRX_ISO_SERIALIZABLE) {
+ /* Do not release any locks at the
+ SERIALIZABLE isolation level. */
+ } else if (!trx->mysql_thd
+ || thd_sql_command(trx->mysql_thd)
+ != SQLCOM_XA_PREPARE) {
+ /* Do not release locks for XA COMMIT ONE PHASE
+ or for internal distributed transactions
+ (XID::get_my_xid() would be nonzero). */
+ } else {
+ lock_release_on_prepare(trx);
+ }
}
}