mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
cleanup: string sys_var types
Merge sys_var_charptr with sys_var_charptr_base, as well as merge Sys_var_session_lexstring into Sys_var_lexstring. Also refactored update methods of sys_var_charptr accordingly. Because the class is more generic, session_update() calls sys_var_charptr::session_update() which does not assume a buffer field associated with THD, but instead call strdup/free, we get rid of THD::default_master_connection_buff accordingly. This also makes THD smaller by ~192 bytes, and there can be many thousands of concurrent THDs.
This commit is contained in:
@ -3279,6 +3279,9 @@ void plugin_thdvar_init(THD *thd)
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
thd->session_tracker.sysvars.deinit(thd);
|
||||
#endif
|
||||
my_free((char*) thd->variables.default_master_connection.str);
|
||||
thd->variables.default_master_connection.str= 0;
|
||||
thd->variables.default_master_connection.length= 0;
|
||||
|
||||
thd->variables= global_system_variables;
|
||||
|
||||
@ -3301,6 +3304,11 @@ void plugin_thdvar_init(THD *thd)
|
||||
intern_plugin_unlock(NULL, old_enforced_table_plugin);
|
||||
mysql_mutex_unlock(&LOCK_plugin);
|
||||
|
||||
thd->variables.default_master_connection.str=
|
||||
my_strndup(key_memory_Sys_var_charptr_value,
|
||||
global_system_variables.default_master_connection.str,
|
||||
global_system_variables.default_master_connection.length,
|
||||
MYF(MY_WME | MY_THREAD_SPECIFIC));
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
thd->session_tracker.sysvars.init(thd);
|
||||
#endif
|
||||
@ -3372,6 +3380,9 @@ void plugin_thdvar_cleanup(THD *thd)
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
thd->session_tracker.sysvars.deinit(thd);
|
||||
#endif
|
||||
my_free((char*) thd->variables.default_master_connection.str);
|
||||
thd->variables.default_master_connection.str= 0;
|
||||
thd->variables.default_master_connection.length= 0;
|
||||
|
||||
mysql_mutex_lock(&LOCK_plugin);
|
||||
|
||||
|
Reference in New Issue
Block a user