Fix: sys_var plan cache not set
This commit is contained in:
@ -3719,6 +3719,7 @@ int ObBasicSessionInfo::deserialize_sync_sys_vars(int64_t &deserialize_sys_var_c
|
||||
LOG_DEBUG("total des sys vars", K(deserialize_sys_var_count));
|
||||
const bool check_timezone_valid = false;
|
||||
SysVarIncInfo tmp_sys_var_inc_info;
|
||||
bool is_influence_plan_cache_sys_var = false;
|
||||
for (int64_t i = 0; OB_SUCC(ret) && i < deserialize_sys_var_count; ++i) {
|
||||
ObObj tmp_val;
|
||||
ObBasicSysVar *sys_var = NULL;
|
||||
@ -3758,6 +3759,9 @@ int ObBasicSessionInfo::deserialize_sync_sys_vars(int64_t &deserialize_sys_var_c
|
||||
} else if (OB_FAIL(process_session_variable(sys_var_id, sys_var->get_value(),
|
||||
check_timezone_valid))) {
|
||||
LOG_ERROR("process system variable error", K(ret), K(*sys_var));
|
||||
} else if (sys_var->is_influence_plan()
|
||||
&& FALSE_IT(is_influence_plan_cache_sys_var = true)) {
|
||||
// do nothing.
|
||||
} else {
|
||||
LOG_TRACE("deserialize sync sys var", K(sys_var_id), K(*sys_var),
|
||||
K(sessid_), K(proxy_sessid_));
|
||||
@ -3768,7 +3772,8 @@ int ObBasicSessionInfo::deserialize_sync_sys_vars(int64_t &deserialize_sys_var_c
|
||||
}
|
||||
}
|
||||
if (OB_SUCC(ret)) {
|
||||
if (OB_FAIL(sync_default_sys_vars(sys_var_inc_info_, tmp_sys_var_inc_info))) {
|
||||
if (OB_FAIL(sync_default_sys_vars(sys_var_inc_info_, tmp_sys_var_inc_info,
|
||||
is_influence_plan_cache_sys_var))) {
|
||||
LOG_WARN("fail to sync default sys vars",K(ret));
|
||||
} else if (OB_FAIL(sys_var_inc_info_.assign(tmp_sys_var_inc_info))) {
|
||||
LOG_WARN("fail to assign sys var delta info",K(ret));
|
||||
@ -3776,6 +3781,12 @@ int ObBasicSessionInfo::deserialize_sync_sys_vars(int64_t &deserialize_sys_var_c
|
||||
//do nothing.
|
||||
}
|
||||
}
|
||||
if (OB_SUCC(ret)) {
|
||||
if (is_influence_plan_cache_sys_var && OB_FAIL(gen_sys_var_in_pc_str())) {
|
||||
LOG_ERROR("fail to gen sys var in pc str", K(ret));
|
||||
}
|
||||
}
|
||||
|
||||
LOG_TRACE("after deserialize sync sys vars", "inc var ids",
|
||||
sys_var_inc_info_.get_all_sys_var_ids(),
|
||||
K(sessid_), K(proxy_sessid_));
|
||||
@ -3785,7 +3796,8 @@ int ObBasicSessionInfo::deserialize_sync_sys_vars(int64_t &deserialize_sys_var_c
|
||||
|
||||
// Deserialization scenario, synchronization of default system variables
|
||||
int ObBasicSessionInfo::sync_default_sys_vars(SysVarIncInfo sys_var_inc_info_,
|
||||
SysVarIncInfo tmp_sys_var_inc_info)
|
||||
SysVarIncInfo tmp_sys_var_inc_info,
|
||||
bool &is_influence_plan_cache_sys_var)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
const ObIArray<ObSysVarClassType> &ids = sys_var_inc_info_.get_all_sys_var_ids();
|
||||
@ -3810,6 +3822,9 @@ int ObBasicSessionInfo::sync_default_sys_vars(SysVarIncInfo sys_var_inc_info_,
|
||||
} else if (OB_FAIL(process_session_variable(sys_var_id, sys_vars_[store_idx]->get_value(),
|
||||
false))) {
|
||||
LOG_WARN("process system variable error", K(ret), K(sys_var_id));
|
||||
} else if (sys_var->is_influence_plan()
|
||||
&& FALSE_IT(is_influence_plan_cache_sys_var = true)) {
|
||||
// do nothing.
|
||||
} else {
|
||||
LOG_TRACE("sync sys var set default value", K(sys_var_id),
|
||||
K(sessid_), K(proxy_sessid_));
|
||||
|
||||
@ -1179,7 +1179,7 @@ public:
|
||||
// for SESSION_SYNC_SYS_VAR serialize and deserialize.
|
||||
int serialize_sync_sys_vars(common::ObIArray<share::ObSysVarClassType> &sys_var_delta_ids, char *buf, const int64_t &buf_len, int64_t &pos);
|
||||
int deserialize_sync_sys_vars(int64_t &deserialize_sys_var_count, const char *buf, const int64_t &data_len, int64_t &pos);
|
||||
int sync_default_sys_vars(SysVarIncInfo sys_var_inc_info_, SysVarIncInfo tmp_sys_var_inc_info);
|
||||
int sync_default_sys_vars(SysVarIncInfo sys_var_inc_info_, SysVarIncInfo tmp_sys_var_inc_info, bool &is_influence_plan_cache_sys_var);
|
||||
int get_sync_sys_vars(common::ObIArray<share::ObSysVarClassType> &sys_var_delta_ids) const;
|
||||
int get_sync_sys_vars_size(common::ObIArray<share::ObSysVarClassType> &sys_var_delta_ids, int64_t &len) const;
|
||||
bool is_sync_sys_var(share::ObSysVarClassType sys_var_id) const;
|
||||
|
||||
Reference in New Issue
Block a user