Skip to content

Commit 0e20137

Browse files
committed
[Code cleanup] Refactor duplicate code within myisam and maria sort.cc
1 parent 20c4dfd commit 0e20137

File tree

2 files changed

+53
-73
lines changed

2 files changed

+53
-73
lines changed

storage/maria/ma_sort.c

Lines changed: 26 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,27 @@ static int write_merge_key_varlen(MARIA_SORT_PARAM *info,
8989
static inline int
9090
my_var_write(MARIA_SORT_PARAM *info, IO_CACHE *to_file, uchar *bufs);
9191

92+
/*
93+
Sets the appropriate read and write methods for the MARIA_SORT_PARAM
94+
based on the variable length key flag.
95+
*/
96+
static void set_sort_param_read_write(MARIA_SORT_PARAM *sort_param)
97+
{
98+
if (sort_param->keyinfo->flag & HA_VAR_LENGTH_KEY)
99+
{
100+
sort_param->write_keys= write_keys_varlen;
101+
sort_param->read_to_buffer= read_to_buffer_varlen;
102+
sort_param->write_key= write_merge_key_varlen;
103+
}
104+
else
105+
{
106+
sort_param->write_keys= write_keys;
107+
sort_param->read_to_buffer= read_to_buffer;
108+
sort_param->write_key= write_merge_key;
109+
}
110+
}
111+
112+
92113
/*
93114
Creates a index of sorted keys
94115
@@ -118,18 +139,7 @@ int _ma_create_index_by_sort(MARIA_SORT_PARAM *info, my_bool no_messages,
118139
(ulong) sortbuff_size, info->key_length,
119140
(ulong) info->sort_info->max_records));
120141

121-
if (info->keyinfo->flag & HA_VAR_LENGTH_KEY)
122-
{
123-
info->write_keys= write_keys_varlen;
124-
info->read_to_buffer= read_to_buffer_varlen;
125-
info->write_key=write_merge_key_varlen;
126-
}
127-
else
128-
{
129-
info->write_keys= write_keys;
130-
info->read_to_buffer=read_to_buffer;
131-
info->write_key=write_merge_key;
132-
}
142+
set_sort_param_read_write(info);
133143

134144
my_b_clear(&tempfile);
135145
my_b_clear(&tempfile_for_exceptions);
@@ -378,18 +388,7 @@ pthread_handler_t _ma_thr_find_all_keys(void *arg)
378388
if (sort_param->sort_info->got_error)
379389
goto err;
380390

381-
if (sort_param->keyinfo->flag & HA_VAR_LENGTH_KEY)
382-
{
383-
sort_param->write_keys= write_keys_varlen;
384-
sort_param->read_to_buffer= read_to_buffer_varlen;
385-
sort_param->write_key= write_merge_key_varlen;
386-
}
387-
else
388-
{
389-
sort_param->write_keys= write_keys;
390-
sort_param->read_to_buffer= read_to_buffer;
391-
sort_param->write_key= write_merge_key;
392-
}
391+
set_sort_param_read_write(sort_param);
393392

394393
my_b_clear(&sort_param->tempfile);
395394
my_b_clear(&sort_param->tempfile_for_exceptions);
@@ -614,18 +613,9 @@ int _ma_thr_write_keys(MARIA_SORT_PARAM *sort_param)
614613
{
615614
if (got_error)
616615
continue;
617-
if (sinfo->keyinfo->flag & HA_VAR_LENGTH_KEY)
618-
{
619-
sinfo->write_keys=write_keys_varlen;
620-
sinfo->read_to_buffer=read_to_buffer_varlen;
621-
sinfo->write_key=write_merge_key_varlen;
622-
}
623-
else
624-
{
625-
sinfo->write_keys=write_keys;
626-
sinfo->read_to_buffer=read_to_buffer;
627-
sinfo->write_key=write_merge_key;
628-
}
616+
617+
set_sort_param_read_write(sinfo);
618+
629619
if (sinfo->buffpek.elements)
630620
{
631621
uint maxbuffer=sinfo->buffpek.elements-1;

storage/myisam/sort.c

Lines changed: 27 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,28 @@ static int write_merge_key_varlen(MI_SORT_PARAM *info,
8686
static inline int
8787
my_var_write(MI_SORT_PARAM *info, IO_CACHE *to_file, uchar *bufs);
8888

89+
90+
/*
91+
Sets the appropriate read and write methods for the MI_SORT_PARAM
92+
based on the variable length key flag.
93+
*/
94+
static void set_sort_param_read_write(MI_SORT_PARAM *sort_param)
95+
{
96+
if (sort_param->keyinfo->flag & HA_VAR_LENGTH_KEY)
97+
{
98+
sort_param->write_keys= write_keys_varlen;
99+
sort_param->read_to_buffer= read_to_buffer_varlen;
100+
sort_param->write_key= write_merge_key_varlen;
101+
}
102+
else
103+
{
104+
sort_param->write_keys= write_keys;
105+
sort_param->read_to_buffer= read_to_buffer;
106+
sort_param->write_key= write_merge_key;
107+
}
108+
}
109+
110+
89111
/*
90112
Creates a index of sorted keys
91113
@@ -113,18 +135,7 @@ int _create_index_by_sort(MI_SORT_PARAM *info,my_bool no_messages,
113135
DBUG_ENTER("_create_index_by_sort");
114136
DBUG_PRINT("enter",("sort_length: %u", info->key_length));
115137

116-
if (info->keyinfo->flag & HA_VAR_LENGTH_KEY)
117-
{
118-
info->write_keys=write_keys_varlen;
119-
info->read_to_buffer=read_to_buffer_varlen;
120-
info->write_key= write_merge_key_varlen;
121-
}
122-
else
123-
{
124-
info->write_keys=write_keys;
125-
info->read_to_buffer=read_to_buffer;
126-
info->write_key=write_merge_key;
127-
}
138+
set_sort_param_read_write(info);
128139

129140
my_b_clear(&tempfile);
130141
my_b_clear(&tempfile_for_exceptions);
@@ -333,7 +344,6 @@ static ha_rows find_all_keys(MI_SORT_PARAM *info, ha_rows keys,
333344
DBUG_RETURN((*maxbuffer)*(keys-1)+idx);
334345
} /* find_all_keys */
335346

336-
337347
/* Search after all keys and place them in a temp. file */
338348

339349
pthread_handler_t thr_find_all_keys(void *arg)
@@ -357,18 +367,7 @@ pthread_handler_t thr_find_all_keys(void *arg)
357367
if (sort_param->sort_info->got_error)
358368
goto err;
359369

360-
if (sort_param->keyinfo->flag & HA_VAR_LENGTH_KEY)
361-
{
362-
sort_param->write_keys= write_keys_varlen;
363-
sort_param->read_to_buffer= read_to_buffer_varlen;
364-
sort_param->write_key= write_merge_key_varlen;
365-
}
366-
else
367-
{
368-
sort_param->write_keys= write_keys;
369-
sort_param->read_to_buffer= read_to_buffer;
370-
sort_param->write_key= write_merge_key;
371-
}
370+
set_sort_param_read_write(sort_param);
372371

373372
my_b_clear(&sort_param->tempfile);
374373
my_b_clear(&sort_param->tempfile_for_exceptions);
@@ -593,18 +592,9 @@ int thr_write_keys(MI_SORT_PARAM *sort_param)
593592
{
594593
if (got_error)
595594
continue;
596-
if (sinfo->keyinfo->flag & HA_VAR_LENGTH_KEY)
597-
{
598-
sinfo->write_keys=write_keys_varlen;
599-
sinfo->read_to_buffer=read_to_buffer_varlen;
600-
sinfo->write_key=write_merge_key_varlen;
601-
}
602-
else
603-
{
604-
sinfo->write_keys=write_keys;
605-
sinfo->read_to_buffer=read_to_buffer;
606-
sinfo->write_key=write_merge_key;
607-
}
595+
596+
set_sort_param_read_write(sinfo);
597+
608598
if (sinfo->buffpek.elements)
609599
{
610600
uint maxbuffer=sinfo->buffpek.elements-1;

0 commit comments

Comments
 (0)