diff --git a/stdlib/sql.go b/stdlib/sql.go index 68ae2697..c018b2cb 100644 --- a/stdlib/sql.go +++ b/stdlib/sql.go @@ -20,6 +20,15 @@ type Driver struct { } func (d *Driver) Open(name string) (driver.Conn, error) { + if d.Pool != nil { + conn, err := d.Pool.Acquire() + if err != nil { + return nil, err + } + + return &Conn{conn: conn}, nil + } + connConfig, err := pgx.ParseURI(name) if err != nil { return nil, err diff --git a/stdlib/sql_test.go b/stdlib/sql_test.go index 91dc2a8f..670224f2 100644 --- a/stdlib/sql_test.go +++ b/stdlib/sql_test.go @@ -117,10 +117,18 @@ func TestOpenFromConnPool(t *testing.T) { } defer closeDB(t, db) + // Can get pgx.ConnPool from driver driver := db.Driver().(*stdlib.Driver) if driver.Pool == nil { t.Fatal("Expected driver opened through OpenFromConnPool to have Pool, but it did not") } + + // Normal sql/database still works + var n int64 + err = db.QueryRow("select 1").Scan(&n) + if err != nil { + t.Fatalf("db.QueryRow unexpectedly failed: %v", err) + } } func TestStmtExec(t *testing.T) {