From: Date: October 2 2008 1:53pm Subject: Re: bzr commit into mysql-6.0-falcon-team branch (svoj:2842) Bug#12713, Bug#34892 List-Archive: http://lists.mysql.com/commits/55066 Message-Id: <878wt71acu.fsf@koti.dsl.inet.fi> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sergey, hello. I find this patch as good, even better than good because it leaves less tempation for refactring when unlock_tables and rollback are places at one spot. Could you please verfify how the dup-key failing create-select for innodb table is processed. On my system there was a problem, which I mentioned to you, that the new table's innodb internal object was not really released: InnoDB: Warning: MySQL is trying to drop table `test`.`tu` InnoDB: though there are still open handles to it. InnoDB: Adding the table to the background drop queue. Does it happen on your system with and without your patch? Thanks! Andrei > #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); > > > > -- > MySQL Code Commits Mailing List > For list archives: http://lists.mysql.com/commits > To unsubscribe: http://lists.mysql.com/commits?unsub=aelkin@stripped