From 7d40b37334c9db437d3271e23833404dbf44a9c0 Mon Sep 17 00:00:00 2001 From: yedf2 <120050102@qq.com> Date: Fri, 12 Nov 2021 12:51:13 +0800 Subject: [PATCH] postgres test passed --- dtmcli/barrier.postgres.sql | 4 ++-- dtmcli/dtmimp/utils.go | 2 +- dtmsvr/dtmsvr.postgres.sql | 24 ++++++++++++------------ examples/examples.postgres.sql | 4 ++-- go.mod | 6 ++++-- go.sum | 9 +++++++++ test/xa_test.go | 8 +++++--- 7 files changed, 35 insertions(+), 22 deletions(-) diff --git a/dtmcli/barrier.postgres.sql b/dtmcli/barrier.postgres.sql index 7add4a0..67c7bb0 100644 --- a/dtmcli/barrier.postgres.sql +++ b/dtmcli/barrier.postgres.sql @@ -9,8 +9,8 @@ create table if not exists dtm_barrier.barrier( op varchar(45) default '', barrier_id varchar(45) default '', reason varchar(45) default '', - create_time timestamp(0) DEFAULT NULL, - update_time timestamp(0) DEFAULT NULL, + create_time timestamp(0) with time zone DEFAULT NULL, + update_time timestamp(0) with time zone DEFAULT NULL, PRIMARY KEY(id), CONSTRAINT uniq_barrier unique(gid, branch_id, op, barrier_id) ); \ No newline at end of file diff --git a/dtmcli/dtmimp/utils.go b/dtmcli/dtmimp/utils.go index 531b792..7e75d20 100644 --- a/dtmcli/dtmimp/utils.go +++ b/dtmcli/dtmimp/utils.go @@ -220,7 +220,7 @@ func GetDsn(conf map[string]string) string { dsn := map[string]string{ "mysql": fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=true&loc=Local", conf["user"], conf["password"], host, conf["port"], conf["database"]), - "postgres": fmt.Sprintf("host=%s user=%s password=%s dbname='%s' port=%s sslmode=disable TimeZone=Asia/Shanghai", + "postgres": fmt.Sprintf("host=%s user=%s password=%s dbname='%s' port=%s sslmode=disable", host, conf["user"], conf["password"], conf["database"], conf["port"]), }[driver] PanicIf(dsn == "", fmt.Errorf("unknow driver: %s", driver)) diff --git a/dtmsvr/dtmsvr.postgres.sql b/dtmsvr/dtmsvr.postgres.sql index 97da66c..bccb8be 100644 --- a/dtmsvr/dtmsvr.postgres.sql +++ b/dtmsvr/dtmsvr.postgres.sql @@ -11,15 +11,15 @@ CREATE TABLE if not EXISTS dtm.trans_global ( status varchar(45) NOT NULL, query_prepared varchar(128) NOT NULL, protocol varchar(45) not null, - create_time timestamp(0) DEFAULT NULL, - update_time timestamp(0) DEFAULT NULL, - commit_time timestamp(0) DEFAULT NULL, - finish_time timestamp(0) DEFAULT NULL, - rollback_time timestamp(0) DEFAULT NULL, + create_time timestamp(0) with time zone DEFAULT NULL, + update_time timestamp(0) with time zone DEFAULT NULL, + commit_time timestamp(0) with time zone DEFAULT NULL, + finish_time timestamp(0) with time zone DEFAULT NULL, + rollback_time timestamp(0) with time zone DEFAULT NULL, options varchar(256) DEFAULT '', custom_data varchar(256) DEFAULT '', next_cron_interval int default null, - next_cron_time timestamp(0) default null, + next_cron_time timestamp(0) with time zone default null, owner varchar(128) not null default '', PRIMARY KEY (id), CONSTRAINT gid UNIQUE (gid) @@ -34,14 +34,14 @@ CREATE TABLE IF NOT EXISTS dtm.trans_branch_op ( gid varchar(128) NOT NULL, url varchar(128) NOT NULL, data TEXT, - bin_data BLOB, + bin_data bytea, branch_id VARCHAR(128) NOT NULL, op varchar(45) NOT NULL, status varchar(45) NOT NULL, - finish_time timestamp(0) DEFAULT NULL, - rollback_time timestamp(0) DEFAULT NULL, - create_time timestamp(0) DEFAULT NULL, - update_time timestamp(0) DEFAULT NULL, + finish_time timestamp(0) with time zone DEFAULT NULL, + rollback_time timestamp(0) with time zone DEFAULT NULL, + create_time timestamp(0) with time zone DEFAULT NULL, + update_time timestamp(0) with time zone DEFAULT NULL, PRIMARY KEY (id), - CONSTRAINT gid_uniq UNIQUE (gid, branch_id, op) + CONSTRAINT gid_branch_uniq UNIQUE (gid, branch_id, op) ); \ No newline at end of file diff --git a/examples/examples.postgres.sql b/examples/examples.postgres.sql index 1b61bdb..11167d4 100644 --- a/examples/examples.postgres.sql +++ b/examples/examples.postgres.sql @@ -9,8 +9,8 @@ create table if not exists dtm_busi.user_account( user_id int UNIQUE, balance DECIMAL(10, 2) not null default '0', trading_balance DECIMAL(10, 2) not null default '0', - create_time timestamp(0) DEFAULT now(), - update_time timestamp(0) DEFAULT now() + create_time timestamp(0) with time zone DEFAULT now(), + update_time timestamp(0) with time zone DEFAULT now() ); -- SQLINES LICENSE FOR EVALUATION USE ONLY create index if not exists create_idx on dtm_busi.user_account(create_time); diff --git a/go.mod b/go.mod index 1316cb2..d24c1d7 100644 --- a/go.mod +++ b/go.mod @@ -12,6 +12,8 @@ require ( github.com/lib/pq v1.10.3 github.com/prometheus/client_golang v1.11.0 github.com/stretchr/testify v1.7.0 + github.com/yedf/dtmcli v1.5.1 + golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa // indirect golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d // indirect golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069 // indirect google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67 // indirect @@ -19,7 +21,7 @@ require ( google.golang.org/protobuf v1.27.1 gopkg.in/yaml.v2 v2.3.0 gorm.io/driver/mysql v1.0.3 - gorm.io/driver/postgres v1.1.2 - gorm.io/gorm v1.21.15 + gorm.io/driver/postgres v1.2.1 + gorm.io/gorm v1.22.2 // gotest.tools v2.2.0+incompatible ) diff --git a/go.sum b/go.sum index a58d8ce..01ddbd5 100644 --- a/go.sum +++ b/go.sum @@ -243,6 +243,8 @@ github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/yedf/dtmcli v1.5.1 h1:KGeFpRc9nOJ382YfT06I21jX2R9urfmL7JG9SLIBERA= +github.com/yedf/dtmcli v1.5.1/go.mod h1:errG1rA5vaT70B00s6cAKo7O/tD1CLI8CGrESSaTsqw= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= @@ -271,6 +273,8 @@ golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa h1:idItI2DDfCokpg0N51B2VtiLdJ4vAuXC9fnCb2gACo4= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -423,9 +427,14 @@ gorm.io/driver/mysql v1.0.3 h1:+JKBYPfn1tygR1/of/Fh2T8iwuVwzt+PEJmKaXzMQXg= gorm.io/driver/mysql v1.0.3/go.mod h1:twGxftLBlFgNVNakL7F+P/x9oYqoymG3YYT8cAfI9oI= gorm.io/driver/postgres v1.1.2 h1:Amy3hCvLqM+/ICzjCnQr8wKFLVJTeOTdlMT7kCP+J1Q= gorm.io/driver/postgres v1.1.2/go.mod h1:/AGV0zvqF3mt9ZtzLzQmXWQ/5vr+1V1TyHZGZVjzmwI= +gorm.io/driver/postgres v1.2.1 h1:JDQKnF7MC51dgL09Vbydc5kl83KkVDlcXfSPJ+xhh68= +gorm.io/driver/postgres v1.2.1/go.mod h1:SHRZhu+D0tLOHV5qbxZRUM6kBcf3jp/kxPz2mYMTsNY= gorm.io/gorm v1.20.4/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= gorm.io/gorm v1.21.15 h1:gAyaDoPw0lCyrSFWhBlahbUA1U4P5RViC1uIqoB+1Rk= gorm.io/gorm v1.21.15/go.mod h1:F+OptMscr0P2F2qU97WT1WimdH9GaQPoDW7AYd5i2Y0= +gorm.io/gorm v1.22.0/go.mod h1:F+OptMscr0P2F2qU97WT1WimdH9GaQPoDW7AYd5i2Y0= +gorm.io/gorm v1.22.2 h1:1iKcvyJnR5bHydBhDqTwasOkoo6+o4Ms5cknSt6qP7I= +gorm.io/gorm v1.22.2/go.mod h1:F+OptMscr0P2F2qU97WT1WimdH9GaQPoDW7AYd5i2Y0= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= diff --git a/test/xa_test.go b/test/xa_test.go index 0ff6ef2..bcbcfc9 100644 --- a/test/xa_test.go +++ b/test/xa_test.go @@ -40,9 +40,11 @@ func TestXaDuplicate(t *testing.T) { assert.Nil(t, err) sdb, err := dtmimp.StandaloneDB(common.DtmConfig.DB) assert.Nil(t, err) - _, err = dtmimp.DBExec(sdb, "xa recover") - assert.Nil(t, err) - _, err = dtmimp.DBExec(sdb, fmt.Sprintf("xa commit '%s-01'", gid)) // 先把某一个事务提交,模拟重复请求 + if dtmcli.GetCurrentDBType() == dtmcli.DBTypeMysql { + _, err = dtmimp.DBExec(sdb, "xa recover") + assert.Nil(t, err) + } + _, err = dtmimp.DBExec(sdb, dtmimp.GetDBSpecial().GetXaSQL("commit", gid+"-01")) // 先把某一个事务提交,模拟重复请求 assert.Nil(t, err) return xa.CallBranch(req, examples.Busi+"/TransInXa") })