- stdlib: Bail early if preloading rows.Next() results in rows.Err() (Bas van Beek)
- Sanitize time to microsecond accuracy (Andrew Nicoll)
- Update pgtype to v1.3.0
- Update pgconn to v1.5.0
- Update golang.org/x/crypto for security fix
- Implement "verify-ca" SSL mode
- Update to pgconn v1.4.0
- Fixes QueryRow with empty SQL
- Adds PostgreSQL service file support
- Add Len() to *pgx.Batch (WGH)
- Better logging for individual batch items (Ben Bader)
- Update pgconn to v1.3.2 - better default read buffer size
- Fix race in CopyFrom
- Update puddle to v1.1.0 - fixes possible deadlock when acquire is cancelled
- Update pgconn to v1.3.1 - fixes CopyFrom deadlock when multiple NoticeResponse received during copy
- Update pgtype to v1.2.0
- Add MaxConnIdleTime to pgxpool (Patrick Ellul)
- Add MinConns to pgxpool (Patrick Ellul)
- Fix: stdlib.ReleaseConn closes connections left in invalid state
- Fix Rows.Values panic when unable to decode
- Add Rows.Values support for unknown types
- Add DriverContext support for stdlib (Alex Gaynor)
- Update pgproto3 to v2.0.1 to never return an io.EOF as it would be misinterpreted by database/sql. Instead return io.UnexpectedEOF.
- Update pgconn to v1.2.1 (fixes context cancellation data race introduced in v1.2.0))
- Update pgconn to v1.2.0.
- Update pgtype to v1.1.0.
- Return error instead of panic when wrong number of arguments passed to Exec. (malstoun)
- Fix large objects functionality when PreferSimpleProtocol = true.
- Restore GetDefaultDriver which existed in v3. (Johan Brandhorst)
- Add RegisterConnConfig to stdlib which replaces the removed RegisterDriverConfig from v3.
- Fix dbSavepoint.Begin recursive self call
- Upgrade pgtype to v1.0.2 - fix scan pointer to pointer
- Fix pgxpool Rows.CommandTag() infinite loop / typo
Technically, two changes are breaking changes, but in practice these are extremely unlikely to break existing code.
- Conn.Begin and Conn.BeginTx return a Tx interface instead of the internal dbTx struct. This is necessary for the Conn.Begin method to signature as other methods that begin a transaction.
- Add Conn() to Tx interface. This is necessary to allow code using a Tx to access the *Conn (and pgconn.PgConn) on which the Tx is executing.
- Releasing a busy connection closes the connection instead of returning an unusable connection to the pool
- Do not mutate config.Config.OnNotification in connect
- Fix statement cache cleanup.
- Corrected daterange OID.
- Fix Tx when committing or rolling back multiple times in certain cases.
- Improve documentation.
v4 is a major release with many significant changes some of which are breaking changes. The most significant are included below.
- Simplified establishing a connection with a connection string.
- All potentially blocking operations now require a context.Context. The non-context aware functions have been removed.
- OIDs are hard-coded for known types. This saves the query on connection.
- Context cancellations while network activity is in progress is now always fatal. Previously, it was sometimes recoverable. This led to increased complexity in pgx itself and in application code.
- Go modules are required.
- Errors are now implemented in the Go 1.13 style.
Rows
andTx
are now interfaces.- The connection pool as been decoupled from pgx and is now a separate, included package (github.com/jackc/pgx/v4/pgxpool).
- pgtype has been spun off to a separate package (github.com/jackc/pgtype).
- pgproto3 has been spun off to a separate package (github.com/jackc/pgproto3/v2).
- Logical replication support has been spun off to a separate package (github.com/jackc/pglogrepl).
- Lower level PostgreSQL functionality is now implemented in a separate package (github.com/jackc/pgconn).
- Tests are now configured with environment variables.
- Conn has an automatic statement cache by default.
- Batch interface has been simplified.
- QueryArgs has been removed.