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

Function TestTxNestedTransactionCommit

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

Source from the content-addressed store, hash-verified

394}
395
396func TestTxNestedTransactionCommit(t *testing.T) {
397 t.Parallel()
398
399 conn := mustConnectString(t, os.Getenv("PGX_TEST_DATABASE"))
400 defer closeConn(t, conn)
401
402 createSql := `
403 create temporary table foo(
404 id integer,
405 unique (id)
406 );
407 `
408
409 if _, err := conn.Exec(context.Background(), createSql); err != nil {
410 t.Fatalf("Failed to create table: %v", err)
411 }
412
413 tx, err := conn.Begin(context.Background())
414 if err != nil {
415 t.Fatal(err)
416 }
417
418 _, err = tx.Exec(context.Background(), "insert into foo(id) values (1)")
419 if err != nil {
420 t.Fatalf("tx.Exec failed: %v", err)
421 }
422
423 nestedTx, err := tx.Begin(context.Background())
424 if err != nil {
425 t.Fatal(err)
426 }
427
428 _, err = nestedTx.Exec(context.Background(), "insert into foo(id) values (2)")
429 if err != nil {
430 t.Fatalf("nestedTx.Exec failed: %v", err)
431 }
432
433 doubleNestedTx, err := nestedTx.Begin(context.Background())
434 if err != nil {
435 t.Fatal(err)
436 }
437
438 _, err = doubleNestedTx.Exec(context.Background(), "insert into foo(id) values (3)")
439 if err != nil {
440 t.Fatalf("doubleNestedTx.Exec failed: %v", err)
441 }
442
443 err = doubleNestedTx.Commit(context.Background())
444 if err != nil {
445 t.Fatalf("doubleNestedTx.Commit failed: %v", err)
446 }
447
448 err = nestedTx.Commit(context.Background())
449 if err != nil {
450 t.Fatalf("nestedTx.Commit failed: %v", err)
451 }
452
453 err = tx.Commit(context.Background())

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