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

Function TestTxNestedTransactionRollback

tx_test.go:468–528  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

466}
467
468func TestTxNestedTransactionRollback(t *testing.T) {
469 t.Parallel()
470
471 conn := mustConnectString(t, os.Getenv("PGX_TEST_DATABASE"))
472 defer closeConn(t, conn)
473
474 createSql := `
475 create temporary table foo(
476 id integer,
477 unique (id)
478 );
479 `
480
481 if _, err := conn.Exec(context.Background(), createSql); err != nil {
482 t.Fatalf("Failed to create table: %v", err)
483 }
484
485 tx, err := conn.Begin(context.Background())
486 if err != nil {
487 t.Fatal(err)
488 }
489
490 _, err = tx.Exec(context.Background(), "insert into foo(id) values (1)")
491 if err != nil {
492 t.Fatalf("tx.Exec failed: %v", err)
493 }
494
495 nestedTx, err := tx.Begin(context.Background())
496 if err != nil {
497 t.Fatal(err)
498 }
499
500 _, err = nestedTx.Exec(context.Background(), "insert into foo(id) values (2)")
501 if err != nil {
502 t.Fatalf("nestedTx.Exec failed: %v", err)
503 }
504
505 err = nestedTx.Rollback(context.Background())
506 if err != nil {
507 t.Fatalf("nestedTx.Rollback failed: %v", err)
508 }
509
510 _, err = tx.Exec(context.Background(), "insert into foo(id) values (3)")
511 if err != nil {
512 t.Fatalf("tx.Exec failed: %v", err)
513 }
514
515 err = tx.Commit(context.Background())
516 if err != nil {
517 t.Fatalf("tx.Commit failed: %v", err)
518 }
519
520 var n int64
521 err = conn.QueryRow(context.Background(), "select count(*) from foo").Scan(&n)
522 if err != nil {
523 t.Fatalf("QueryRow Scan failed: %v", err)
524 }
525 if n != 2 {

Callers

nothing calls this directly

Calls 8

mustConnectStringFunction · 0.85
closeConnFunction · 0.70
ExecMethod · 0.65
BeginMethod · 0.65
RollbackMethod · 0.65
CommitMethod · 0.65
ScanMethod · 0.65
QueryRowMethod · 0.65

Tested by

no test coverage detected