Commit 5d6aab80 authored by Sergei Golubchik's avatar Sergei Golubchik

cleanup: minor issues in MyISAM

parent 961fc6a6
...@@ -16,14 +16,6 @@ ...@@ -16,14 +16,6 @@
/* Definitions needed for myisamchk/mariachk.c */ /* Definitions needed for myisamchk/mariachk.c */
/*
Entries marked as "QQ to be removed" are NOT used to
pass check/repair options to xxx_check.c. They are used
internally by xxxchk.c or/and ha_xxxx.cc and should NOT
be stored together with other flags. They should be removed
from the following list to make addition of new flags possible.
*/
#ifndef _myisamchk_h #ifndef _myisamchk_h
#define _myisamchk_h #define _myisamchk_h
......
...@@ -3269,11 +3269,8 @@ static int sort_get_next_record(MI_SORT_PARAM *sort_param) ...@@ -3269,11 +3269,8 @@ static int sort_get_next_record(MI_SORT_PARAM *sort_param)
if (*sort_param->record) if (*sort_param->record)
{ {
if (sort_param->calc_checksum) if (sort_param->calc_checksum)
param->glob_crc+= (info->checksum= info->checksum= (*info->s->calc_check_checksum)(info, sort_param->record);
(*info->s->calc_check_checksum)(info, goto finish;
sort_param->
record));
DBUG_RETURN(0);
} }
if (!sort_param->fix_datafile && sort_param->master) if (!sort_param->fix_datafile && sort_param->master)
{ {
...@@ -3568,9 +3565,7 @@ static int sort_get_next_record(MI_SORT_PARAM *sort_param) ...@@ -3568,9 +3565,7 @@ static int sort_get_next_record(MI_SORT_PARAM *sort_param)
goto try_next; goto try_next;
} }
} }
if (sort_param->calc_checksum) goto finish;
param->glob_crc+= info->checksum;
DBUG_RETURN(0);
} }
if (!searching) if (!searching)
mi_check_print_info(param,"Key %d - Found wrong stored record at %s", mi_check_print_info(param,"Key %d - Found wrong stored record at %s",
...@@ -3639,11 +3634,8 @@ static int sort_get_next_record(MI_SORT_PARAM *sort_param) ...@@ -3639,11 +3634,8 @@ static int sort_get_next_record(MI_SORT_PARAM *sort_param)
block_info.rec_len); block_info.rec_len);
info->packed_length=block_info.rec_len; info->packed_length=block_info.rec_len;
if (sort_param->calc_checksum) if (sort_param->calc_checksum)
param->glob_crc+= (info->checksum= info->checksum= (*info->s->calc_check_checksum)(info, sort_param->record);
(*info->s->calc_check_checksum)(info, goto finish;
sort_param->
record));
DBUG_RETURN(0);
} }
default: default:
DBUG_ASSERT(0); /* Impossible */ DBUG_ASSERT(0); /* Impossible */
...@@ -3651,6 +3643,10 @@ static int sort_get_next_record(MI_SORT_PARAM *sort_param) ...@@ -3651,6 +3643,10 @@ static int sort_get_next_record(MI_SORT_PARAM *sort_param)
} }
DBUG_ASSERT(0); /* Impossible */ DBUG_ASSERT(0); /* Impossible */
DBUG_RETURN(1); /* Impossible */ DBUG_RETURN(1); /* Impossible */
finish:
if (sort_param->calc_checksum)
param->glob_crc+= info->checksum;
DBUG_RETURN(0);
} }
......
...@@ -326,7 +326,7 @@ static int d_search(register MI_INFO *info, register MI_KEYDEF *keyinfo, ...@@ -326,7 +326,7 @@ static int d_search(register MI_INFO *info, register MI_KEYDEF *keyinfo,
{ {
DBUG_PRINT("error",("Didn't find key")); DBUG_PRINT("error",("Didn't find key"));
mi_print_error(info->s, HA_ERR_CRASHED); mi_print_error(info->s, HA_ERR_CRASHED);
my_errno=HA_ERR_CRASHED; /* This should newer happend */ my_errno=HA_ERR_CRASHED; /* This should never happend */
goto err; goto err;
} }
save_flag=0; save_flag=0;
......
...@@ -334,15 +334,15 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags) ...@@ -334,15 +334,15 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags)
uint32 ftkey_nr= 1; uint32 ftkey_nr= 1;
for (i=0 ; i < keys ; i++) for (i=0 ; i < keys ; i++)
{ {
share->keyinfo[i].share= share; MI_KEYDEF *keyinfo= share->keyinfo + i;
disk_pos=mi_keydef_read(disk_pos, &share->keyinfo[i]); keyinfo->share= share;
disk_pos_assert(disk_pos + share->keyinfo[i].keysegs * HA_KEYSEG_SIZE, disk_pos=mi_keydef_read(disk_pos, keyinfo);
end_pos); disk_pos_assert(disk_pos + keyinfo->keysegs * HA_KEYSEG_SIZE, end_pos);
if (share->keyinfo[i].key_alg == HA_KEY_ALG_RTREE) if (keyinfo->key_alg == HA_KEY_ALG_RTREE)
have_rtree=1; have_rtree=1;
set_if_smaller(share->blocksize,share->keyinfo[i].block_length); set_if_smaller(share->blocksize, keyinfo->block_length);
share->keyinfo[i].seg=pos; keyinfo->seg= pos;
for (j=0 ; j < share->keyinfo[i].keysegs; j++,pos++) for (j=0 ; j < keyinfo->keysegs; j++,pos++)
{ {
disk_pos=mi_keyseg_read(disk_pos, pos); disk_pos=mi_keyseg_read(disk_pos, pos);
if (pos->flag & HA_BLOB_PART && if (pos->flag & HA_BLOB_PART &&
...@@ -366,36 +366,36 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags) ...@@ -366,36 +366,36 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags)
} }
else if (pos->type == HA_KEYTYPE_BINARY) else if (pos->type == HA_KEYTYPE_BINARY)
pos->charset= &my_charset_bin; pos->charset= &my_charset_bin;
if (!(share->keyinfo[i].flag & HA_SPATIAL) && if (!(keyinfo->flag & HA_SPATIAL) &&
pos->start > share->base.reclength) pos->start > share->base.reclength)
{ {
my_errno= HA_ERR_CRASHED; my_errno= HA_ERR_CRASHED;
goto err; goto err;
} }
} }
if (share->keyinfo[i].flag & HA_SPATIAL) if (keyinfo->flag & HA_SPATIAL)
{ {
#ifdef HAVE_SPATIAL #ifdef HAVE_SPATIAL
uint sp_segs=SPDIMS*2; uint sp_segs= SPDIMS*2;
share->keyinfo[i].seg= pos - sp_segs; keyinfo->seg= pos - sp_segs;
DBUG_ASSERT(share->keyinfo[i].keysegs == sp_segs + 1); DBUG_ASSERT(keyinfo->keysegs == sp_segs + 1);
share->keyinfo[i].keysegs= sp_segs; keyinfo->keysegs= sp_segs;
#else #else
my_errno=HA_ERR_UNSUPPORTED; my_errno=HA_ERR_UNSUPPORTED;
goto err; goto err;
#endif #endif
} }
else if (share->keyinfo[i].flag & HA_FULLTEXT) else if (keyinfo->flag & HA_FULLTEXT)
{ {
if (!fulltext_keys) if (!fulltext_keys)
{ /* 4.0 compatibility code, to be removed in 5.0 */ { /* 4.0 compatibility code, to be removed in 5.0 */
share->keyinfo[i].seg=pos-FT_SEGS; keyinfo->seg= pos - FT_SEGS;
share->keyinfo[i].keysegs-=FT_SEGS; keyinfo->keysegs-= FT_SEGS;
} }
else else
{ {
uint k; uint k;
share->keyinfo[i].seg=pos; keyinfo->seg= pos;
for (k=0; k < FT_SEGS; k++) for (k=0; k < FT_SEGS; k++)
{ {
*pos= ft_keysegs[k]; *pos= ft_keysegs[k];
...@@ -410,7 +410,7 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags) ...@@ -410,7 +410,7 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags)
} }
if (!share->ft2_keyinfo.seg) if (!share->ft2_keyinfo.seg)
{ {
memcpy(& share->ft2_keyinfo, & share->keyinfo[i], sizeof(MI_KEYDEF)); memcpy(& share->ft2_keyinfo, keyinfo, sizeof(MI_KEYDEF));
share->ft2_keyinfo.keysegs=1; share->ft2_keyinfo.keysegs=1;
share->ft2_keyinfo.flag=0; share->ft2_keyinfo.flag=0;
share->ft2_keyinfo.keylength= share->ft2_keyinfo.keylength=
...@@ -420,10 +420,10 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags) ...@@ -420,10 +420,10 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags)
share->ft2_keyinfo.end=pos; share->ft2_keyinfo.end=pos;
setup_key_functions(& share->ft2_keyinfo); setup_key_functions(& share->ft2_keyinfo);
} }
share->keyinfo[i].ftkey_nr= ftkey_nr++; keyinfo->ftkey_nr= ftkey_nr++;
} }
setup_key_functions(share->keyinfo+i); setup_key_functions(keyinfo);
share->keyinfo[i].end=pos; keyinfo->end= pos;
pos->type=HA_KEYTYPE_END; /* End */ pos->type=HA_KEYTYPE_END; /* End */
pos->length=share->base.rec_reflength; pos->length=share->base.rec_reflength;
pos->null_bit=0; pos->null_bit=0;
...@@ -747,7 +747,7 @@ uchar *mi_alloc_rec_buff(MI_INFO *info, ulong length, uchar **buf) ...@@ -747,7 +747,7 @@ uchar *mi_alloc_rec_buff(MI_INFO *info, ulong length, uchar **buf)
newptr-= MI_REC_BUFF_OFFSET; newptr-= MI_REC_BUFF_OFFSET;
if (!(newptr=(uchar*) my_realloc((uchar*)newptr, length+extra+8, if (!(newptr=(uchar*) my_realloc((uchar*)newptr, length+extra+8,
MYF(MY_ALLOW_ZERO_PTR)))) MYF(MY_ALLOW_ZERO_PTR))))
return newptr; return NULL;
*((uint32 *) newptr)= (uint32) length; *((uint32 *) newptr)= (uint32) length;
*buf= newptr+(extra ? MI_REC_BUFF_OFFSET : 0); *buf= newptr+(extra ? MI_REC_BUFF_OFFSET : 0);
} }
...@@ -1390,4 +1390,3 @@ int mi_indexes_are_disabled(MI_INFO *info) ...@@ -1390,4 +1390,3 @@ int mi_indexes_are_disabled(MI_INFO *info)
*/ */
return 2; return 2;
} }
...@@ -819,20 +819,22 @@ static int myisamchk(HA_CHECK *param, char * filename) ...@@ -819,20 +819,22 @@ static int myisamchk(HA_CHECK *param, char * filename)
char llbuff[22],llbuff2[22]; char llbuff[22],llbuff2[22];
my_bool state_updated=0; my_bool state_updated=0;
MYISAM_SHARE *share; MYISAM_SHARE *share;
int open_mode;
uint open_flags= HA_OPEN_FOR_REPAIR;
DBUG_ENTER("myisamchk"); DBUG_ENTER("myisamchk");
param->out_flag=error=param->warning_printed=param->error_printed= param->out_flag=error=param->warning_printed=param->error_printed=
recreate=0; recreate=0;
datafile=0; datafile=0;
param->isam_file_name=filename; /* For error messages */ param->isam_file_name=filename; /* For error messages */
if (!(info=mi_open(filename, open_mode= param->testflag & (T_DESCRIPT | T_READONLY) ? O_RDONLY : O_RDWR;
(param->testflag & (T_DESCRIPT | T_READONLY)) ? if (param->testflag & T_WAIT_FOREVER)
O_RDONLY : O_RDWR, open_flags|= HA_OPEN_WAIT_IF_LOCKED;
HA_OPEN_FOR_REPAIR | else if (param->testflag & T_DESCRIPT)
((param->testflag & T_WAIT_FOREVER) ? open_flags|= HA_OPEN_IGNORE_IF_LOCKED;
HA_OPEN_WAIT_IF_LOCKED : else
(param->testflag & T_DESCRIPT) ? open_flags|= HA_OPEN_ABORT_IF_LOCKED;
HA_OPEN_IGNORE_IF_LOCKED : HA_OPEN_ABORT_IF_LOCKED)))) if (!(info=mi_open(filename, open_mode, open_flags)))
{ {
/* Avoid twice printing of isam file name */ /* Avoid twice printing of isam file name */
param->error_printed=1; param->error_printed=1;
......
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