[CP]to issue<53615144>:fix package var serialize issue

This commit is contained in:
obdev
2024-02-08 00:59:45 +00:00
committed by ob-robot
parent b6e86399fb
commit 833df1e858
4 changed files with 26 additions and 2 deletions

View File

@ -4100,6 +4100,21 @@ int ObBasicSessionInfo::calc_need_serialize_vars(ObIArray<ObSysVarClassType> &sy
}
}
if (OB_SUCC(ret) && OB_NOT_NULL(cur_phy_plan_) && cur_phy_plan_->contain_pl_udf_or_trigger()) {
// 如果该语句包含PL UDF/TRIGGER, 将该Sesssion上变化的Package变量进行同步
// TODO: 当前做的不够精细, 后续应该做到仅同步需要的变量
ObSessionValMap::VarNameValMap::const_iterator iter = user_var_val_map_.get_val_map().begin();
for (; OB_SUCC(ret) && iter != user_var_val_map_.get_val_map().end(); ++iter) {
const ObString name = iter->first;
if (name.prefix_match("pkg.")) {
if (OB_FAIL(user_var_names.push_back(name))) {
LOG_WARN("failed push back package var name", K(name));
}
}
}
LOG_DEBUG("sync package variables", K(user_var_names), K(cur_phy_plan_), K(lbt()));
}
if (OB_SUCC(ret) && cur_phy_plan_ != nullptr) {
// 处理该语句用到的需要序列化的用户变量和系统变量
const ObIArray<ObVarInfo> &extra_serialize_vars = cur_phy_plan_->get_vars();