diff options
author | Davi Arnaut <Davi.Arnaut@Sun.COM> | 2009-06-25 12:25:23 -0300 |
---|---|---|
committer | Davi Arnaut <Davi.Arnaut@Sun.COM> | 2009-06-25 12:25:23 -0300 |
commit | eefdd70ab2bf00146c399a3ed042f77ac74730b8 (patch) | |
tree | c6433c113369ef43f4c39e0e54181893939bd2c5 /sql/handler.cc | |
parent | 4171540d9545a111e8937d3f6a2c31382ccb0b80 (diff) | |
download | mariadb-git-eefdd70ab2bf00146c399a3ed042f77ac74730b8.tar.gz |
Bug#45548: XA transaction without access to InnoDB tables crashes the server
The problem is that the one phase commit function failed to
properly end a empty transaction. The solution is to ensure
that the transaction cleanup procedure is invoked even for
empty transactions.
mysql-test/r/xa.result:
Add test case result for Bug#45548
mysql-test/t/xa.test:
Add test case for Bug#45548
sql/handler.cc:
Invoke transaction cleanup function whenever a transaction is ended.
Diffstat (limited to 'sql/handler.cc')
-rw-r--r-- | sql/handler.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sql/handler.cc b/sql/handler.cc index 7e584b8fcf3..e65ceba4181 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -1242,9 +1242,10 @@ int ha_commit_one_phase(THD *thd, bool all) #endif thd->variables.tx_isolation=thd->session_tx_isolation; } - if (is_real_trans) - thd->transaction.cleanup(); } + /* Free resources and perform other cleanup even for 'empty' transactions. */ + if (is_real_trans) + thd->transaction.cleanup(); #endif /* USING_TRANSACTIONS */ DBUG_RETURN(error); } |