fix unexpected 'plan cache lock conflict' throw by stmt_query()

This commit is contained in:
Cerdore 2024-12-18 03:45:04 +00:00 committed by ob-robot
parent 1ce34a5f01
commit daeffd0c7a

View File

@ -2885,8 +2885,7 @@ OB_NOINLINE int ObSql::handle_large_query(int tmp_ret,
}
//实际编译时间判断是否为大请求
if (OB_SUCC(ret) && is_large_query == false) {
if (OB_PC_LOCK_CONFLICT == tmp_ret
|| (0 != lqt && elapsed_time > lqt)) {
if (0 != lqt && elapsed_time > lqt) {
is_large_query = true;
lq_from_plan = false;
}
@ -4166,13 +4165,6 @@ int ObSql::pc_get_plan(ObPlanCacheCtx &pc_ctx,
|| OB_BATCHED_MULTI_STMT_ROLLBACK == ret
|| OB_NEED_SWITCH_CONSUMER_GROUP == ret) {
/*do nothing*/
} else if (!(PC_PS_MODE == pc_ctx.mode_ || PC_PL_MODE == pc_ctx.mode_)
&& OB_PC_LOCK_CONFLICT == ret
&& !session->is_inner()) {
//不是ps模式, 不是inner sql, 且plan cache锁超时, 后面会放入大查询队列列,
//是ps模式或inner sql, 则不能丢队列, 走硬解析,
//ps暂不支持丢入大查询丢列, TODO shengle 后面单独添加,
//inner sql不能丢入大查询队列, 因为有可能上层查询已有数据返回客户端
} else {
get_plan_err = ret;
int tmp_ret = OB_SUCCESS;