| 956 | } |
| 957 | |
| 958 | func TestConnReleaseClosesConnInTransaction(t *testing.T) { |
| 959 | t.Parallel() |
| 960 | |
| 961 | ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second) |
| 962 | defer cancel() |
| 963 | |
| 964 | pool, err := pgxpool.New(ctx, os.Getenv("PGX_TEST_DATABASE")) |
| 965 | require.NoError(t, err) |
| 966 | defer pool.Close() |
| 967 | |
| 968 | c, err := pool.Acquire(ctx) |
| 969 | require.NoError(t, err) |
| 970 | |
| 971 | pid := c.Conn().PgConn().PID() |
| 972 | |
| 973 | assert.Equal(t, byte('I'), c.Conn().PgConn().TxStatus()) |
| 974 | |
| 975 | _, err = c.Exec(ctx, "begin") |
| 976 | assert.NoError(t, err) |
| 977 | |
| 978 | assert.Equal(t, byte('T'), c.Conn().PgConn().TxStatus()) |
| 979 | |
| 980 | c.Release() |
| 981 | waitForReleaseToComplete() |
| 982 | |
| 983 | c, err = pool.Acquire(ctx) |
| 984 | require.NoError(t, err) |
| 985 | |
| 986 | assert.NotEqual(t, pid, c.Conn().PgConn().PID()) |
| 987 | assert.Equal(t, byte('I'), c.Conn().PgConn().TxStatus()) |
| 988 | |
| 989 | c.Release() |
| 990 | } |
| 991 | |
| 992 | func TestConnReleaseDestroysClosedConn(t *testing.T) { |
| 993 | t.Parallel() |