mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
Cleanups
- Avoid some realloc() during startup - Ensure that file_key_management_plugin frees it's memory early, even if it's linked statically. - Fixed compiler warnings from unused variables and missing destructors - Fixed wrong indentation
This commit is contained in:
parent
dafed5b515
commit
fabeab7819
12 changed files with 55 additions and 31 deletions
|
@ -565,7 +565,7 @@ int my_load_defaults(const char *conf_file, const char **groups,
|
|||
for (; *groups ; groups++)
|
||||
group.count++;
|
||||
|
||||
if (my_init_dynamic_array(&args, sizeof(char*),*argc, 32, MYF(0)))
|
||||
if (my_init_dynamic_array(&args, sizeof(char*), 128, 64, MYF(0)))
|
||||
goto err;
|
||||
|
||||
ctx.alloc= &alloc;
|
||||
|
|
|
@ -169,6 +169,11 @@ static int file_key_management_plugin_init(void *p)
|
|||
return parser.parse(&keys);
|
||||
}
|
||||
|
||||
static int file_key_management_plugin_deinit(void *p)
|
||||
{
|
||||
keys.free_memory();
|
||||
}
|
||||
|
||||
/*
|
||||
Plugin library descriptor
|
||||
*/
|
||||
|
@ -181,7 +186,7 @@ maria_declare_plugin(file_key_management)
|
|||
"File-based key management plugin",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
file_key_management_plugin_init,
|
||||
NULL,
|
||||
file_key_management_plugin_deinit,
|
||||
0x0100 /* 1.0 */,
|
||||
NULL, /* status variables */
|
||||
settings,
|
||||
|
|
|
@ -9427,7 +9427,8 @@ static int get_options(int *argc_ptr, char ***argv_ptr)
|
|||
|
||||
/* prepare all_options array */
|
||||
my_init_dynamic_array(&all_options, sizeof(my_option),
|
||||
array_elements(my_long_options),
|
||||
array_elements(my_long_options) +
|
||||
sys_var_elements(),
|
||||
array_elements(my_long_options)/4, MYF(0));
|
||||
add_many_options(&all_options, my_long_options, array_elements(my_long_options));
|
||||
sys_var_add_options(&all_options, 0);
|
||||
|
|
|
@ -347,10 +347,11 @@ public:
|
|||
|
||||
rpl_parallel parallel;
|
||||
/*
|
||||
The relay_log_state keeps track of the current binlog state of the execution
|
||||
of the relay log. This is used to know where to resume current GTID position
|
||||
if the slave thread is stopped and restarted.
|
||||
It is only accessed from the SQL thread, so it does not need any locking.
|
||||
The relay_log_state keeps track of the current binlog state of the
|
||||
execution of the relay log. This is used to know where to resume
|
||||
current GTID position if the slave thread is stopped and
|
||||
restarted. It is only accessed from the SQL thread, so it does
|
||||
not need any locking.
|
||||
*/
|
||||
rpl_binlog_state relay_log_state;
|
||||
/*
|
||||
|
|
|
@ -64,7 +64,7 @@ int sys_var_init()
|
|||
/* Must be already initialized. */
|
||||
DBUG_ASSERT(system_charset_info != NULL);
|
||||
|
||||
if (my_hash_init(&system_variable_hash, system_charset_info, 100, 0,
|
||||
if (my_hash_init(&system_variable_hash, system_charset_info, 700, 0,
|
||||
0, (my_hash_get_key) get_sys_var_length, 0, HASH_UNIQUE))
|
||||
goto error;
|
||||
|
||||
|
@ -78,6 +78,11 @@ error:
|
|||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
uint sys_var_elements()
|
||||
{
|
||||
return system_variable_hash.records;
|
||||
}
|
||||
|
||||
int sys_var_add_options(DYNAMIC_ARRAY *long_options, int parse_flags)
|
||||
{
|
||||
uint saved_elements= long_options->elements;
|
||||
|
|
|
@ -414,6 +414,7 @@ extern sys_var *Sys_autocommit_ptr;
|
|||
CHARSET_INFO *get_old_charset_by_name(const char *old_name);
|
||||
|
||||
int sys_var_init();
|
||||
uint sys_var_elements();
|
||||
int sys_var_add_options(DYNAMIC_ARRAY *long_options, int parse_flags);
|
||||
void sys_var_end(void);
|
||||
|
||||
|
|
|
@ -239,6 +239,11 @@ public:
|
|||
delete_dynamic(&array);
|
||||
}
|
||||
|
||||
void free_memory()
|
||||
{
|
||||
delete_dynamic(&array);
|
||||
}
|
||||
|
||||
typedef int (*CMP_FUNC)(const Elem *el1, const Elem *el2);
|
||||
|
||||
void sort(CMP_FUNC cmp_func)
|
||||
|
|
|
@ -1544,22 +1544,26 @@ int plugin_init(int *argc, char **argv, int flags)
|
|||
init_alloc_root(&plugin_vars_mem_root, 4096, 4096, MYF(0));
|
||||
init_alloc_root(&tmp_root, 4096, 4096, MYF(0));
|
||||
|
||||
if (my_hash_init(&bookmark_hash, &my_charset_bin, 16, 0, 0,
|
||||
if (my_hash_init(&bookmark_hash, &my_charset_bin, 32, 0, 0,
|
||||
get_bookmark_hash_key, NULL, HASH_UNIQUE))
|
||||
goto err;
|
||||
|
||||
|
||||
mysql_mutex_init(key_LOCK_plugin, &LOCK_plugin, MY_MUTEX_INIT_FAST);
|
||||
|
||||
/*
|
||||
The 80 is from 2016-04-27 when we had 71 default plugins
|
||||
Big enough to avoid many mallocs even in future
|
||||
*/
|
||||
if (my_init_dynamic_array(&plugin_dl_array,
|
||||
sizeof(struct st_plugin_dl *), 16, 16, MYF(0)) ||
|
||||
my_init_dynamic_array(&plugin_array,
|
||||
sizeof(struct st_plugin_int *), 16, 16, MYF(0)))
|
||||
sizeof(struct st_plugin_int *), 80, 32, MYF(0)))
|
||||
goto err;
|
||||
|
||||
for (i= 0; i < MYSQL_MAX_PLUGIN_TYPE_NUM; i++)
|
||||
{
|
||||
if (my_hash_init(&plugin_hash[i], system_charset_info, 16, 0, 0,
|
||||
if (my_hash_init(&plugin_hash[i], system_charset_info, 32, 0, 0,
|
||||
get_plugin_hash_key, NULL, HASH_UNIQUE))
|
||||
goto err;
|
||||
}
|
||||
|
|
|
@ -2017,7 +2017,7 @@ JOIN::optimize_inner()
|
|||
TODO: Explain the quick_group part of the test below.
|
||||
*/
|
||||
if ((ordered_index_usage != ordered_index_group_by) &&
|
||||
(tmp_table_param.quick_group && !procedure ||
|
||||
((tmp_table_param.quick_group && !procedure) ||
|
||||
(tab->emb_sj_nest &&
|
||||
best_positions[const_tables].sj_strategy == SJ_OPT_LOOSE_SCAN)))
|
||||
{
|
||||
|
@ -3123,7 +3123,7 @@ void JOIN::save_explain_data(Explain_query *output, bool can_overwrite,
|
|||
Explain_union *eu= output->get_union(nr);
|
||||
explain= &eu->fake_select_lex_explain;
|
||||
join_tab[0].tracker= eu->get_fake_select_lex_tracker();
|
||||
for (int i=0 ; i < top_join_tab_count + aggr_tables; i++)
|
||||
for (uint i=0 ; i < top_join_tab_count + aggr_tables; i++)
|
||||
{
|
||||
if (join_tab[i].filesort)
|
||||
{
|
||||
|
@ -3360,23 +3360,25 @@ JOIN::destroy()
|
|||
|
||||
cleanup(1);
|
||||
|
||||
uint tables= table_count+aggr_tables;
|
||||
|
||||
if (join_tab) // We should not have tables > 0 and join_tab != NULL
|
||||
for (JOIN_TAB *tab= first_linear_tab(this, WITH_BUSH_ROOTS, WITH_CONST_TABLES);
|
||||
tab; tab= next_linear_tab(this, tab, WITH_BUSH_ROOTS))
|
||||
if (join_tab)
|
||||
{
|
||||
if (tab->aggr)
|
||||
DBUG_ASSERT(table_count+aggr_tables > 0);
|
||||
for (JOIN_TAB *tab= first_linear_tab(this, WITH_BUSH_ROOTS,
|
||||
WITH_CONST_TABLES);
|
||||
tab; tab= next_linear_tab(this, tab, WITH_BUSH_ROOTS))
|
||||
{
|
||||
free_tmp_table(thd, tab->table);
|
||||
delete tab->tmp_table_param;
|
||||
tab->tmp_table_param= NULL;
|
||||
tab->aggr= NULL;
|
||||
if (tab->aggr)
|
||||
{
|
||||
free_tmp_table(thd, tab->table);
|
||||
delete tab->tmp_table_param;
|
||||
tab->tmp_table_param= NULL;
|
||||
tab->aggr= NULL;
|
||||
}
|
||||
tab->table= NULL;
|
||||
}
|
||||
|
||||
tab->table= NULL;
|
||||
}
|
||||
/* Cleanup items referencing temporary table columns */
|
||||
|
||||
/* Cleanup items referencing temporary table columns */
|
||||
cleanup_item_list(tmp_all_fields1);
|
||||
cleanup_item_list(tmp_all_fields3);
|
||||
destroy_sj_tmp_tables(this);
|
||||
|
@ -24426,9 +24428,6 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order,
|
|||
DBUG_ENTER("select_describe");
|
||||
|
||||
/* Update the QPF with latest values of using_temporary, using_filesort */
|
||||
Explain_select *explain_sel;
|
||||
uint select_nr= join->select_lex->select_number;
|
||||
|
||||
for (SELECT_LEX_UNIT *unit= join->select_lex->first_inner_unit();
|
||||
unit;
|
||||
unit= unit->next_unit())
|
||||
|
|
|
@ -3044,7 +3044,7 @@ int add_status_vars(SHOW_VAR *list)
|
|||
if (status_vars_inited)
|
||||
mysql_mutex_lock(&LOCK_show_status);
|
||||
if (!all_status_vars.buffer && // array is not allocated yet - do it now
|
||||
my_init_dynamic_array(&all_status_vars, sizeof(SHOW_VAR), 200, 20, MYF(0)))
|
||||
my_init_dynamic_array(&all_status_vars, sizeof(SHOW_VAR), 250, 50, MYF(0)))
|
||||
{
|
||||
res= 1;
|
||||
goto err;
|
||||
|
|
|
@ -577,6 +577,8 @@ class Rowid_seq_cursor
|
|||
uint ref_length;
|
||||
|
||||
public:
|
||||
virtual ~Rowid_seq_cursor() {}
|
||||
|
||||
void init(READ_RECORD *info)
|
||||
{
|
||||
cache_start= info->cache_pos;
|
||||
|
@ -631,6 +633,7 @@ class Table_read_cursor : public Rowid_seq_cursor
|
|||
*/
|
||||
READ_RECORD *read_record;
|
||||
public:
|
||||
virtual ~Table_read_cursor() {}
|
||||
|
||||
void init(READ_RECORD *info)
|
||||
{
|
||||
|
|
|
@ -89,8 +89,8 @@ public:
|
|||
class Window_spec : public Sql_alloc
|
||||
{
|
||||
bool window_names_are_checked;
|
||||
|
||||
public:
|
||||
virtual ~Window_spec() {}
|
||||
|
||||
LEX_STRING *window_ref;
|
||||
|
||||
|
|
Loading…
Reference in a new issue