diff --git a/sql/resourcegroups/resource_group_mgr.cc b/sql/resourcegroups/resource_group_mgr.cc index b3b96b1..731400d 100644 --- a/sql/resourcegroups/resource_group_mgr.cc +++ b/sql/resourcegroups/resource_group_mgr.cc @@ -63,6 +63,9 @@ #include "sql_string.h" // to_lex_cstring namespace resourcegroups { +const char* SYS_DEFAULT_RESOURCE_GROUP_NAME = "SYS_default"; +const char* USR_DEFAULT_RESOURCE_GROUP_NAME = "USR_default"; + Resource_group_mgr *Resource_group_mgr::m_instance = nullptr; void thread_create_callback(const PSI_thread_attrs *thread_attrs) { @@ -71,11 +74,10 @@ void thread_create_callback(const PSI_thread_attrs *thread_attrs) { if (!res_grp_mgr->resource_group_support()) return; if (thread_attrs != nullptr) { - auto res_grp = thread_attrs->m_system_thread - ? res_grp_mgr->sys_default_resource_group() - : res_grp_mgr->usr_default_resource_group(); - res_grp_mgr->set_res_grp_in_pfs(res_grp->name().c_str(), - res_grp->name().length(), + const char* res_grp_name = thread_attrs->m_system_thread + ? res_grp_mgr->get_sys_default_resource_group_name() + : res_grp_mgr->get_usr_default_resource_group_name(); + res_grp_mgr->set_res_grp_in_pfs(res_grp_name, strlen(res_grp_name), thread_attrs->m_thread_internal_id); } } @@ -158,10 +160,12 @@ static bool deserialize_resource_groups(THD *thd) { auto res_grp_mgr = Resource_group_mgr::instance(); for (const auto &resource_group : resource_group_vec) { if (my_strcasecmp(&my_charset_utf8_general_ci, - resource_group->name().c_str(), "USR_default") == 0) + resource_group->name().c_str(), + USR_DEFAULT_RESOURCE_GROUP_NAME) == 0) usr_default_in_dd = true; else if (my_strcasecmp(&my_charset_utf8_general_ci, - resource_group->name().c_str(), "SYS_default") == 0) + resource_group->name().c_str(), + SYS_DEFAULT_RESOURCE_GROUP_NAME) == 0) sys_default_in_dd = true; else { auto resource_group_ptr = @@ -377,22 +381,24 @@ bool Resource_group_mgr::init() { } m_usr_default_resource_group = new (std::nothrow) Resource_group( - "USR_default", resourcegroups::Type::USER_RESOURCE_GROUP, true); + USR_DEFAULT_RESOURCE_GROUP_NAME, + resourcegroups::Type::USER_RESOURCE_GROUP, true); if (m_usr_default_resource_group == nullptr) { LogErr(ERROR_LEVEL, ER_FAILED_TO_ALLOCATE_MEMORY_FOR_RESOURCE_GROUP, - "USR_default"); + USR_DEFAULT_RESOURCE_GROUP_NAME); delete m_resource_group_hash; m_resource_group_hash = nullptr; return true; } m_sys_default_resource_group = new (std::nothrow) Resource_group( - "SYS_default", resourcegroups::Type::SYSTEM_RESOURCE_GROUP, true); + SYS_DEFAULT_RESOURCE_GROUP_NAME, + resourcegroups::Type::SYSTEM_RESOURCE_GROUP, true); if (m_sys_default_resource_group == nullptr) { LogErr(ERROR_LEVEL, ER_FAILED_TO_ALLOCATE_MEMORY_FOR_RESOURCE_GROUP, - "SYS_default"); + SYS_DEFAULT_RESOURCE_GROUP_NAME); delete m_resource_group_hash; m_resource_group_hash = nullptr; delete m_usr_default_resource_group; diff --git a/sql/resourcegroups/resource_group_mgr.h b/sql/resourcegroups/resource_group_mgr.h index 4c8c60f..48a6bc7 100644 --- a/sql/resourcegroups/resource_group_mgr.h +++ b/sql/resourcegroups/resource_group_mgr.h @@ -57,6 +57,9 @@ class collation_unordered_map; namespace resourcegroups { +extern const char* SYS_DEFAULT_RESOURCE_GROUP_NAME; +extern const char* USR_DEFAULT_RESOURCE_GROUP_NAME; + /** This is a singleton class that provides various functionalities related to Resource group management, more importantly the managing and the mapping of @@ -379,6 +382,15 @@ class Resource_group_mgr { };); } + /** + Get names of SYS_default and USR_default resource groups. + Called only by thread_create_callback. + + @param[out] name + */ + const char* get_sys_default_resource_group_name() { return SYS_DEFAULT_RESOURCE_GROUP_NAME; } + const char* get_usr_default_resource_group_name() { return USR_DEFAULT_RESOURCE_GROUP_NAME; } + private: /** Pointer to singleton instance of the Resource_group_mgr class. diff --git a/sql/resourcegroups/resource_group_sql_cmd.cc b/sql/resourcegroups/resource_group_sql_cmd.cc index 43f15ba..e24112a 100644 --- a/sql/resourcegroups/resource_group_sql_cmd.cc +++ b/sql/resourcegroups/resource_group_sql_cmd.cc @@ -179,8 +179,12 @@ class Move_thread_to_default_group { */ inline bool is_default_resource_group(const char *res_grp_name) { - return my_strcasecmp(system_charset_info, "USR_default", res_grp_name) == 0 || - my_strcasecmp(system_charset_info, "SYS_default", res_grp_name) == 0; + return my_strcasecmp(system_charset_info, + resourcegroups::USR_DEFAULT_RESOURCE_GROUP_NAME, + res_grp_name) == 0 || + my_strcasecmp(system_charset_info, + resourcegroups::SYS_DEFAULT_RESOURCE_GROUP_NAME, + res_grp_name) == 0; } } // Anonymous namespace