diff options
author | unknown <serg@serg.mylan> | 2005-04-11 20:04:50 +0200 |
---|---|---|
committer | unknown <serg@serg.mylan> | 2005-04-11 20:04:50 +0200 |
commit | 65255d3540bced78c11c5537d5ce10935a384774 (patch) | |
tree | 8113a5d6cc81ce585e0a1c3c5838c7d39445445f /myisam | |
parent | 93b4fbea9247aad1ad469a252ef1b67fc8e87bdf (diff) | |
download | mariadb-git-65255d3540bced78c11c5537d5ce10935a384774.tar.gz |
don't check record's checksum in REPAIR
myisam/mi_dynrec.c:
new parameter for _mi_rec_check().
myisam/myisamdef.h:
new parameter for _mi_rec_check().
Diffstat (limited to 'myisam')
-rw-r--r-- | myisam/mi_check.c | 7 | ||||
-rw-r--r-- | myisam/mi_dynrec.c | 11 | ||||
-rw-r--r-- | myisam/myisamdef.h | 2 |
3 files changed, 10 insertions, 10 deletions
diff --git a/myisam/mi_check.c b/myisam/mi_check.c index 0123278a23f..f710d3a8454 100644 --- a/myisam/mi_check.c +++ b/myisam/mi_check.c @@ -971,7 +971,8 @@ int chk_data_link(MI_CHECK *param, MI_INFO *info,int extend) info->checksum=mi_checksum(info,record); if (param->testflag & (T_EXTEND | T_MEDIUM | T_VERBOSE)) { - if (_mi_rec_check(info,record, info->rec_buff,block_info.rec_len)) + if (_mi_rec_check(info,record, info->rec_buff,block_info.rec_len, + test(info->s->calc_checksum))) { mi_check_print_error(param,"Found wrong packed record at %s", llstr(start_recpos,llbuff)); @@ -3024,7 +3025,9 @@ static int sort_get_next_record(MI_SORT_PARAM *sort_param) if ((param->testflag & (T_EXTEND | T_REP)) || searching) { if (_mi_rec_check(info, sort_param->record, sort_param->rec_buff, - sort_param->find_length)) + sort_param->find_length, + (param->testflag & T_QUICK) && + test(info->s->calc_checksum))) { mi_check_print_info(param,"Found wrong packed record at %s", llstr(sort_param->start_recpos,llbuff)); diff --git a/myisam/mi_dynrec.c b/myisam/mi_dynrec.c index 0b8d3c97872..43783ca2d36 100644 --- a/myisam/mi_dynrec.c +++ b/myisam/mi_dynrec.c @@ -806,7 +806,7 @@ uint _mi_rec_pack(MI_INFO *info, register byte *to, register const byte *from) */ my_bool _mi_rec_check(MI_INFO *info,const char *record, byte *rec_buff, - ulong packed_length) + ulong packed_length, my_bool with_checksum) { uint length,new_length,flag,bit,i; char *pos,*end,*packpos,*to; @@ -901,13 +901,10 @@ my_bool _mi_rec_check(MI_INFO *info,const char *record, byte *rec_buff, if (packed_length != (uint) (to - rec_buff) + test(info->s->calc_checksum) || (bit != 1 && (flag & ~(bit - 1)))) goto err; - if (info->s->calc_checksum) + if (with_checksum && ((uchar) info->checksum != (uchar) *to)) { - if ((uchar) info->checksum != (uchar) *to) - { - DBUG_PRINT("error",("wrong checksum for row")); - goto err; - } + DBUG_PRINT("error",("wrong checksum for row")); + goto err; } DBUG_RETURN(0); diff --git a/myisam/myisamdef.h b/myisam/myisamdef.h index 916932c9eb3..a41bcf5449b 100644 --- a/myisam/myisamdef.h +++ b/myisam/myisamdef.h @@ -582,7 +582,7 @@ extern byte *mi_alloc_rec_buff(MI_INFO *,ulong, byte**); extern ulong _mi_rec_unpack(MI_INFO *info,byte *to,byte *from, ulong reclength); extern my_bool _mi_rec_check(MI_INFO *info,const char *record, byte *packpos, - ulong reclength); + ulong packed_length, my_bool with_checkum); extern int _mi_write_part_record(MI_INFO *info,my_off_t filepos,ulong length, my_off_t next_filepos,byte **record, ulong *reclength,int *flag); |