summaryrefslogtreecommitdiff
path: root/myisam/mi_check.c
diff options
context:
space:
mode:
Diffstat (limited to 'myisam/mi_check.c')
-rw-r--r--myisam/mi_check.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/myisam/mi_check.c b/myisam/mi_check.c
index 448e847f6e1..fd4c897983f 100644
--- a/myisam/mi_check.c
+++ b/myisam/mi_check.c
@@ -1143,6 +1143,9 @@ int mi_repair(MI_CHECK *param, register MI_INFO *info,
}
param->testflag|=T_REP; /* for easy checking */
+ if (info->s->options & (HA_OPTION_CHECKSUM | HA_OPTION_COMPRESS_RECORD))
+ param->testflag|=T_CALC_CHECKSUM;
+
if (!param->using_global_keycache)
VOID(init_key_cache(dflt_key_cache, param->key_cache_block_size,
param->use_buffers, 0, 0));
@@ -1356,6 +1359,7 @@ err:
VOID(my_close(new_file,MYF(0)));
VOID(my_raid_delete(param->temp_filename,info->s->base.raid_chunks,
MYF(MY_WME)));
+ info->rec_cache.file=-1; /* don't flush data to new_file, it's closed */
}
mi_mark_crashed_on_repair(info);
}
@@ -1812,6 +1816,9 @@ int mi_repair_by_sort(MI_CHECK *param, register MI_INFO *info,
}
param->testflag|=T_REP; /* for easy checking */
+ if (info->s->options & (HA_OPTION_CHECKSUM | HA_OPTION_COMPRESS_RECORD))
+ param->testflag|=T_CALC_CHECKSUM;
+
bzero((char*)&sort_info,sizeof(sort_info));
bzero((char *)&sort_param, sizeof(sort_param));
if (!(sort_info.key_block=
@@ -2183,6 +2190,9 @@ int mi_repair_parallel(MI_CHECK *param, register MI_INFO *info,
}
param->testflag|=T_REP; /* for easy checking */
+ if (info->s->options & (HA_OPTION_CHECKSUM | HA_OPTION_COMPRESS_RECORD))
+ param->testflag|=T_CALC_CHECKSUM;
+
bzero((char*)&sort_info,sizeof(sort_info));
if (!(sort_info.key_block=
alloc_key_blocks(param,
@@ -2848,8 +2858,8 @@ static int sort_get_next_record(MI_SORT_PARAM *sort_param)
if (!(to=mi_alloc_rec_buff(info,block_info.rec_len,
&(sort_param->rec_buff))))
{
- mi_check_print_error(param,"Not enough memory for blob at %s",
- llstr(sort_param->start_recpos,llbuff));
+ mi_check_print_error(param,"Not enough memory for blob at %s (need %lu)",
+ llstr(sort_param->start_recpos,llbuff), block_info.rec_len);
DBUG_RETURN(1);
}
}