mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Fixed portability issue in my_thr_init.c (was added in my last push)
Fixed compiler warnings (detected by VC++): - Removed not used variables - Added casts - Fixed wrong assignments to bool - Fixed wrong calls with bool arguments - Added missing argument to store(longlong), which caused wrong store method to be called. client/mysqldump.c: Removed compiler warning heap/hp_clear.c: Removed compiler warning include/my_global.h: Removed compiler warning include/my_tree.h: Changed memory limits from int to ulong (Allowed me to get rid of some compiler warnings) myisam/mi_create.c: Removed compiler warning myisam/myisampack.c: Removed compiler warning mysys/base64.c: Removed compiler warning mysys/my_thr_init.c: Fixed portability issue (detected on windows) Added DBUG_ASSERT to detect if we call my_thread_end() too many times Don't wait if THR_thread_count == -1 (error condition) mysys/tree.c: Removed compiler warning sql/field.cc: Removed compiler warning Fixed wrong parameter to check_date() Added missing argument to store(longlong) sql/ha_archive.cc: Removed compiler warning sql/ha_federated.cc: Removed compiler warning sql/ha_innodb.cc: Removed not used variable sql/handler.cc: Removed not used variable Fixed wrong if (we didn't detect if rollback or commit failed). Not critical as value is not yet used sql/item.cc: Removed compiler warning sql/item_func.cc: Removed compiler warning sql/item_strfunc.cc: Removed compiler warning sql/item_timefunc.cc: Removed compiler warning sql/log.cc: Removed compiler warning sql/mysql_priv.h: Removed compiler warning sql/opt_range.cc: Removed compiler warning sql/password.c: Removed compiler warning sql/set_var.cc: Removed compiler warning sql/slave.cc: Removed compiler warning sql/sp.cc: Removed compiler warning sql/sp_cache.cc: Removed compiler warning sql/sp_head.cc: Removed compiler warning Adjusted argument to reserve() to not use up too much memory that we are probably not going to need sql/sql_acl.cc: Added missing argument to store(longlong) sql/sql_base.cc: Removed compiler warning sql/sql_db.cc: Removed compiler warning sql/sql_delete.cc: Removed compiler warning sql/sql_handler.cc: Removed not used variable sql/sql_lex.h: Removed not used variable sql/sql_prepare.cc: Removed not used variable sql/sql_rename.cc: Removed not used variable sql/sql_select.cc: Fixed that select_options are not 'cut' Removed some not used variables Removed compiler warnings by adding cast sql/sql_show.cc: Removed not used variables Added missing argument to store(longlong) Removed compiler warnings sql/sql_trigger.cc: Removed not used variables Added cast to remove compiler warnings sql/sql_update.cc: Fixed wrong set of bool variable sql/sql_view.cc: Removed not used variables Added cast to get rid of compiler warnings sql-common/client.c: Fixed compiler warning sql-common/my_time.c: Fixed wrong argument to check_date() Added casts to get rid of compiler warnings sql/sql_yacc.yy: Removed not used variable sql/uniques.cc: Changes memory size from uint to ulong Added casts to get rid of compiler warnings strings/ctype-simple.c: Fixed cast to get rid of compiler warnings
This commit is contained in:
@@ -59,14 +59,15 @@ Unique::Unique(qsort_cmp2 comp_func, void * comp_func_fixed_arg,
|
||||
:max_in_memory_size(max_in_memory_size_arg), size(size_arg), elements(0)
|
||||
{
|
||||
my_b_clear(&file);
|
||||
init_tree(&tree, max_in_memory_size / 16, 0, size, comp_func, 0, NULL,
|
||||
comp_func_fixed_arg);
|
||||
init_tree(&tree, (ulong) (max_in_memory_size / 16), 0, size, comp_func, 0,
|
||||
NULL, comp_func_fixed_arg);
|
||||
/* If the following fail's the next add will also fail */
|
||||
my_init_dynamic_array(&file_ptrs, sizeof(BUFFPEK), 16, 16);
|
||||
/*
|
||||
If you change the following, change it in get_max_elements function, too.
|
||||
*/
|
||||
max_elements= max_in_memory_size / ALIGN_SIZE(sizeof(TREE_ELEMENT)+size);
|
||||
max_elements= (ulong) (max_in_memory_size /
|
||||
ALIGN_SIZE(sizeof(TREE_ELEMENT)+size));
|
||||
VOID(open_cached_file(&file, mysql_tmpdir,TEMP_PREFIX, DISK_BUFFER_SIZE,
|
||||
MYF(MY_WME)));
|
||||
}
|
||||
@@ -267,8 +268,8 @@ double Unique::get_use_cost(uint *buffer, uint nkeys, uint key_size,
|
||||
int n_full_trees; /* number of trees in unique - 1 */
|
||||
double result;
|
||||
|
||||
max_elements_in_tree=
|
||||
max_in_memory_size / ALIGN_SIZE(sizeof(TREE_ELEMENT)+key_size);
|
||||
max_elements_in_tree= ((ulong) max_in_memory_size /
|
||||
ALIGN_SIZE(sizeof(TREE_ELEMENT)+key_size));
|
||||
|
||||
n_full_trees= nkeys / max_elements_in_tree;
|
||||
last_tree_elems= nkeys % max_elements_in_tree;
|
||||
@@ -386,9 +387,11 @@ C_MODE_END
|
||||
|
||||
/*
|
||||
DESCRIPTION
|
||||
|
||||
Function is very similar to merge_buffers, but instead of writing sorted
|
||||
unique keys to the output file, it invokes walk_action for each key.
|
||||
This saves I/O if you need to pass through all unique keys only once.
|
||||
|
||||
SYNOPSIS
|
||||
merge_walk()
|
||||
All params are 'IN' (but see comment for begin, end):
|
||||
@@ -416,7 +419,7 @@ C_MODE_END
|
||||
<> 0 error
|
||||
*/
|
||||
|
||||
static bool merge_walk(uchar *merge_buffer, uint merge_buffer_size,
|
||||
static bool merge_walk(uchar *merge_buffer, ulong merge_buffer_size,
|
||||
uint key_length, BUFFPEK *begin, BUFFPEK *end,
|
||||
tree_walk_action walk_action, void *walk_action_arg,
|
||||
qsort_cmp2 compare, void *compare_arg,
|
||||
@@ -432,7 +435,8 @@ static bool merge_walk(uchar *merge_buffer, uint merge_buffer_size,
|
||||
/* we need space for one key when a piece of merge buffer is re-read */
|
||||
merge_buffer_size-= key_length;
|
||||
uchar *save_key_buff= merge_buffer + merge_buffer_size;
|
||||
uint max_key_count_per_piece= merge_buffer_size/(end-begin)/key_length;
|
||||
uint max_key_count_per_piece= (uint) (merge_buffer_size/(end-begin) /
|
||||
key_length);
|
||||
/* if piece_size is aligned reuse_freed_buffer will always hit */
|
||||
uint piece_size= max_key_count_per_piece * key_length;
|
||||
uint bytes_read; /* to hold return value of read_to_buffer */
|
||||
@@ -548,6 +552,9 @@ end:
|
||||
|
||||
bool Unique::walk(tree_walk_action action, void *walk_action_arg)
|
||||
{
|
||||
int res;
|
||||
uchar *merge_buffer;
|
||||
|
||||
if (elements == 0) /* the whole tree is in memory */
|
||||
return tree_walk(&tree, action, walk_action_arg, left_root_right);
|
||||
|
||||
@@ -556,15 +563,14 @@ bool Unique::walk(tree_walk_action action, void *walk_action_arg)
|
||||
return 1;
|
||||
if (flush_io_cache(&file) || reinit_io_cache(&file, READ_CACHE, 0L, 0, 0))
|
||||
return 1;
|
||||
uchar *merge_buffer= (uchar *) my_malloc(max_in_memory_size, MYF(0));
|
||||
if (merge_buffer == 0)
|
||||
if (!(merge_buffer= (uchar *) my_malloc((ulong) max_in_memory_size, MYF(0))))
|
||||
return 1;
|
||||
int res= merge_walk(merge_buffer, max_in_memory_size, size,
|
||||
(BUFFPEK *) file_ptrs.buffer,
|
||||
(BUFFPEK *) file_ptrs.buffer + file_ptrs.elements,
|
||||
action, walk_action_arg,
|
||||
tree.compare, tree.custom_arg, &file);
|
||||
x_free(merge_buffer);
|
||||
res= merge_walk(merge_buffer, (ulong) max_in_memory_size, size,
|
||||
(BUFFPEK *) file_ptrs.buffer,
|
||||
(BUFFPEK *) file_ptrs.buffer + file_ptrs.elements,
|
||||
action, walk_action_arg,
|
||||
tree.compare, tree.custom_arg, &file);
|
||||
my_free((char*) merge_buffer, MYF(0));
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -615,7 +621,7 @@ bool Unique::get(TABLE *table)
|
||||
sort_param.sort_form=table;
|
||||
sort_param.rec_length= sort_param.sort_length= sort_param.ref_length=
|
||||
size;
|
||||
sort_param.keys= max_in_memory_size / sort_param.sort_length;
|
||||
sort_param.keys= (uint) (max_in_memory_size / sort_param.sort_length);
|
||||
sort_param.not_killable=1;
|
||||
|
||||
if (!(sort_buffer=(uchar*) my_malloc((sort_param.keys+1) *
|
||||
|
Reference in New Issue
Block a user