Commit 31d702dd authored by serg@serg.mysql.com's avatar serg@serg.mysql.com

Merge work:/home/bk/mysql-4.1

into serg.mysql.com:/usr/home/serg/Abk/mysql-4.1
parents 59698e06 6f02ea54
...@@ -2587,6 +2587,9 @@ static int sort_get_next_record(MI_SORT_PARAM *sort_param) ...@@ -2587,6 +2587,9 @@ static int sort_get_next_record(MI_SORT_PARAM *sort_param)
char llbuff[22],llbuff2[22]; char llbuff[22],llbuff2[22];
DBUG_ENTER("sort_get_next_record"); DBUG_ENTER("sort_get_next_record");
if (*killed_ptr(param))
DBUG_RETURN(1);
switch (share->data_file_type) { switch (share->data_file_type) {
case STATIC_RECORD: case STATIC_RECORD:
for (;;) for (;;)
......
...@@ -1636,6 +1636,10 @@ static int sort_record_index(MI_SORT_PARAM *sort_param,MI_INFO *info, ...@@ -1636,6 +1636,10 @@ static int sort_record_index(MI_SORT_PARAM *sort_param,MI_INFO *info,
DBUG_RETURN(1); DBUG_RETURN(1);
} /* sort_record_index */ } /* sort_record_index */
volatile bool *killed_ptr(MI_CHECK *param)
{
return (bool *)(param->thd); /* always NULL */
}
/* print warnings and errors */ /* print warnings and errors */
/* VARARGS */ /* VARARGS */
......
...@@ -648,6 +648,7 @@ void mi_setup_functions(register MYISAM_SHARE *share); ...@@ -648,6 +648,7 @@ void mi_setup_functions(register MYISAM_SHARE *share);
int _mi_init_bulk_insert(MI_INFO *info, ulong cache_size); int _mi_init_bulk_insert(MI_INFO *info, ulong cache_size);
/* Functions needed by mi_check */ /* Functions needed by mi_check */
volatile bool *killed_ptr(MI_CHECK *param);
void mi_check_print_error _VARARGS((MI_CHECK *param, const char *fmt,...)); void mi_check_print_error _VARARGS((MI_CHECK *param, const char *fmt,...));
void mi_check_print_warning _VARARGS((MI_CHECK *param, const char *fmt,...)); void mi_check_print_warning _VARARGS((MI_CHECK *param, const char *fmt,...));
void mi_check_print_info _VARARGS((MI_CHECK *param, const char *fmt,...)); void mi_check_print_info _VARARGS((MI_CHECK *param, const char *fmt,...));
......
...@@ -701,6 +701,7 @@ merge_buffers(MI_SORT_PARAM *info, uint keys, IO_CACHE *from_file, ...@@ -701,6 +701,7 @@ merge_buffers(MI_SORT_PARAM *info, uint keys, IO_CACHE *from_file,
uchar *strpos; uchar *strpos;
BUFFPEK *buffpek,**refpek; BUFFPEK *buffpek,**refpek;
QUEUE queue; QUEUE queue;
volatile bool *killed= killed_ptr(info->sort_info->param);
DBUG_ENTER("merge_buffers"); DBUG_ENTER("merge_buffers");
count=error=0; count=error=0;
...@@ -732,6 +733,10 @@ merge_buffers(MI_SORT_PARAM *info, uint keys, IO_CACHE *from_file, ...@@ -732,6 +733,10 @@ merge_buffers(MI_SORT_PARAM *info, uint keys, IO_CACHE *from_file,
{ {
for (;;) for (;;)
{ {
if (*killed)
{
error=1; goto err;
}
buffpek=(BUFFPEK*) queue_top(&queue); buffpek=(BUFFPEK*) queue_top(&queue);
if (to_file) if (to_file)
{ {
......
...@@ -87,6 +87,11 @@ static void mi_check_print_msg(MI_CHECK *param, const char* msg_type, ...@@ -87,6 +87,11 @@ static void mi_check_print_msg(MI_CHECK *param, const char* msg_type,
extern "C" { extern "C" {
volatile bool *killed_ptr(MI_CHECK *param)
{
return &(((THD *)(param->thd))->killed);
}
void mi_check_print_error(MI_CHECK *param, const char *fmt,...) void mi_check_print_error(MI_CHECK *param, const char *fmt,...)
{ {
param->error_printed|=1; param->error_printed|=1;
...@@ -571,7 +576,7 @@ int ha_myisam::repair(THD *thd, MI_CHECK &param, bool optimize) ...@@ -571,7 +576,7 @@ int ha_myisam::repair(THD *thd, MI_CHECK &param, bool optimize)
} }
if (!optimize || if (!optimize ||
memcmp(file->state, & share->state.state, sizeof(MI_STATUS_INFO)) || //memcmp(file->state, & share->state.state, sizeof(MI_STATUS_INFO)) ||
((file->state->del || share->state.split != file->state->records) && ((file->state->del || share->state.split != file->state->records) &&
(!(param.testflag & T_QUICK) || (!(param.testflag & T_QUICK) ||
!(share->state.changed & STATE_NOT_OPTIMIZED_KEYS)))) !(share->state.changed & STATE_NOT_OPTIMIZED_KEYS))))
...@@ -630,7 +635,7 @@ int ha_myisam::repair(THD *thd, MI_CHECK &param, bool optimize) ...@@ -630,7 +635,7 @@ int ha_myisam::repair(THD *thd, MI_CHECK &param, bool optimize)
STATE_CRASHED_ON_REPAIR); STATE_CRASHED_ON_REPAIR);
file->update|=HA_STATE_CHANGED | HA_STATE_ROW_CHANGED; file->update|=HA_STATE_CHANGED | HA_STATE_ROW_CHANGED;
} }
file->save_state=file->s->state.state; //file->save_state=file->s->state.state;
if (file->s->base.auto_key) if (file->s->base.auto_key)
update_auto_increment_key(&param, file, 1); update_auto_increment_key(&param, file, 1);
if (optimize_done) if (optimize_done)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment