From: Date: December 29 2008 1:56pm Subject: bzr commit into mysql-6.0-bugteam branch (Sergey.Glukhov:2829) List-Archive: http://lists.mysql.com/commits/62413 Message-Id: <0KCN00M3H2MIV1A0@fe-emea-09.sun.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7BIT #At file:///home/gluh/MySQL/mysql-6.0-bugteam/ based on revid:sergey.glukhov@stripped 2829 Sergey Glukhov 2008-12-29 [merge] 5.1-bugteam->6.0-bugteam merge modified: mysql-test/r/csv.result mysql-test/t/csv.test storage/csv/ha_tina.cc per-file messages: mysql-test/r/csv.result 5.1-bugteam->6.0-bugteam merge mysql-test/t/csv.test 5.1-bugteam->6.0-bugteam merge storage/csv/ha_tina.cc 5.1-bugteam->6.0-bugteam merge === modified file 'mysql-test/r/csv.result' --- a/mysql-test/r/csv.result 2008-12-10 09:05:18 +0000 +++ b/mysql-test/r/csv.result 2008-12-29 12:50:51 +0000 @@ -5394,4 +5394,17 @@ select * from t1; ERROR HY000: File './test/t1.CSV' not found (Errcode: 2) unlock tables; drop table t1; +create table t1(a enum ('a') not null) engine=csv; +insert into t1 values (2); +Warnings: +Warning 1265 Data truncated for column 'a' at row 1 +select * from t1 limit 1; +ERROR HY000: Table 't1' is marked as crashed and should be repaired +repair table t1; +Table Op Msg_type Msg_text +test.t1 repair Warning Data truncated for column 'a' at row 1 +test.t1 repair status OK +select * from t1 limit 1; +a +drop table t1; End of 5.1 tests === modified file 'mysql-test/t/csv.test' --- a/mysql-test/t/csv.test 2008-12-10 09:05:18 +0000 +++ b/mysql-test/t/csv.test 2008-12-29 12:50:51 +0000 @@ -1804,4 +1804,17 @@ unlock tables; drop table t1; --disconnect con1 +# +# Bug#41441 repair csv table crashes debug server +# +# Note: The test should be removed after Bug#33717 is fixed + +create table t1(a enum ('a') not null) engine=csv; +insert into t1 values (2); +--error ER_CRASHED_ON_USAGE +select * from t1 limit 1; +repair table t1; +select * from t1 limit 1; +drop table t1; + --echo End of 5.1 tests === modified file 'storage/csv/ha_tina.cc' --- a/storage/csv/ha_tina.cc 2008-12-10 09:21:13 +0000 +++ b/storage/csv/ha_tina.cc 2008-12-29 12:53:38 +0000 @@ -1449,6 +1449,17 @@ int ha_tina::repair(THD* thd, HA_CHECK_O a file, which descriptor is still open. EACCES will be returned when trying to delete the "to"-file in my_rename(). */ + if (share->tina_write_opened) + { + /* + Data file might be opened twice, on table opening stage and + during write_row execution. We need to close both instances + to satisfy Win. + */ + if (my_close(share->tina_write_filedes, MYF(0))) + DBUG_RETURN(my_errno ? my_errno : -1); + share->tina_write_opened= FALSE; + } if (my_close(data_file,MYF(0)) || my_close(repair_file, MYF(0)) || my_rename(repaired_fname, share->data_file_name, MYF(0))) DBUG_RETURN(-1);