MCPcopy
hub / github.com/jackc/pgx / TestTxBeginFuncNestedTransactionCommit

Function TestTxBeginFuncNestedTransactionCommit

pgxpool/pool_test.go:1079–1127  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1077}
1078
1079func TestTxBeginFuncNestedTransactionCommit(t *testing.T) {
1080 ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second)
1081 defer cancel()
1082
1083 db, err := pgxpool.New(ctx, os.Getenv("PGX_TEST_DATABASE"))
1084 require.NoError(t, err)
1085 defer db.Close()
1086
1087 createSql := `
1088 drop table if exists pgxpooltx;
1089 create temporary table pgxpooltx(
1090 id integer,
1091 unique (id)
1092 );
1093 `
1094
1095 _, err = db.Exec(ctx, createSql)
1096 require.NoError(t, err)
1097
1098 defer func() {
1099 db.Exec(ctx, "drop table pgxpooltx")
1100 }()
1101
1102 err = pgx.BeginFunc(ctx, db, func(db pgx.Tx) error {
1103 _, err := db.Exec(ctx, "insert into pgxpooltx(id) values (1)")
1104 require.NoError(t, err)
1105
1106 err = pgx.BeginFunc(ctx, db, func(db pgx.Tx) error {
1107 _, err := db.Exec(ctx, "insert into pgxpooltx(id) values (2)")
1108 require.NoError(t, err)
1109
1110 err = pgx.BeginFunc(ctx, db, func(db pgx.Tx) error {
1111 _, err := db.Exec(ctx, "insert into pgxpooltx(id) values (3)")
1112 require.NoError(t, err)
1113 return nil
1114 })
1115 require.NoError(t, err)
1116 return nil
1117 })
1118 require.NoError(t, err)
1119 return nil
1120 })
1121 require.NoError(t, err)
1122
1123 var n int64
1124 err = db.QueryRow(ctx, "select count(*) from pgxpooltx").Scan(&n)
1125 require.NoError(t, err)
1126 require.EqualValues(t, 3, n)
1127}
1128
1129func TestTxBeginFuncNestedTransactionRollback(t *testing.T) {
1130 ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second)

Callers

nothing calls this directly

Calls 5

NewFunction · 0.92
CloseMethod · 0.65
ExecMethod · 0.65
ScanMethod · 0.65
QueryRowMethod · 0.65

Tested by

no test coverage detected