Commit ca126a2b authored by unknown's avatar unknown

Fix for bug #22728 "Handler_rollback value is growing".

The bug is present only in 4.1, will be null-merged to 5.0

For InnoDB, check value of thd->transaction.all.innodb_active_trans instead of thd->transaction.stmt.innobase_tid to see if we really need to rollback.


mysql-test/r/innodb_mysql.result:
  Added testcase for bug #22728 "Handler_rollback value is growing"
mysql-test/t/innodb_mysql.test:
  Added testcase for bug #22728 "Handler_rollback value is growing"
sql/handler.cc:
  For InnoDB, check value of thd->transaction.all.innodb_active_trans instead of thd->transaction.stmt.innobase_tid to see if we really need to rollback.
parent 7c8931d8
...@@ -54,3 +54,13 @@ c.c_id = 218 and expiredate is null; ...@@ -54,3 +54,13 @@ c.c_id = 218 and expiredate is null;
slai_id slai_id
12 12
drop table t1, t2; drop table t1, t2;
flush status;
create table t1 (c1 int) engine=innodb;
handler t1 open;
handler t1 read first;
c1
show /*!50002 GLOBAL */ status like 'Handler_rollback';
Variable_name Value
Handler_rollback 0
drop table t1;
End of 4.1 tests
...@@ -57,3 +57,21 @@ where ...@@ -57,3 +57,21 @@ where
c.c_id = 218 and expiredate is null; c.c_id = 218 and expiredate is null;
drop table t1, t2; drop table t1, t2;
#
# Bug #22728 - Handler_rollback value is growing
#
flush status;
create table t1 (c1 int) engine=innodb;
connect (con1,localhost,root,,);
connect (con2,localhost,root,,);
connection con2;
handler t1 open;
handler t1 read first;
disconnect con2;
connection con1;
show /*!50002 GLOBAL */ status like 'Handler_rollback';
connection default;
drop table t1;
disconnect con1;
--echo End of 4.1 tests
...@@ -648,7 +648,7 @@ int ha_rollback_trans(THD *thd, THD_TRANS *trans) ...@@ -648,7 +648,7 @@ int ha_rollback_trans(THD *thd, THD_TRANS *trans)
} }
#endif #endif
#ifdef HAVE_INNOBASE_DB #ifdef HAVE_INNOBASE_DB
if (trans->innobase_tid) if (thd->transaction.all.innodb_active_trans)
{ {
if ((error=innobase_rollback(thd, trans->innobase_tid))) if ((error=innobase_rollback(thd, trans->innobase_tid)))
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment