fix change user user variables not update

This commit is contained in:
obdev
2023-09-09 12:02:32 +00:00
committed by ob-robot
parent eb7498a085
commit b62974dae7
3 changed files with 15 additions and 2 deletions

View File

@ -330,6 +330,7 @@ int ObMPChangeUser::load_privilege_info(ObSQLSessionInfo *session)
OB_LOG(WARN, "user connect failed", K(ret), K(session_priv));
} else {
uint64_t db_id = OB_INVALID_ID;
const ObSysVariableSchema *sys_variable_schema = NULL;
session->set_user(session_priv.user_name_, session_priv.host_name_, session_priv.user_id_);
session->set_user_priv_set(session_priv.user_priv_set_);
session->set_db_priv_set(session_priv.db_priv_set_);
@ -340,8 +341,13 @@ int ObMPChangeUser::load_privilege_info(ObSQLSessionInfo *session)
OB_LOG(WARN, "failed to set default database", K(ret), K(database_));
} else if (OB_FAIL(session->set_real_client_ip(login_info.client_ip_))) {
LOG_WARN("failed to set_real_client_ip", K(ret));
} else if (OB_FAIL(session->load_default_sys_variable(false, true))) {
LOG_WARN("failed to load system variables", K(ret));
} else if (OB_FAIL(schema_guard.get_sys_variable_schema(session_priv.tenant_id_, sys_variable_schema))) {
LOG_WARN("get sys variable schema failed", K(ret));
} else if (OB_ISNULL(sys_variable_schema)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("sys variable schema is null", K(ret));
} else if (OB_FAIL(session->load_all_sys_vars(*sys_variable_schema, false))) {
LOG_WARN("load system variables failed", K(ret));
} else if (OB_FAIL(session->update_database_variables(&schema_guard))) {
OB_LOG(WARN, "failed to update database variables", K(ret));
} else if (OB_FAIL(schema_guard.get_database_id(session->get_effective_tenant_id(),
@ -350,6 +356,7 @@ int ObMPChangeUser::load_privilege_info(ObSQLSessionInfo *session)
OB_LOG(WARN, "failed to get database id", K(ret));
} else {
session->set_database_id(db_id);
session->reset_user_var();
}
}
}

View File

@ -304,6 +304,11 @@ void ObBasicSessionInfo::clean_status()
reset_session_changed_info();
}
void ObBasicSessionInfo::reset_user_var()
{
user_var_val_map_.reuse();
}
void ObBasicSessionInfo::reset(bool skip_sys_var)
{
set_valid(false);

View File

@ -396,6 +396,7 @@ public:
virtual void destroy();
//called before put session to freelist: unlock/set invalid
virtual void reset(bool skip_sys_var = false);
void reset_user_var();
void set_tenant_session_mgr(ObTenantSQLSessionMgr *tenant_session_mgr)
{
tenant_session_mgr_ = tenant_session_mgr;