diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2021-10-18 16:36:24 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2021-10-18 16:36:24 +0300 |
commit | 9c5835e067e99e1f85477f28d3bdc807537393a8 (patch) | |
tree | 644c828a4812ab1f0fffb3ada2deb5822997ce46 /storage/innobase/trx/trx0trx.cc | |
parent | 78e023c2743c9b7fc17db31cc11524920b658075 (diff) | |
parent | 18eab4a83280049974265358b0d78389d05cd67b (diff) | |
download | mariadb-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.cc | 14 |
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); + } } } |