mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge branch '5.5' into 10.0
This commit is contained in:
@@ -100,6 +100,9 @@ Unique::Unique(qsort_cmp2 comp_func, void * comp_func_fixed_arg,
|
||||
*/
|
||||
max_elements= (ulong) (max_in_memory_size /
|
||||
ALIGN_SIZE(sizeof(TREE_ELEMENT)+size));
|
||||
if (!max_elements)
|
||||
max_elements= 1;
|
||||
|
||||
(void) open_cached_file(&file, mysql_tmpdir,TEMP_PREFIX, DISK_BUFFER_SIZE,
|
||||
MYF(MY_WME));
|
||||
}
|
||||
@@ -643,11 +646,12 @@ bool Unique::walk(TABLE *table, tree_walk_action action, void *walk_action_arg)
|
||||
if (flush_io_cache(&file) || reinit_io_cache(&file, READ_CACHE, 0L, 0, 0))
|
||||
return 1;
|
||||
/*
|
||||
merge_buffer must fit at least MERGEBUFF2 keys, because
|
||||
merge_index() can merge that many BUFFPEKs at once.
|
||||
merge_buffer must fit at least MERGEBUFF2 + 1 keys, because
|
||||
merge_index() can merge that many BUFFPEKs at once. The extra space for one key
|
||||
is needed when a piece of merge buffer is re-read, see merge_walk()
|
||||
*/
|
||||
size_t buff_sz= MY_MAX(MERGEBUFF2, max_in_memory_size/full_size+1) * full_size;
|
||||
if (!(merge_buffer = (uchar *)my_malloc(buff_sz, MYF(MY_THREAD_SPECIFIC|MY_WME))))
|
||||
size_t buff_sz= MY_MAX(MERGEBUFF2+1, max_in_memory_size/full_size+1) * full_size;
|
||||
if (!(merge_buffer = (uchar *)my_malloc(buff_sz, MYF(MY_WME))))
|
||||
return 1;
|
||||
if (buff_sz < full_size * (file_ptrs.elements + 1UL))
|
||||
res= merge(table, merge_buffer, buff_sz >= full_size * MERGEBUFF2) ;
|
||||
@@ -708,8 +712,8 @@ bool Unique::merge(TABLE *table, uchar *buff, bool without_last_merge)
|
||||
full_size;
|
||||
sort_param.min_dupl_count= min_dupl_count;
|
||||
sort_param.res_length= 0;
|
||||
sort_param.max_keys_per_buffer=
|
||||
(uint) (max_in_memory_size / sort_param.sort_length);
|
||||
sort_param.keys= (uint) MY_MAX((max_in_memory_size / sort_param.sort_length),
|
||||
MERGEBUFF2);
|
||||
sort_param.not_killable= 1;
|
||||
|
||||
sort_param.unique_buff= buff +(sort_param.max_keys_per_buffer *
|
||||
|
Reference in New Issue
Block a user