1
0
mirror of https://github.com/MariaDB/server.git synced 2025-06-17 22:23:05 +03:00

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.
This commit is contained in:
unknown
2006-10-11 12:44:03 +04:00
parent 7c8931d836
commit ca126a2bbd
3 changed files with 29 additions and 1 deletions

View File

@ -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

View File

@ -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

View File

@ -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)))
{ {