[CP] [to #54164583] close result set when response query header fail.

This commit is contained in:
LiuYoung00
2024-02-09 00:07:23 +00:00
committed by ob-robot
parent 5176ddee99
commit 722e84a10f
3 changed files with 15 additions and 0 deletions

View File

@ -100,6 +100,11 @@ int ObAsyncPlanDriver::response_result(ObMySQLResultSet &result)
* 3. response_query_header & flush_buffer 不会产生需要重试的报错,此位置是 ObAsyncPlanDriver 重试前的一步,中间不会有别的可能重试的操作 * 3. response_query_header & flush_buffer 不会产生需要重试的报错,此位置是 ObAsyncPlanDriver 重试前的一步,中间不会有别的可能重试的操作
* 4. ps stmt 清理要注意异步回包的情况,可能需要在异步包里面做清理 * 4. ps stmt 清理要注意异步回包的情况,可能需要在异步包里面做清理
*/ */
// need close result set
int close_ret = OB_SUCCESS;
if (OB_SUCCESS != (close_ret = result.close())) {
LOG_WARN("close result failed", K(close_ret));
}
LOG_WARN("prexecute response query head fail. ", K(ret)); LOG_WARN("prexecute response query head fail. ", K(ret));
} else if (result.is_with_rows()) { } else if (result.is_with_rows()) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;

View File

@ -173,6 +173,11 @@ int ObSyncCmdDriver::response_result(ObMySQLResultSet &result)
} else if (is_prexecute_) { } else if (is_prexecute_) {
if (OB_FAIL(response_query_header(result, false, false , // in prexecute , has_more_result and has_ps out is no matter, it will be recalc if (OB_FAIL(response_query_header(result, false, false , // in prexecute , has_more_result and has_ps out is no matter, it will be recalc
true))) { true))) {
// need close result set
int close_ret = OB_SUCCESS;
if (OB_SUCCESS != (close_ret = result.close())) {
LOG_WARN("close result failed", K(close_ret));
}
LOG_WARN("prexecute response query head fail. ", K(ret)); LOG_WARN("prexecute response query head fail. ", K(ret));
} }
} }

View File

@ -189,6 +189,11 @@ int ObSyncPlanDriver::response_result(ObMySQLResultSet &result)
} }
} else { } else {
if (is_prexecute_ && OB_FAIL(response_query_header(result, false, false, true))) { if (is_prexecute_ && OB_FAIL(response_query_header(result, false, false, true))) {
// need close result set
int close_ret = OB_SUCCESS;
if (OB_SUCCESS != (close_ret = result.close())) {
LOG_WARN("close result failed", K(close_ret));
}
LOG_WARN("prexecute response query head fail. ", K(ret)); LOG_WARN("prexecute response query head fail. ", K(ret));
} else if (OB_FAIL(result.close())) { } else if (OB_FAIL(result.close())) {
LOG_WARN("close result set fail", K(ret)); LOG_WARN("close result set fail", K(ret));