Commit ca126a2b authored by unknown's avatar unknown
Browse files

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
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -54,3 +54,13 @@ c.c_id = 218 and expiredate is null;
slai_id
12
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
+18 −0
Original line number Diff line number Diff line
@@ -57,3 +57,21 @@ where
  c.c_id = 218 and expiredate is null;

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
+1 −1
Original line number Diff line number Diff line
@@ -648,7 +648,7 @@ int ha_rollback_trans(THD *thd, THD_TRANS *trans)
    }
#endif
#ifdef HAVE_INNOBASE_DB
    if (trans->innobase_tid)
    if (thd->transaction.all.innodb_active_trans)
    {
      if ((error=innobase_rollback(thd, trans->innobase_tid)))
      {