diff --git a/client/dtmcli/dtmimp/db_special.go b/client/dtmcli/dtmimp/db_special.go index 2f20f17..d9128b1 100644 --- a/client/dtmcli/dtmimp/db_special.go +++ b/client/dtmcli/dtmimp/db_special.go @@ -28,6 +28,9 @@ func (*mysqlDBSpecial) GetPlaceHoldSQL(sql string) string { } func (*mysqlDBSpecial) GetXaSQL(command string, xid string) string { + if command == "abort" { + command = "rollback" + } return fmt.Sprintf("xa %s '%s'", command, xid) } @@ -45,6 +48,7 @@ func (*postgresDBSpecial) GetXaSQL(command string, xid string) string { return map[string]string{ "end": "", "start": "begin", + "abort": "rollback", "prepare": fmt.Sprintf("prepare transaction '%s'", xid), "commit": fmt.Sprintf("commit prepared '%s'", xid), "rollback": fmt.Sprintf("rollback prepared '%s'", xid), diff --git a/client/dtmcli/dtmimp/trans_xa_base.go b/client/dtmcli/dtmimp/trans_xa_base.go index d936b6a..a77b616 100644 --- a/client/dtmcli/dtmimp/trans_xa_base.go +++ b/client/dtmcli/dtmimp/trans_xa_base.go @@ -42,7 +42,8 @@ func XaHandleLocalTrans(xa *TransBase, dbConf DBConf, cb func(*sql.DB) error) (r _, err := DBExec(dbConf.Driver, db, GetDBSpecial(dbConf.Driver).GetXaSQL("prepare", xaBranch)) return err }, func() error { - return nil + _, err := DBExec(dbConf.Driver, db, GetDBSpecial(dbConf.Driver).GetXaSQL("abort", xaBranch)) + return err }) _, rerr = DBExec(dbConf.Driver, db, GetDBSpecial(dbConf.Driver).GetXaSQL("start", xaBranch)) if rerr != nil {