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 not in pl use the same strategy to avoid never getting the lock. | ||||
|     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.retry_type_ = RETRY_TYPE_LOCAL; | ||||
|       } 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); | ||||
| } | ||||
|  | ||||
| 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 bret = false; | ||||
|  | ||||
| @ -581,6 +581,7 @@ public: | ||||
|   static bool is_fk_nested_sql(ObExecContext *cur_ctx); | ||||
|   static bool is_iter_uncommitted_row(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 int get_obj_from_ext_obj(const ObObjParam &ext_obj, int64_t pos, ObObj *&obj); | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 hanr881
					hanr881