[CP] [to #51373389] fix user privilege check of AUTHID DEFINER routines

This commit is contained in:
0xacc
2023-08-22 09:18:19 +00:00
committed by ob-robot
parent ddd3395763
commit ad74fb0068
2 changed files with 12 additions and 3 deletions

View File

@ -204,12 +204,17 @@ int ObExprUserEnv::eval_schemaid_result1(const ObExpr &expr, ObEvalCtx &ctx, ObD
// 所以在这里,ob返回databaseid,即user名字对应的相同名字的database的id
uint64_t dbid = OB_INVALID_ID;
share::schema::ObSchemaGetterGuard schema_guard;
const ObUserInfo *user_info = nullptr;
if (OB_FAIL(ObExprSysContext::get_schema_guard(schema_guard,
ctx.exec_ctx_.get_my_session()->get_effective_tenant_id()))) {
LOG_WARN("failed to get schema guard", K(ret));
} else if (FALSE_IT(user_info = schema_guard.get_user_info(
ctx.exec_ctx_.get_my_session()->get_effective_tenant_id(),
ctx.exec_ctx_.get_my_session()->get_priv_user_id()))) {
// do nothing
} else if (OB_FAIL(schema_guard.get_database_id(
ctx.exec_ctx_.get_my_session()->get_effective_tenant_id(),
ctx.exec_ctx_.get_my_session()->get_user_name(),
user_info ? user_info->get_user_name_str() : ctx.exec_ctx_.get_my_session()->get_user_name(),
dbid))) {
LOG_WARN("fail to get database id", K(ret));
} else {