From: Sergey Vojtovich Date: October 9 2009 4:21pm Subject: bzr commit into mysql-5.1-bugteam branch (svoj:3158) List-Archive: http://lists.mysql.com/commits/86431 Message-Id: <0KR900BHK9FAJW80@fe-emea-09.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Boundary_(ID_bQNGhX+z5TfuS9hdNftRNA)" --Boundary_(ID_bQNGhX+z5TfuS9hdNftRNA) MIME-version: 1.0 Content-type: text/plain; CHARSET=US-ASCII Content-transfer-encoding: 7BIT Content-disposition: inline #At file:///home/svoj/devel/bzr-mysql/mysql-5.1-bugteam-push/ based on revid:martin.hansson@stripped 3158 Sergey Vojtovich 2009-10-09 [merge] Merge fix for BUG47073. modified: mysql-test/r/myisam.result mysql-test/t/myisam.test storage/myisam/ha_myisam.cc storage/myisam/mi_check.c storage/myisam/sort.c === modified file 'mysql-test/r/myisam.result' --- a/mysql-test/r/myisam.result 2009-09-21 09:58:15 +0000 +++ b/mysql-test/r/myisam.result 2009-10-09 16:16:29 +0000 @@ -2271,4 +2271,32 @@ checksum table t3; Table Checksum test.t3 326284887 drop table t1,t2,t3; +CREATE TABLE t1(a INT, b CHAR(10), KEY(a), KEY(b)); +INSERT INTO t1 VALUES(1,'0'),(2,'0'),(3,'0'),(4,'0'),(5,'0'), +(6,'0'),(7,'0'); +INSERT INTO t1 SELECT a+10,b FROM t1; +INSERT INTO t1 SELECT a+20,b FROM t1; +INSERT INTO t1 SELECT a+40,b FROM t1; +INSERT INTO t1 SELECT a+80,b FROM t1; +INSERT INTO t1 SELECT a+160,b FROM t1; +INSERT INTO t1 SELECT a+320,b FROM t1; +INSERT INTO t1 SELECT a+640,b FROM t1; +INSERT INTO t1 SELECT a+1280,b FROM t1; +INSERT INTO t1 SELECT a+2560,b FROM t1; +INSERT INTO t1 SELECT a+5120,b FROM t1; +SET myisam_sort_buffer_size=4; +REPAIR TABLE t1; +Table Op Msg_type Msg_text +test.t1 repair error myisam_sort_buffer_size is too small +test.t1 repair warning Number of rows changed from 0 to 7168 +test.t1 repair status OK +SET myisam_repair_threads=2; +REPAIR TABLE t1; +Table Op Msg_type Msg_text +test.t1 repair error myisam_sort_buffer_size is too small +test.t1 repair warning Number of rows changed from # to 7168 +test.t1 repair status OK +SET myisam_repair_threads=@@global.myisam_repair_threads; +SET myisam_sort_buffer_size=@@global.myisam_sort_buffer_size; +DROP TABLE t1; End of 5.1 tests === modified file 'mysql-test/t/myisam.test' --- a/mysql-test/t/myisam.test 2009-09-21 09:58:15 +0000 +++ b/mysql-test/t/myisam.test 2009-10-09 16:16:29 +0000 @@ -1518,5 +1518,33 @@ CREATE TABLE t3 select * from t1; checksum table t3; drop table t1,t2,t3; + +# +# BUG#47073 - valgrind errs, corruption,failed repair of partition, +# low myisam_sort_buffer_size +# +CREATE TABLE t1(a INT, b CHAR(10), KEY(a), KEY(b)); +INSERT INTO t1 VALUES(1,'0'),(2,'0'),(3,'0'),(4,'0'),(5,'0'), + (6,'0'),(7,'0'); +INSERT INTO t1 SELECT a+10,b FROM t1; +INSERT INTO t1 SELECT a+20,b FROM t1; +INSERT INTO t1 SELECT a+40,b FROM t1; +INSERT INTO t1 SELECT a+80,b FROM t1; +INSERT INTO t1 SELECT a+160,b FROM t1; +INSERT INTO t1 SELECT a+320,b FROM t1; +INSERT INTO t1 SELECT a+640,b FROM t1; +INSERT INTO t1 SELECT a+1280,b FROM t1; +INSERT INTO t1 SELECT a+2560,b FROM t1; +INSERT INTO t1 SELECT a+5120,b FROM t1; +SET myisam_sort_buffer_size=4; +REPAIR TABLE t1; +SET myisam_repair_threads=2; +# May report different values depending on threads activity. +--replace_regex /changed from [0-9]+/changed from #/ +REPAIR TABLE t1; +SET myisam_repair_threads=@@global.myisam_repair_threads; +SET myisam_sort_buffer_size=@@global.myisam_sort_buffer_size; +DROP TABLE t1; + --echo End of 5.1 tests === modified file 'storage/myisam/ha_myisam.cc' --- a/storage/myisam/ha_myisam.cc 2009-09-09 15:13:13 +0000 +++ b/storage/myisam/ha_myisam.cc 2009-10-09 16:16:29 +0000 @@ -1087,22 +1087,6 @@ int ha_myisam::repair(THD *thd, MI_CHECK ha_rows rows= file->state->records; DBUG_ENTER("ha_myisam::repair"); - /* - Normally this method is entered with a properly opened table. If the - repair fails, it can be repeated with more elaborate options. Under - special circumstances it can happen that a repair fails so that it - closed the data file and cannot re-open it. In this case file->dfile - is set to -1. We must not try another repair without an open data - file. (Bug #25289) - */ - if (file->dfile == -1) - { - sql_print_information("Retrying repair of: '%s' failed. " - "Please try REPAIR EXTENDED or myisamchk", - table->s->path.str); - DBUG_RETURN(HA_ADMIN_FAILED); - } - param.db_name= table->s->db.str; param.table_name= table->alias; param.tmpfile_createflag = O_RDWR | O_TRUNC; === modified file 'storage/myisam/mi_check.c' --- a/storage/myisam/mi_check.c 2009-09-28 13:55:01 +0000 +++ b/storage/myisam/mi_check.c 2009-10-09 16:16:29 +0000 @@ -2561,8 +2561,9 @@ err: VOID(my_close(new_file,MYF(0))); VOID(my_raid_delete(param->temp_filename,share->base.raid_chunks, MYF(MY_WME))); - if (info->dfile == new_file) - info->dfile= -1; + if (info->dfile == new_file) /* Retry with key cache */ + if (unlikely(mi_open_datafile(info, share, name, -1))) + param->retry_repair= 0; /* Safety */ } mi_mark_crashed_on_repair(info); } @@ -3095,8 +3096,9 @@ err: VOID(my_close(new_file,MYF(0))); VOID(my_raid_delete(param->temp_filename,share->base.raid_chunks, MYF(MY_WME))); - if (info->dfile == new_file) - info->dfile= -1; + if (info->dfile == new_file) /* Retry with key cache */ + if (unlikely(mi_open_datafile(info, share, name, -1))) + param->retry_repair= 0; /* Safety */ } mi_mark_crashed_on_repair(info); } === modified file 'storage/myisam/sort.c' --- a/storage/myisam/sort.c 2009-08-28 16:21:54 +0000 +++ b/storage/myisam/sort.c 2009-10-09 16:16:29 +0000 @@ -788,7 +788,11 @@ static int NEAR_F merge_many_buff(MI_SOR cleanup: close_cached_file(to_file); /* This holds old result */ if (to_file == t_file) + { *t_file=t_file2; /* Copy result file */ + t_file->current_pos= &t_file->write_pos; + t_file->current_end= &t_file->write_end; + } DBUG_RETURN(*maxbuffer >= MERGEBUFF2); /* Return 1 if interrupted */ } /* merge_many_buff */ --Boundary_(ID_bQNGhX+z5TfuS9hdNftRNA) MIME-version: 1.0 Content-type: text/bzr-bundle; CHARSET=US-ASCII; name="bzr/svoj@stripped" Content-transfer-encoding: 7BIT Content-disposition: inline; filename="bzr/svoj@stripped" # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: svoj@stripped # target_branch: file:///home/svoj/devel/bzr-mysql/mysql-5.1-bugteam-\ # push/ # testament_sha1: 0237aefee877a2368920874e8b695d462a9ea879 # timestamp: 2009-10-09 21:21:34 +0500 # source_branch: file:///home/svoj/devel/bzr-mysql/mysql-5.1-bugteam-\ # bug47073/ # base_revision_id: martin.hansson@stripped\ # eyukfmylcmkiy0qf # # Begin bundle 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 --Boundary_(ID_bQNGhX+z5TfuS9hdNftRNA)--