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 }
A DriverConfig can be used to further configure the connection process. This allows configuring TLS configuration, setting a custom dialer, logging, and setting an AfterConnect hook.
driverConfig := stdlib.DriverConfig{ ConnConfig: pgx.ConnConfig{ Logger: logger, }, AfterConnect: func(c *pgx.Conn) error { // Ensure all connections have this temp table available _, err := c.Exec("create temporary table foo(...)") return err }, } stdlib.RegisterDriverConfig(&driverConfig) db, err := sql.Open("pgx", driverConfig.ConnectionString("postgres://pgx_md5:secret@127.0.0.1:5432/pgx_test")) if err != nil { return err }
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)
AcquireConn and ReleaseConn acquire and release a *pgx.Conn from the standard database/sql.DB connection pool. This allows operations that must be performed on a single connection, but should not be run in a transaction or to use pgx specific functionality.
conn, err := stdlib.AcquireConn(db) if err != nil { return err } defer stdlib.ReleaseConn(db, conn) // do stuff with pgx.Conn
It also can be used to enable a fast path for pgx while preserving compatibility with other drivers and database.
conn, err := stdlib.AcquireConn(db) if err == nil { // fast path with pgx // ... // release conn when done stdlib.ReleaseConn(db, conn) } else { // normal path for other drivers and databases }
Index ¶
- Variables
- func AcquireConn(db *sql.DB) (*pgx.Conn, error)
- func OpenDB(config pgx.ConnConfig, opts ...OptionOpenDB) *sql.DB
- func OpenDBFromPool(pool *pgx.ConnPool, opts ...OptionOpenDBFromPool) *sql.DB
- func RegisterDriverConfig(c *DriverConfig)
- func ReleaseConn(db *sql.DB, conn *pgx.Conn) error
- func UnregisterDriverConfig(c *DriverConfig)
- 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) Close() error
- func (c *Conn) Exec(query string, argsV []driver.Value) (driver.Result, error)
- 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) Query(query string, argsV []driver.Value) (driver.Rows, error)
- func (c *Conn) QueryContext(ctx context.Context, query string, argsV []driver.NamedValue) (driver.Rows, error)
- type Driver
- type DriverConfig
- type OptionOpenDB
- type OptionOpenDBFromPool
- 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 OpenDB ¶
func OpenDB(config pgx.ConnConfig, opts ...OptionOpenDB) *sql.DB
func OpenDBFromPool ¶
func OpenDBFromPool(pool *pgx.ConnPool, opts ...OptionOpenDBFromPool) *sql.DB
OpenDBFromPool create a sql.DB connection from a pgx.ConnPool
func RegisterDriverConfig ¶
func RegisterDriverConfig(c *DriverConfig)
RegisterDriverConfig registers a DriverConfig for use with Open.
func UnregisterDriverConfig ¶
func UnregisterDriverConfig(c *DriverConfig)
UnregisterDriverConfig removes a DriverConfig registration.
Types ¶
type Conn ¶
type Conn struct {
// contains filtered or unexported fields
}
func (*Conn) ExecContext ¶
func (*Conn) PrepareContext ¶
type Driver ¶
type Driver struct {
// contains filtered or unexported fields
}
func GetDefaultDriver ¶
func GetDefaultDriver() *Driver
GetDefaultDriver return the driver initialize in the init function and used when register pgx driver
type DriverConfig ¶
type DriverConfig struct { pgx.ConnConfig AfterConnect func(*pgx.Conn) error // function to call on every new connection // contains filtered or unexported fields }
func (*DriverConfig) ConnectionString ¶
func (c *DriverConfig) ConnectionString(original string) string
ConnectionString encodes the DriverConfig into the original connection string. DriverConfig must be registered before calling ConnectionString.
type OptionOpenDB ¶
type OptionOpenDB func(*connector)
OptionOpenDB options for configuring the driver when opening a new db pool.
func OptionAfterConnect ¶
func OptionAfterConnect(ac func(*pgx.Conn) error) OptionOpenDB
OptionAfterConnect provide a callback for after connect.
type OptionOpenDBFromPool ¶
type OptionOpenDBFromPool func(*poolConnector)
OptionOpenDB options for configuring the driver when opening a new db pool.
func OptionPreferSimpleProtocol ¶
func OptionPreferSimpleProtocol(preferSimpleProtocol bool) OptionOpenDBFromPool
OptionAfterConnect provide a callback for after connect.
type Rows ¶
type Rows struct {
// contains filtered or unexported fields
}
func (*Rows) ColumnTypeDatabaseTypeName ¶
ColumnTypeDatabaseTypeName return the database system type name.
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
}