Skip to content
master
Switch branches/tags
Code

Latest commit

…d make rows.Next return it (#1064)

* add reproducer for issue 1062

see #1062

* Keep track of an error for a connection.

Instead of just whether the connection is ErrBadConn. Often times, the error
will still be ErrBadConn. But for expired/cancelled contexts, it will be the
error for the context. Most functions still return ErrBadConn per the
database/sql/driver contract ("ErrBadConn should only be returned from [...] a
query method"). For rows.Next() we return the context-related error.

The database/sql/driver contract doesn't look very precise. Is Next a "query
method" and should database/sql handle ErrBadConns when Next returns them?

Do we have more functions that should return the canceled-context error
message?

* in test for QueryRowContext, fail for all unexpected errors, not just for the one unexpected error

* in TestContextCancel*, accept context.Canceled as valid error

* explicitly test for driver.ErrBadConn in test that breaks the connection

feedback from otan

* move the mutex-protected data in a struct with the mutex, and fix an unsafe usage.

there may be unsafeness in this file.

feedback from otan
8446d16

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
Jul 20, 2019
Jul 20, 2019
Jul 2, 2019
Jun 8, 2020

pq - A pure Go postgres driver for Go's database/sql package

GoDoc

Install

go get github.com/lib/pq

Features

  • SSL
  • Handles bad connections for database/sql
  • Scan time.Time correctly (i.e. timestamp[tz], time[tz], date)
  • Scan binary blobs correctly (i.e. bytea)
  • Package for hstore support
  • COPY FROM support
  • pq.ParseURL for converting urls to connection strings for sql.Open.
  • Many libpq compatible environment variables
  • Unix socket support
  • Notifications: LISTEN/NOTIFY
  • pgpass support
  • GSS (Kerberos) auth

Tests

go test is used for testing. See TESTS.md for more details.

Status

This package is currently in maintenance mode, which means:

  1. It generally does not accept new features.
  2. It does accept bug fixes and version compatability changes provided by the community.
  3. Maintainers usually do not resolve reported issues.
  4. Community members are encouraged to help each other with reported issues.

For users that require new features or reliable resolution of reported bugs, we recommend using pgx which is under active development.