Loading myisam/mi_check.c +5 −2 Original line number Diff line number Diff line Loading @@ -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)); Loading Loading @@ -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)); Loading myisam/mi_dynrec.c +4 −7 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -901,14 +901,11 @@ 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 ((uchar) info->checksum != (uchar) *to) if (with_checksum && ((uchar) info->checksum != (uchar) *to)) { DBUG_PRINT("error",("wrong checksum for row")); goto err; } } DBUG_RETURN(0); err: Loading myisam/myisamdef.h +1 −1 Original line number Diff line number Diff line Loading @@ -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); Loading Loading
myisam/mi_check.c +5 −2 Original line number Diff line number Diff line Loading @@ -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)); Loading Loading @@ -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)); Loading
myisam/mi_dynrec.c +4 −7 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -901,14 +901,11 @@ 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 ((uchar) info->checksum != (uchar) *to) if (with_checksum && ((uchar) info->checksum != (uchar) *to)) { DBUG_PRINT("error",("wrong checksum for row")); goto err; } } DBUG_RETURN(0); err: Loading
myisam/myisamdef.h +1 −1 Original line number Diff line number Diff line Loading @@ -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); Loading