mirror of
https://github.com/MariaDB/server.git
synced 2025-12-03 05:41:09 +03:00
MDEV-21988: Assertion failure mysqld: bool trans_commit_stmt(THD*): Assertion `thd->in_active_multi_stmt_transaction() || thd->m_transaction_psi == __null' failed. (#1476)
Set temporary `SERVER_STATUS_IN_TRANS` so assert is not triggered in `trans_commit_stmt`.
This commit is contained in:
@@ -139,6 +139,25 @@ private:
|
|||||||
my_bool m_wsrep_on;
|
my_bool m_wsrep_on;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class thd_server_status
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
thd_server_status(THD* thd, uint server_status, bool condition)
|
||||||
|
: m_thd(thd)
|
||||||
|
, m_thd_server_status(thd->server_status)
|
||||||
|
{
|
||||||
|
if (condition)
|
||||||
|
thd->server_status= server_status;
|
||||||
|
}
|
||||||
|
~thd_server_status()
|
||||||
|
{
|
||||||
|
m_thd->server_status= m_thd_server_status;
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
THD* m_thd;
|
||||||
|
uint m_thd_server_status;
|
||||||
|
};
|
||||||
|
|
||||||
class thd_context_switch
|
class thd_context_switch
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -1094,6 +1113,9 @@ int Wsrep_schema::remove_fragments(THD* thd,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Wsrep_schema_impl::thd_server_status
|
||||||
|
thd_server_status(thd, thd->server_status | SERVER_STATUS_IN_TRANS,
|
||||||
|
thd->in_multi_stmt_transaction_mode());
|
||||||
Wsrep_schema_impl::finish_stmt(thd);
|
Wsrep_schema_impl::finish_stmt(thd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user