svnno****@sourc*****
svnno****@sourc*****
2007年 11月 12日 (月) 17:02:06 JST
Revision: 39 http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=tritonn&view=rev&rev=39 Author: mir Date: 2007-11-12 17:02:06 +0900 (Mon, 12 Nov 2007) Log Message: ----------- fixed bug as described: msyqld may get sig11 when disk tmp table is created by SELECT and in high concurrency and heaby load. Modified Paths: -------------- mysql-5.0.45-tritonn-1.0.8/myisam/mi_delete_table.c Modified: mysql-5.0.45-tritonn-1.0.8/myisam/mi_delete_table.c =================================================================== --- mysql-5.0.45-tritonn-1.0.8/myisam/mi_delete_table.c 2007-11-06 02:10:10 UTC (rev 38) +++ mysql-5.0.45-tritonn-1.0.8/myisam/mi_delete_table.c 2007-11-12 08:02:06 UTC (rev 39) @@ -59,7 +59,8 @@ #ifdef ENABLE_SENNA { - int i; + int i,j,keys; + int should_be_deleted[1024]; MI_INFO *mi_info; MI_INFO cp_of_mi_info; @@ -68,18 +69,17 @@ SEN_LOG(sen_log_warning, "mi_delete_table => cannot get MI_INFO"); DBUG_RETURN(my_errno); } - - cp_of_mi_info = *mi_info; + keys = mi_info->s->base.keys; + for (i=0,j=0; i<keys; i++) + { + if (mi_info->s->keyinfo[i].senna) should_be_deleted[j++]=i; + } mi_close(mi_info); - - for (i = 0; i < cp_of_mi_info.s->state.header.keys; i++) + for (i=0; i<j; i++) { - if (cp_of_mi_info.s->keyinfo[i].senna) - { - my_snprintf(from, FN_REFLEN, "%s.%03d", name, i); - SEN_LOG(sen_log_notice, "mi_delete_table => sen_index_remove: path=%s", from); - sen_index_remove(from); - } + my_snprintf(from, FN_REFLEN, "%s.%03d", name, should_be_deleted[i]); + SEN_LOG(sen_log_notice, "mi_delete_table => sen_index_remove: path=%s", from); + sen_index_remove(from); } } #endif /* ENABLE_SENNA */