更新时间:2026-07-28 GMT+08:00
分享

XA协议函数

XA协议是X/Open组织提出的分布式事务处理标准,为应用程序和数据库管理系统(DBMS)提供一致的接口,以支持分布式事务处理。

xa_switch_t结构体包含了XA协议一系列的函数指针。libpq提供的xa_switch_t的变量名为xagsw。

相关信息说明如下:

表1 xa_switch_t结构体

变量名称

说明

char name[RMNAMESZ]

资源管理器名称。libpq指定值为gauss_xa。

long flags

资源管理器提供的选项。libpq指定值为TMNOMIGRATE。

long version

资源管理器的版本。

int (*xa_open_entry)(char *, int, long)

xa_open函数指针。

int (*xa_close_entry)(char *, int, long)

xa_close函数指针。

int (*xa_start_entry)(XID *, int, long)

xa_start函数指针。

int (*xa_end_entry)(XID *, int, long)

xa_end函数指针。

int (*xa_rollback_entry)(XID *, int, long)

xa_rollback函数指针。

int (*xa_prepare_entry)(XID *, int, long)

xa_prepare函数指针。

int (*xa_commit_entry)(XID *, int, long)

xa_commit函数指针。

int (*xa_recover_entry)(XID *, long, int, long)

xa_recover函数指针。

int (*xa_forget_entry)(XID *, int, long)

xa_forget函数指针。libpq暂不支持。

int (*xa_complete_entry)(int *, int *, int, long)

xa_complete函数指针。libpq暂不支持。

表2 XID结构体

变量名称

说明

long formatID

格式标识符。

long gtrid_length

全局事务标识的字节长度。最大值为64。

long bqual_length

分支标识的字节长度。最大值为64。

char data[XIDDATASIZE]

全局事务标识和分支标识的组合数据,总共128个字节。

表3 操作选项常量

常量名称

说明

TMNOFLAGS

无特殊标志,使用默认行为。

TMSUCCESS

操作成功执行。

表4 返回值常量

常量名称

说明

XA_OK

操作成功完成。

XAER_RMERR

资源管理器内部错误。

XAER_INVAL

调用参数无效。

XAER_PROTO

违反XA协议状态机。

XAER_DUPID

重复的事务分支ID。

XA_RBROLLBACK

回滚是由未指明的原因引起的。

XAER_NOTA

指定XID不存在。

  • libpq的XA协议函数只支持A兼容库,推荐单线程调用。
  • xa_recover函数仅支持查询使用libpq的XA协议函数prepare的事务列表。
  • 应在调用xa_start和xa_end函数之间执行业务SQL操作。

相关文档