[CP] fix plan cache mismatch dur to return_rowid
This commit is contained in:
@ -138,6 +138,10 @@ int ObPlanSet::match_params_info(const ParamStore *params,
|
||||
}
|
||||
}
|
||||
|
||||
if (OB_SUCC(ret) && OB_NOT_NULL(pc_ctx.sql_ctx_.session_info_) && is_same) {
|
||||
is_same = (is_cli_return_rowid_ == pc_ctx.sql_ctx_.session_info_->is_client_return_rowid());
|
||||
}
|
||||
|
||||
//pre calculate
|
||||
if (OB_SUCC(ret) && is_same) {
|
||||
ObPhysicalPlanCtx *plan_ctx = exec_ctx.get_physical_plan_ctx();
|
||||
@ -570,6 +574,7 @@ void ObPlanSet::reset()
|
||||
related_user_var_names_.reset();
|
||||
related_user_sess_var_metas_.reset();
|
||||
|
||||
is_cli_return_rowid_ = false;
|
||||
all_possible_const_param_constraints_.reset();
|
||||
all_plan_const_param_constraints_.reset();
|
||||
all_equal_param_constraints_.reset();
|
||||
@ -635,6 +640,7 @@ int ObPlanSet::init_new_set(const ObPlanCacheCtx &pc_ctx,
|
||||
fetch_cur_time_ = plan.get_fetch_cur_time();
|
||||
stmt_type_ = plan.get_stmt_type();
|
||||
is_ignore_stmt_ = plan.is_ignore();
|
||||
is_cli_return_rowid_ = session_info->is_client_return_rowid();
|
||||
//add param info
|
||||
params_info_.reset();
|
||||
// set variables for resource map rule
|
||||
|
@ -118,7 +118,8 @@ public:
|
||||
multi_stmt_rowkey_pos_(alloc_),
|
||||
pre_cal_expr_handler_(NULL),
|
||||
res_map_rule_id_(common::OB_INVALID_ID),
|
||||
res_map_rule_param_idx_(common::OB_INVALID_INDEX)
|
||||
res_map_rule_param_idx_(common::OB_INVALID_INDEX),
|
||||
is_cli_return_rowid_(false)
|
||||
{}
|
||||
virtual ~ObPlanSet();
|
||||
|
||||
@ -242,6 +243,7 @@ public:
|
||||
//variables for resource map rule
|
||||
uint64_t res_map_rule_id_;
|
||||
int64_t res_map_rule_param_idx_;
|
||||
bool is_cli_return_rowid_;
|
||||
};
|
||||
|
||||
class ObSqlPlanSet : public ObPlanSet
|
||||
|
Reference in New Issue
Block a user