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 from a DSN string.
db, err := sql.Open("pgx", "user=postgres password=secret host=localhost port=5432 database=pgx_test sslmode=disable") if err != nil { return err }
Or a pgx.ConnConfig can be used to set configuration not accessible via connection string. In this case the pgx.ConnConfig must first be registered with the driver. This registration returns a connection string which is used with sql.Open.
connConfig, _ := pgx.ParseConfig(os.Getenv("DATABASE_URL")) connConfig.Logger = myLogger connStr := stdlib.RegisterConnConfig(connConfig) db, _ := sql.Open("pgx", connStr)
pgx uses standard PostgreSQL positional parameters in queries. e.g. $1, $2. It does not support named parameters.
db.QueryRow("select * from users where id=$1", userID)
In Go 1.13 and above (*sql.Conn) Raw() can be used to get a *pgx.Conn from the standard database/sql.DB connection pool. This allows operations that use pgx specific functionality.
// Given db is a *sql.DB conn, err := db.Conn(context.Background()) if err != nil { // handle error from acquiring connection from DB pool } err = conn.Raw(func(driverConn interface{}) error { conn := driverConn.(*stdlib.Conn).Conn() // conn is a *pgx.Conn // Do pgx specific stuff with conn conn.CopyFrom(...) return nil }) if err != nil { // handle error that occurred while using *pgx.Conn }
Index ¶
- Variables
- func AcquireConn(db *sql.DB) (*pgx.Conn, error)
- func GetConnector(config pgx.ConnConfig, opts ...OptionOpenDB) driver.Connector
- func GetDefaultDriver() driver.Driver
- func OpenDB(config pgx.ConnConfig, opts ...OptionOpenDB) *sql.DB
- func RandomizeHostOrderFunc(ctx context.Context, connConfig *pgx.ConnConfig) error
- func RegisterConnConfig(c *pgx.ConnConfig) string
- func ReleaseConn(db *sql.DB, conn *pgx.Conn) error
- func UnregisterConnConfig(connStr string)
- type Conn
- func (c *Conn) Begin() (driver.Tx, error)
- func (c *Conn) BeginTx(ctx context.Context, opts driver.TxOptions) (driver.Tx, error)
- func (c *Conn) CheckNamedValue(*driver.NamedValue) error
- func (c *Conn) Close() error
- func (c *Conn) Conn() *pgx.Conn
- func (c *Conn) ExecContext(ctx context.Context, query string, argsV []driver.NamedValue) (driver.Result, error)
- func (c *Conn) Ping(ctx context.Context) error
- func (c *Conn) Prepare(query string) (driver.Stmt, error)
- func (c *Conn) PrepareContext(ctx context.Context, query string) (driver.Stmt, error)
- func (c *Conn) QueryContext(ctx context.Context, query string, argsV []driver.NamedValue) (driver.Rows, error)
- func (c *Conn) ResetSession(ctx context.Context) error
- type Driver
- type OptionOpenDB
- type Rows
- func (r *Rows) Close() error
- func (r *Rows) ColumnTypeDatabaseTypeName(index int) string
- func (r *Rows) ColumnTypeLength(index int) (int64, bool)
- func (r *Rows) ColumnTypePrecisionScale(index int) (precision, scale int64, ok bool)
- func (r *Rows) ColumnTypeScanType(index int) reflect.Type
- func (r *Rows) Columns() []string
- func (r *Rows) Next(dest []driver.Value) error
- type Stmt
- func (s *Stmt) Close() error
- func (s *Stmt) Exec(argsV []driver.Value) (driver.Result, error)
- func (s *Stmt) ExecContext(ctx context.Context, argsV []driver.NamedValue) (driver.Result, error)
- func (s *Stmt) NumInput() int
- func (s *Stmt) Query(argsV []driver.Value) (driver.Rows, error)
- func (s *Stmt) QueryContext(ctx context.Context, argsV []driver.NamedValue) (driver.Rows, error)
Constants ¶
This section is empty.
Variables ¶
var ErrNotPgx = errors.New("not pgx *sql.DB")
Functions ¶
func AcquireConn ¶
AcquireConn acquires a *pgx.Conn from database/sql connection pool. It must be released with ReleaseConn.
In Go 1.13 this functionality has been incorporated into the standard library in the db.Conn.Raw() method.
func GetConnector ¶
func GetConnector(config pgx.ConnConfig, opts ...OptionOpenDB) driver.Connector
func GetDefaultDriver ¶
GetDefaultDriver returns the driver initialized in the init function and used when the pgx driver is registered.
func OpenDB ¶
func OpenDB(config pgx.ConnConfig, opts ...OptionOpenDB) *sql.DB
func RandomizeHostOrderFunc ¶
RandomizeHostOrderFunc is a BeforeConnect hook that randomizes the host order in the provided connConfig, so that a new host becomes primary each time. This is useful to distribute connections for multi-master databases like CockroachDB. If you use this you likely should set https://golang.org/pkg/database/sql/#DB.SetConnMaxLifetime as well to ensure that connections are periodically rebalanced across your nodes.
func RegisterConnConfig ¶
func RegisterConnConfig(c *pgx.ConnConfig) string
RegisterConnConfig registers a ConnConfig and returns the connection string to use with Open.
func ReleaseConn ¶
ReleaseConn releases a *pgx.Conn acquired with AcquireConn.
func UnregisterConnConfig ¶
func UnregisterConnConfig(connStr string)
UnregisterConnConfig removes the ConnConfig registration for connStr.
Types ¶
type Conn ¶
type Conn struct {
// contains filtered or unexported fields
}
func (*Conn) CheckNamedValue ¶
func (c *Conn) CheckNamedValue(*driver.NamedValue) error
func (*Conn) ExecContext ¶
func (*Conn) PrepareContext ¶
func (*Conn) QueryContext ¶
type OptionOpenDB ¶
type OptionOpenDB func(*connector)
OptionOpenDB options for configuring the driver when opening a new db pool.
func OptionAfterConnect ¶
func OptionAfterConnect(ac func(context.Context, *pgx.Conn) error) OptionOpenDB
OptionAfterConnect provides a callback for after connect.
func OptionBeforeConnect ¶
func OptionBeforeConnect(bc func(context.Context, *pgx.ConnConfig) error) OptionOpenDB
OptionBeforeConnect provides a callback for before connect. It is passed a shallow copy of the ConnConfig that will be used to connect, so only its immediate members should be modified.
func OptionResetSession ¶
func OptionResetSession(rs func(context.Context, *pgx.Conn) error) OptionOpenDB
OptionResetSession provides a callback that can be used to add custom logic prior to executing a query on the connection if the connection has been used before. If ResetSessionFunc returns ErrBadConn error the connection will be discarded.
type Rows ¶
type Rows struct {
// contains filtered or unexported fields
}
func (*Rows) ColumnTypeDatabaseTypeName ¶
ColumnTypeDatabaseTypeName returns the database system type name. If the name is unknown the OID is returned.
func (*Rows) ColumnTypeLength ¶
ColumnTypeLength returns the length of the column type if the column is a variable length type. If the column is not a variable length type ok should return false.
func (*Rows) ColumnTypePrecisionScale ¶
ColumnTypePrecisionScale should return the precision and scale for decimal types. If not applicable, ok should be false.
func (*Rows) ColumnTypeScanType ¶
ColumnTypeScanType returns the value type that can be used to scan types into.
type Stmt ¶
type Stmt struct {
// contains filtered or unexported fields
}