Categorygithub.com/segmentio/pgx
modulepackage
2.7.1+incompatible
Repository: https://github.com/segmentio/pgx.git
Documentation: pkg.go.dev

# README

Pgx

Pgx is a a pure Go database connection library designed specifically for PostgreSQL. Pgx is different from other drivers such as pq because, while it can operate as a database/sql compatible driver, pgx is primarily intended to be used directly. It offers a native interface similar to database/sql that offers better performance and more features.

Features

Pgx supports many additional features beyond what is available through database/sql.

  • Listen / notify
  • Transaction isolation level control
  • Full TLS connection control
  • Binary format support for custom types (can be much faster)
  • Logging support
  • Configurable connection pool with after connect hooks to do arbitrary connection setup
  • PostgreSQL array to Go slice mapping for integers, floats, and strings
  • Hstore support
  • JSON and JSONB support
  • Maps inet and cidr PostgreSQL types to net.IPNet
  • Large object support
  • Null mapping to Null* struct or pointer to pointer.

Performance

Pgx performs roughly equivalent to pq and go-pg for selecting a single column from a single row, but it is substantially faster when selecting multiple entire rows (6893 queries/sec for pgx vs. 3968 queries/sec for pq -- 73% faster).

See this gist for the underlying benchmark results or checkout go_db_bench to run tests for yourself.

database/sql

Import the github.com/jackc/pgx/stdlib package to use pgx as a driver for database/sql. It is possible to retrieve a pgx connection from database/sql on demand. This allows using the database/sql interface in most places, but using pgx directly when more performance or PostgreSQL specific features are needed.

Documentation

pgx includes extensive documentation in the godoc format. It is viewable online at godoc.org.

Testing

pgx supports multiple connection and authentication types. Setting up a test environment that can test all of them can be cumbersome. In particular, Windows cannot test Unix domain socket connections. Because of this pgx will skip tests for connection types that are not configured.

Normal Test Environment

To setup the normal test environment run the following SQL:

create user pgx_md5 password 'secret';
create database pgx_test;

Connect to database pgx_test and run:

create extension hstore;

Next open connection_settings_test.go.example and make a copy without the .example. If your PostgreSQL server is accepting connections on 127.0.0.1, then you are done.

Connection and Authentication Test Environment

Complete the normal test environment setup and also do the following.

Run the following SQL:

create user pgx_none;
create user pgx_pw password 'secret';

Add the following to your pg_hba.conf:

If you are developing on Unix with domain socket connections:

local  pgx_test  pgx_none  trust
local  pgx_test  pgx_pw    password
local  pgx_test  pgx_md5   md5

If you are developing on Windows with TCP connections:

host  pgx_test  pgx_none  127.0.0.1/32 trust
host  pgx_test  pgx_pw    127.0.0.1/32 password
host  pgx_test  pgx_md5   127.0.0.1/32 md5

Version Policy

pgx follows semantic versioning for the documented public API. master branch tracks the latest stable branch (v2). Consider using import "gopkg.in/jackc/pgx.v2" to lock to the v2 branch or use a vendoring tool such as godep.

# Packages

No description provided by the author
Package stdlib is the compatibility layer from pgx to database/sql.

# Functions

Connect establishes a connection with a PostgreSQL server using config.
Converts log level string to constant Valid levels: trace debug info warn error none.
NewConnPool creates a new ConnPool.
ParseDSN parses a database DSN (data source name) into a ConnConfig e.g.
ParseEnvLibpq parses the environment like libpq does into a ConnConfig See http://www.postgresql.org/docs/9.4/static/libpq-envars.html for details on the meaning of environment variables.
ParseHstore parses the string representation of an hstore column (the same you would get from an ordinary SELECT) into two slices of keys and values.
ParseURI parses a database URI into ConnConfig Query parameters not used by the connection process are parsed into ConnConfig.RuntimeParams.

# Constants

PostgreSQL format codes.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
No description provided by the author
No description provided by the author
The values for log levels are chosen such that the zero value means that no log level was specified and we can default to LogLevelDebug to preserve the behavior that existed prior to log level introduction.
The values for log levels are chosen such that the zero value means that no log level was specified and we can default to LogLevelDebug to preserve the behavior that existed prior to log level introduction.
The values for log levels are chosen such that the zero value means that no log level was specified and we can default to LogLevelDebug to preserve the behavior that existed prior to log level introduction.
The values for log levels are chosen such that the zero value means that no log level was specified and we can default to LogLevelDebug to preserve the behavior that existed prior to log level introduction.
The values for log levels are chosen such that the zero value means that no log level was specified and we can default to LogLevelDebug to preserve the behavior that existed prior to log level introduction.
The values for log levels are chosen such that the zero value means that no log level was specified and we can default to LogLevelDebug to preserve the behavior that existed prior to log level introduction.
PostgreSQL oids for common types.
Transaction isolation levels.
Transaction isolation levels.
Transaction isolation levels.
Transaction isolation levels.
PostgreSQL oids for common types.
PostgreSQL format codes.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.
PostgreSQL oids for common types.

# Variables

DefaultTypeFormats maps type names to their default requested format (text or binary).
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Structs

Conn is a PostgreSQL connection handle.
ConnConfig contains all the options used to establish a connection.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
A LargeObject is a large object stored on the server.
LargeObjects is a structure used to access the large objects API.
No description provided by the author
NullBool represents an bool that may be null.
NullFloat32 represents an float4 that may be null.
NullFloat64 represents an float8 that may be null.
NullHstore represents an hstore column that can be null or have null values associated with its keys.
NullInt16 represents an smallint that may be null.
NullInt32 represents an integer that may be null.
NullInt64 represents an bigint that may be null.
NullString represents an string that may be null.
NullTime represents an time.Time that may be null.
PgError represents an error reported by the PostgreSQL server.
No description provided by the author
No description provided by the author
Rows is the result set returned from *Conn.Query.
Tx represents a database transaction.
ValueReader is used by the Scanner interface to decode values.
WrifeBuf is used build messages to send to the PostgreSQL server.

# Interfaces

Encoder is an interface used to encode values for transmission to the PostgreSQL server.
Logger is the interface used to get logging from pgx internals.
Scanner is an interface used to decode values from the PostgreSQL server.

# Type aliases

No description provided by the author
No description provided by the author
Hstore represents an hstore column.
No description provided by the author
No description provided by the author
No description provided by the author
QueryArgs is a container for arguments to an SQL query.
Row is a convenience wrapper over Rows that is returned by QueryRow.
No description provided by the author