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

Function TestTxCommitWhenTxBroken

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

Source from the content-addressed store, hash-verified

56}
57
58func TestTxCommitWhenTxBroken(t *testing.T) {
59 t.Parallel()
60
61 conn := mustConnectString(t, os.Getenv("PGX_TEST_DATABASE"))
62 defer closeConn(t, conn)
63
64 createSql := `
65 create temporary table foo(
66 id integer,
67 unique (id)
68 );
69 `
70
71 if _, err := conn.Exec(context.Background(), createSql); err != nil {
72 t.Fatalf("Failed to create table: %v", err)
73 }
74
75 tx, err := conn.Begin(context.Background())
76 if err != nil {
77 t.Fatalf("conn.Begin failed: %v", err)
78 }
79
80 if _, err := tx.Exec(context.Background(), "insert into foo(id) values (1)"); err != nil {
81 t.Fatalf("tx.Exec failed: %v", err)
82 }
83
84 // Purposely break transaction
85 if _, err := tx.Exec(context.Background(), "syntax error"); err == nil {
86 t.Fatal("Unexpected success")
87 }
88
89 err = tx.Commit(context.Background())
90 if err != pgx.ErrTxCommitRollback {
91 t.Fatalf("Expected error %v, got %v", pgx.ErrTxCommitRollback, err)
92 }
93
94 var n int64
95 err = conn.QueryRow(context.Background(), "select count(*) from foo").Scan(&n)
96 if err != nil {
97 t.Fatalf("QueryRow Scan failed: %v", err)
98 }
99 if n != 0 {
100 t.Fatalf("Did not receive correct number of rows: %v", n)
101 }
102}
103
104func TestTxCommitWhenDeferredConstraintFailure(t *testing.T) {
105 t.Parallel()

Callers

nothing calls this directly

Calls 7

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

Tested by

no test coverage detected