patch code to open source branch

This commit is contained in:
dx0
2021-07-29 21:21:12 +08:00
committed by wangzelin.wzl
parent 8a519477bb
commit c9521097c9
10 changed files with 62 additions and 17 deletions

View File

@ -41,14 +41,15 @@ int ObEndTransExecutor::end_trans(ObExecContext& ctx, ObEndTransStmt& stmt)
ret = OB_ERR_UNEXPECTED;
LOG_ERROR("session ptr is null", K(ret));
} else if (my_session->is_in_transaction() && my_session->get_trans_desc().is_xa_local_trans()) {
transaction::ObXATransID xid = my_session->get_trans_desc().get_xid();
const transaction::ObTransDesc& trans_desc = my_session->get_trans_desc();
transaction::ObXATransID xid = trans_desc.get_xid();
if (stmt.get_is_rollback()) {
// Rollback can be executed in the xa transaction,
// the role is to roll back all modifications, but does not end the xa transaction
} else {
// commit is prohibited in xa transaction
ret = OB_TRANS_XA_ERR_COMMIT;
LOG_WARN("COMMIT is not allowed in a xa trans", K(ret), K(xid));
LOG_WARN("COMMIT is not allowed in a xa trans", K(ret), K(xid), K(trans_desc));
}
ctx.set_need_disconnect(false);
} else if (OB_FAIL(ObSqlTransControl::explicit_end_trans(ctx, stmt.get_is_rollback()))) {

View File

@ -111,7 +111,7 @@ int ObPlXaStartExecutor::execute(ObExecContext& ctx, ObXaStartStmt& stmt)
LOG_WARN("set xid error", K(ret), K(stmt));
} else if (my_session->get_in_transaction()) {
ret = OB_TRANS_XA_OUTSIDE;
LOG_WARN("already start trans", K(ret), K(stmt.get_xa_string()));
LOG_WARN("already start trans", K(ret), K(stmt.get_xa_string()), K(trans_desc));
} else {
transaction::ObStartTransParam& start_trans_param = plan_ctx->get_start_trans_param();
init_start_trans_param(my_session, task_exec_ctx, start_trans_param);