to issue<52247541>:adjust sql retry times if report 6005 in autonomous tranasction
This commit is contained in:
@ -560,7 +560,9 @@ public:
|
|||||||
// sql which in pl will local retry first. see ObInnerSQLConnection::process_retry.
|
// sql which in pl will local retry first. see ObInnerSQLConnection::process_retry.
|
||||||
// sql which not in pl use the same strategy to avoid never getting the lock.
|
// sql which not in pl use the same strategy to avoid never getting the lock.
|
||||||
if (v.is_from_pl_) {
|
if (v.is_from_pl_) {
|
||||||
if (v.local_retry_times_ <= 1 || !v.session_.get_pl_can_retry()) {
|
if (v.local_retry_times_ <= 1 ||
|
||||||
|
!v.session_.get_pl_can_retry() ||
|
||||||
|
ObSQLUtils::is_in_autonomous_block(v.session_.get_cur_exec_ctx())) {
|
||||||
v.no_more_test_ = true;
|
v.no_more_test_ = true;
|
||||||
v.retry_type_ = RETRY_TYPE_LOCAL;
|
v.retry_type_ = RETRY_TYPE_LOCAL;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -4473,6 +4473,21 @@ bool ObSQLUtils::is_nested_sql(ObExecContext *cur_ctx)
|
|||||||
return is_pl_nested_sql(cur_ctx) || is_fk_nested_sql(cur_ctx);
|
return is_pl_nested_sql(cur_ctx) || is_fk_nested_sql(cur_ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ObSQLUtils::is_in_autonomous_block(ObExecContext *cur_ctx)
|
||||||
|
{
|
||||||
|
bool bret = false;
|
||||||
|
pl::ObPLContext *pl_context = nullptr;
|
||||||
|
if (cur_ctx != nullptr) {
|
||||||
|
pl_context = cur_ctx->get_pl_stack_ctx();
|
||||||
|
for (; !bret && pl_context != nullptr; pl_context = pl_context->get_parent_stack_ctx()) {
|
||||||
|
if (pl_context->in_autonomous()) {
|
||||||
|
bret = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return bret;
|
||||||
|
}
|
||||||
|
|
||||||
bool ObSQLUtils::is_select_from_dual(ObExecContext &ctx)
|
bool ObSQLUtils::is_select_from_dual(ObExecContext &ctx)
|
||||||
{
|
{
|
||||||
bool bret = false;
|
bool bret = false;
|
||||||
|
|||||||
@ -581,6 +581,7 @@ public:
|
|||||||
static bool is_fk_nested_sql(ObExecContext *cur_ctx);
|
static bool is_fk_nested_sql(ObExecContext *cur_ctx);
|
||||||
static bool is_iter_uncommitted_row(ObExecContext *cur_ctx);
|
static bool is_iter_uncommitted_row(ObExecContext *cur_ctx);
|
||||||
static bool is_nested_sql(ObExecContext *cur_ctx);
|
static bool is_nested_sql(ObExecContext *cur_ctx);
|
||||||
|
static bool is_in_autonomous_block(ObExecContext *cur_ctx);
|
||||||
static bool is_select_from_dual(ObExecContext &ctx);
|
static bool is_select_from_dual(ObExecContext &ctx);
|
||||||
|
|
||||||
static int get_obj_from_ext_obj(const ObObjParam &ext_obj, int64_t pos, ObObj *&obj);
|
static int get_obj_from_ext_obj(const ObObjParam &ext_obj, int64_t pos, ObObj *&obj);
|
||||||
|
|||||||
Reference in New Issue
Block a user