to issue<49916547>:fix sql in pl remote execute report 4007
This commit is contained in:
@ -56,7 +56,8 @@ struct ObRemoteSqlInfo
|
|||||||
is_original_ps_mode_(false),
|
is_original_ps_mode_(false),
|
||||||
ps_param_cnt_(0),
|
ps_param_cnt_(0),
|
||||||
remote_sql_(),
|
remote_sql_(),
|
||||||
ps_params_(nullptr)
|
ps_params_(nullptr),
|
||||||
|
sql_from_pl_(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,6 +69,7 @@ struct ObRemoteSqlInfo
|
|||||||
int32_t ps_param_cnt_;
|
int32_t ps_param_cnt_;
|
||||||
common::ObString remote_sql_;
|
common::ObString remote_sql_;
|
||||||
ParamStore *ps_params_;
|
ParamStore *ps_params_;
|
||||||
|
bool sql_from_pl_;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ObPhysicalPlanCtx
|
class ObPhysicalPlanCtx
|
||||||
|
|||||||
@ -332,6 +332,7 @@ OB_DEF_SERIALIZE(ObRemoteTask)
|
|||||||
OB_UNIS_ENCODE(ps_params->at(i).get_param_flag());
|
OB_UNIS_ENCODE(ps_params->at(i).get_param_flag());
|
||||||
}
|
}
|
||||||
OB_UNIS_ENCODE(remote_sql_info_->is_original_ps_mode_);
|
OB_UNIS_ENCODE(remote_sql_info_->is_original_ps_mode_);
|
||||||
|
OB_UNIS_ENCODE(remote_sql_info_->sql_from_pl_);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -369,6 +370,7 @@ OB_DEF_SERIALIZE_SIZE(ObRemoteTask)
|
|||||||
OB_UNIS_ADD_LEN(ps_params->at(i).get_param_flag());
|
OB_UNIS_ADD_LEN(ps_params->at(i).get_param_flag());
|
||||||
}
|
}
|
||||||
OB_UNIS_ADD_LEN(remote_sql_info_->is_original_ps_mode_);
|
OB_UNIS_ADD_LEN(remote_sql_info_->is_original_ps_mode_);
|
||||||
|
OB_UNIS_ADD_LEN(remote_sql_info_->sql_from_pl_);
|
||||||
}
|
}
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
@ -432,6 +434,7 @@ OB_DEF_DESERIALIZE(ObRemoteTask)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
OB_UNIS_DECODE(remote_sql_info_->is_original_ps_mode_);
|
OB_UNIS_DECODE(remote_sql_info_->is_original_ps_mode_);
|
||||||
|
OB_UNIS_DECODE(remote_sql_info_->sql_from_pl_);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2156,6 +2156,7 @@ int ObSql::handle_remote_query(const ObRemoteSqlInfo &remote_sql_info,
|
|||||||
bool use_plan_cache = session->get_local_ob_enable_plan_cache();
|
bool use_plan_cache = session->get_local_ob_enable_plan_cache();
|
||||||
context.self_add_plan_ = false;
|
context.self_add_plan_ = false;
|
||||||
PlanCacheMode mode = remote_sql_info.use_ps_ ? PC_PS_MODE : PC_TEXT_MODE;
|
PlanCacheMode mode = remote_sql_info.use_ps_ ? PC_PS_MODE : PC_TEXT_MODE;
|
||||||
|
mode = remote_sql_info.sql_from_pl_ ? PC_PL_MODE : mode;
|
||||||
context.cur_sql_ = trimed_stmt;
|
context.cur_sql_ = trimed_stmt;
|
||||||
pc_ctx = new (pc_ctx) ObPlanCacheCtx(trimed_stmt,
|
pc_ctx = new (pc_ctx) ObPlanCacheCtx(trimed_stmt,
|
||||||
mode,
|
mode,
|
||||||
@ -2237,6 +2238,7 @@ int ObSql::handle_remote_query(const ObRemoteSqlInfo &remote_sql_info,
|
|||||||
remote_sql_info.ps_params_->pop_back();
|
remote_sql_info.ps_params_->pop_back();
|
||||||
}
|
}
|
||||||
PlanCacheMode mode = remote_sql_info.use_ps_ ? PC_PS_MODE : PC_TEXT_MODE;
|
PlanCacheMode mode = remote_sql_info.use_ps_ ? PC_PS_MODE : PC_TEXT_MODE;
|
||||||
|
mode = remote_sql_info.sql_from_pl_ ? PC_PL_MODE : mode;
|
||||||
if (OB_FAIL(handle_physical_plan(trimed_stmt, context, tmp_result, *pc_ctx, get_plan_err))) {
|
if (OB_FAIL(handle_physical_plan(trimed_stmt, context, tmp_result, *pc_ctx, get_plan_err))) {
|
||||||
if (OB_ERR_PROXY_REROUTE == ret) {
|
if (OB_ERR_PROXY_REROUTE == ret) {
|
||||||
LOG_DEBUG("fail to handle physical plan", K(ret));
|
LOG_DEBUG("fail to handle physical plan", K(ret));
|
||||||
@ -4317,6 +4319,7 @@ int ObSql::after_get_plan(ObPlanCacheCtx &pc_ctx,
|
|||||||
if (OB_SUCC(ret) && phy_plan->is_remote_plan()
|
if (OB_SUCC(ret) && phy_plan->is_remote_plan()
|
||||||
&& !phy_plan->contains_temp_table()
|
&& !phy_plan->contains_temp_table()
|
||||||
&& !enable_send_plan) {
|
&& !enable_send_plan) {
|
||||||
|
pctx->get_remote_sql_info().sql_from_pl_ = PC_PL_MODE == pc_ctx.mode_;
|
||||||
//处理远程plan转发SQL的情况
|
//处理远程plan转发SQL的情况
|
||||||
ParamStore ¶m_store = pctx->get_param_store_for_update();
|
ParamStore ¶m_store = pctx->get_param_store_for_update();
|
||||||
if (OB_NOT_NULL(ps_params)) {
|
if (OB_NOT_NULL(ps_params)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user