[CP] [to #53541728] fix create routine wiht hostname @ in MySQL mode
This commit is contained in:
@ -141,6 +141,8 @@ int ObCreateRoutineResolver::resolve_sp_definer(const ParseNode *parse_node,
|
|||||||
// 需要检查当前用户是否有超级权限或者set user id的权限,如果权限ok,那么host为%
|
// 需要检查当前用户是否有超级权限或者set user id的权限,如果权限ok,那么host为%
|
||||||
if (session_info_->has_user_super_privilege()) {
|
if (session_info_->has_user_super_privilege()) {
|
||||||
host_name.assign_ptr("%", 1);
|
host_name.assign_ptr("%", 1);
|
||||||
|
} else if (user_name == cur_user_name) {
|
||||||
|
host_name = cur_host_name;
|
||||||
} else {
|
} else {
|
||||||
ret = OB_ERR_NO_PRIVILEGE;
|
ret = OB_ERR_NO_PRIVILEGE;
|
||||||
LOG_WARN("no privilege", K(ret));
|
LOG_WARN("no privilege", K(ret));
|
||||||
@ -148,7 +150,9 @@ int ObCreateRoutineResolver::resolve_sp_definer(const ParseNode *parse_node,
|
|||||||
} else {
|
} else {
|
||||||
host_name.assign_ptr(host_node->str_value_, static_cast<int32_t>(host_node->str_len_));
|
host_name.assign_ptr(host_node->str_value_, static_cast<int32_t>(host_node->str_len_));
|
||||||
// 显式指定host为%,需要当前用户有超级权限或者set user id的权限
|
// 显式指定host为%,需要当前用户有超级权限或者set user id的权限
|
||||||
if (0 == host_name.case_compare("%") && !session_info_->has_user_super_privilege()) {
|
if (user_name == cur_user_name && host_name == cur_host_name) {
|
||||||
|
// do nothing
|
||||||
|
} else if (0 == host_name.case_compare("%") && !session_info_->has_user_super_privilege()) {
|
||||||
ret = OB_ERR_NO_PRIVILEGE;
|
ret = OB_ERR_NO_PRIVILEGE;
|
||||||
LOG_WARN("no privilege", K(ret));
|
LOG_WARN("no privilege", K(ret));
|
||||||
}
|
}
|
||||||
@ -160,7 +164,6 @@ int ObCreateRoutineResolver::resolve_sp_definer(const ParseNode *parse_node,
|
|||||||
user_name,
|
user_name,
|
||||||
host_name,
|
host_name,
|
||||||
user_info))) {
|
user_info))) {
|
||||||
ret = OB_ERR_UNEXPECTED;
|
|
||||||
LOG_WARN("fail to get_user_info", K(ret));
|
LOG_WARN("fail to get_user_info", K(ret));
|
||||||
} else if (OB_ISNULL(user_info)) {
|
} else if (OB_ISNULL(user_info)) {
|
||||||
LOG_USER_WARN(OB_ERR_USER_NOT_EXIST);
|
LOG_USER_WARN(OB_ERR_USER_NOT_EXIST);
|
||||||
|
|||||||
Reference in New Issue
Block a user