Documentation ¶
Overview ¶
Package stdlib is the compatibility layer from pgx to database/sql.
A database/sql connection can be established through sql.Open.
db, err := sql.Open("pgx", "postgres://pgx_md5:secret@localhost:5432/pgx_test?sslmode=disable") if err != nil { return err }
Or a normal pgx connection pool can be established and the database/sql connection can be created through stdlib.OpenFromConnPool(). This allows more control over the connection process (such as TLS), more control over the connection pool, setting an AfterConnect hook, and using both database/sql and pgx interfaces as needed.
connConfig := pgx.ConnConfig{ Host: "localhost", User: "pgx_md5", Password: "secret", Database: "pgx_test", } config := pgx.ConnPoolConfig{ConnConfig: connConfig} pool, err := pgx.NewConnPool(config) if err != nil { return err } db, err := stdlib.OpenFromConnPool(pool) if err != nil { t.Fatalf("Unable to create connection pool: %v", err) }
If the database/sql connection is established through stdlib.OpenFromConnPool then access to a pgx *ConnPool can be regained through db.Driver(). This allows writing a fast path for pgx while preserving compatibility with other drivers and database
if driver, ok := db.Driver().(*stdlib.Driver); ok && driver.Pool != nil { // fast path with pgx } else { // normal path for other drivers and databases }
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func OpenFromConnPool ¶
OpenFromConnPool takes the existing *pgx.ConnPool pool and returns a *sql.DB with pool as the backend. This enables full control over the connection process and configuration while maintaining compatibility with the database/sql interface. In addition, by calling Driver() on the returned *sql.DB and typecasting to *stdlib.Driver a reference to the pgx.ConnPool can be reaquired later. This allows fast paths targeting pgx to be used while still maintaining compatibility with other databases and drivers.
pool connection size must be at least 2.
Types ¶
type Rows ¶
type Rows struct {
// contains filtered or unexported fields
}
TODO - rename to avoid alloc