#At file:///home/svoj/devel/bzr-mysql/mysql-6.0-falcon-team-bug34892/
2842 Sergey Vojtovich 2008-10-02
BUG#34892 - Transaction handling in select_create::abort let's Falcon fail
CREATE ... SELECT that fails (e.g. due to duplicate key) with
Falcon storage engine prevents to create or drop a table with
the same name in future.
Added missing trans_rollback_stmt(), which was removed by accident by
patch for BUG#12713.
renamed:
mysql-test/suite/falcon_team/r/falcon_bug_23945.result =>
mysql-test/suite/falcon/r/falcon_bug_23945.result
mysql-test/suite/falcon_team/r/falcon_bug_34892.result =>
mysql-test/suite/falcon/r/falcon_bug_34892.result
mysql-test/suite/falcon_team/t/falcon_bug_23945.test =>
mysql-test/suite/falcon/t/falcon_bug_23945.test
mysql-test/suite/falcon_team/t/falcon_bug_34892.test =>
mysql-test/suite/falcon/t/falcon_bug_34892.test
modified:
mysql-test/suite/falcon_team/t/disabled.def
mysql-test/suite/falcon_team/t/test2bug.def
sql/sql_insert.cc
mysql-test/suite/falcon/r/falcon_bug_23945.result
mysql-test/suite/falcon/t/falcon_bug_23945.test
per-file messages:
mysql-test/suite/falcon/r/falcon_bug_23945.result
Re-enabled a test case.
mysql-test/suite/falcon/r/falcon_bug_34892.result
Re-enabled a test case.
mysql-test/suite/falcon/t/falcon_bug_23945.test
Re-enabled a test case.
mysql-test/suite/falcon/t/falcon_bug_34892.test
Re-enabled a test case.
mysql-test/suite/falcon_team/t/disabled.def
Re-enabled a test case.
mysql-test/suite/falcon_team/t/test2bug.def
Re-enabled a test case.
sql/sql_insert.cc
Added missing trans_rollback_stmt(), which was removed by accident by
patch for BUG#12713.
=== renamed file 'mysql-test/suite/falcon_team/r/falcon_bug_23945.result' =>
'mysql-test/suite/falcon/r/falcon_bug_23945.result'
--- a/mysql-test/suite/falcon_team/r/falcon_bug_23945.result 2008-09-09 08:30:18 +0000
+++ b/mysql-test/suite/falcon/r/falcon_bug_23945.result 2008-10-02 10:37:27 +0000
@@ -15,3 +15,5 @@ SELECT * FROM t1;
ERROR 42S02: Table 'test.t1' doesn't exist
DROP TABLE t1;
ERROR 42S02: Unknown table 't1'
+CREATE TABLE t1(a INT);
+DROP TABLE t1;
=== renamed file 'mysql-test/suite/falcon_team/r/falcon_bug_34892.result' =>
'mysql-test/suite/falcon/r/falcon_bug_34892.result'
=== renamed file 'mysql-test/suite/falcon_team/t/falcon_bug_23945.test' =>
'mysql-test/suite/falcon/t/falcon_bug_23945.test'
--- a/mysql-test/suite/falcon_team/t/falcon_bug_23945.test 2008-09-09 08:30:18 +0000
+++ b/mysql-test/suite/falcon/t/falcon_bug_23945.test 2008-10-02 10:37:27 +0000
@@ -36,6 +36,9 @@ SELECT * FROM t1;
--error ER_BAD_TABLE_ERROR
DROP TABLE t1;
+CREATE TABLE t1(a INT);
+DROP TABLE t1;
+
# ----------------------------------------------------- #
# --- Check --- #
# ----------------------------------------------------- #
=== renamed file 'mysql-test/suite/falcon_team/t/falcon_bug_34892.test' =>
'mysql-test/suite/falcon/t/falcon_bug_34892.test'
=== modified file 'mysql-test/suite/falcon_team/t/disabled.def'
--- a/mysql-test/suite/falcon_team/t/disabled.def 2008-09-10 22:35:51 +0000
+++ b/mysql-test/suite/falcon_team/t/disabled.def 2008-10-02 10:37:27 +0000
@@ -17,4 +17,3 @@
# which should probably be attached to a bug report instead.
# Also please keep the list sorted.
-falcon_bug_23945 : Bug#34892 2008-09-10 hky Test failure brings Falcon's data dictionary
out of sync
=== modified file 'mysql-test/suite/falcon_team/t/test2bug.def'
--- a/mysql-test/suite/falcon_team/t/test2bug.def 2008-09-28 07:16:36 +0000
+++ b/mysql-test/suite/falcon_team/t/test2bug.def 2008-10-02 10:37:27 +0000
@@ -20,5 +20,4 @@
falcon_bug_23945: Bug#34892 - Transaction handling in select_create::abort let's Falcon
fail
falcon_bug_26433: Bug#39314 - falcon_bug_26433 fails with an offset of 1 in row numbers
in expected warnings
falcon_bug_28048: Bug#36700 - Running falcon_bug_28048 shows increasing memory usage and
run time
-falcon_bug_34892: Bug#34892 - Transaction handling in select_create::abort let's Falcon
fail
falcon_deadlock: Bug#34182 - SELECT ... FOR UPDATE does not lock when in subquery
=== modified file 'sql/sql_insert.cc'
--- a/sql/sql_insert.cc 2008-09-16 17:58:49 +0000
+++ b/sql/sql_insert.cc 2008-10-02 10:37:27 +0000
@@ -3788,10 +3788,10 @@ void select_create::abort()
DBUG_ENTER("select_create::abort");
/*
- In select_insert::abort() we roll back the statement, including
- truncating the transaction cache of the binary log. To do this, we
- pretend that the statement is transactional, even though it might
- be the case that it was not.
+ We roll back the statement here, including truncating the
+ transaction cache of the binary log. To do this, we pretend that
+ the statement is transactional, even though it might be the case
+ that it was not.
We roll back the statement prior to deleting the table and prior
to releasing the lock on the table, since there might be potential
@@ -3805,6 +3805,7 @@ void select_create::abort()
tmp_disable_binlog(thd);
select_insert::abort();
thd->transaction.stmt.modified_non_trans_table= FALSE;
+ trans_rollback_stmt(thd);
reenable_binlog(thd);
thd->binlog_flush_pending_rows_event(TRUE);