package pgxpool import ( "context" "github.com/jackc/pgconn" "github.com/jackc/pgx/v4" ) type Tx struct { t pgx.Tx c *Conn } func (tx *Tx) Begin(ctx context.Context) (pgx.Tx, error) { return tx.t.Begin(ctx) } func (tx *Tx) Commit(ctx context.Context) error { err := tx.t.Commit(ctx) if tx.c != nil { tx.c.Release() tx.c = nil } return err } func (tx *Tx) Rollback(ctx context.Context) error { err := tx.t.Rollback(ctx) if tx.c != nil { tx.c.Release() tx.c = nil } return err } func (tx *Tx) CopyFrom(ctx context.Context, tableName pgx.Identifier, columnNames []string, rowSrc pgx.CopyFromSource) (int64, error) { return tx.t.CopyFrom(ctx, tableName, columnNames, rowSrc) } func (tx *Tx) SendBatch(ctx context.Context, b *pgx.Batch) pgx.BatchResults { return tx.t.SendBatch(ctx, b) } func (tx *Tx) LargeObjects() pgx.LargeObjects { return tx.t.LargeObjects() } func (tx *Tx) Prepare(ctx context.Context, name, sql string) (*pgconn.StatementDescription, error) { return tx.t.Prepare(ctx, name, sql) } func (tx *Tx) Exec(ctx context.Context, sql string, arguments ...interface{}) (pgconn.CommandTag, error) { return tx.t.Exec(ctx, sql, arguments...) } func (tx *Tx) Query(ctx context.Context, sql string, args ...interface{}) (pgx.Rows, error) { return tx.t.Query(ctx, sql, args...) } func (tx *Tx) QueryRow(ctx context.Context, sql string, args ...interface{}) pgx.Row { return tx.t.QueryRow(ctx, sql, args...) } func (tx *Tx) Conn() *pgx.Conn { return tx.t.Conn() }