diff --git a/sql/resourcegroups/resource_group_mgr.cc b/sql/resourcegroups/resource_group_mgr.cc index 1144954..3bfe529 100644 --- a/sql/resourcegroups/resource_group_mgr.cc +++ b/sql/resourcegroups/resource_group_mgr.cc @@ -28,6 +28,9 @@ 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) @@ -39,11 +42,11 @@ void thread_create_callback(const PSI_thread_attrs *thread_attrs) 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(), thread_attrs->m_thread_internal_id); + 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); } } @@ -138,10 +141,12 @@ static bool deserialize_resource_groups(THD *thd) 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 { @@ -383,7 +388,8 @@ 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) { @@ -394,7 +400,8 @@ bool Resource_group_mgr::init() } 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) { diff --git a/sql/resourcegroups/resource_group_mgr.h b/sql/resourcegroups/resource_group_mgr.h index 0711a27..3a81d08 100644 --- a/sql/resourcegroups/resource_group_mgr.h +++ b/sql/resourcegroups/resource_group_mgr.h @@ -36,6 +36,9 @@ 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 @@ -403,6 +406,13 @@ public: };); } + /** + Get names of SYS_default and USR_default resource groups. + Called by thread_create_callback only. + */ + 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 c490d28..7f254ae 100644 --- a/sql/resourcegroups/resource_group_sql_cmd.cc +++ b/sql/resourcegroups/resource_group_sql_cmd.cc @@ -168,8 +168,12 @@ private: 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