Commit Graph

132 Commits (31ec18cc650b3fc2320563b9801f42a1b1cef45e)

Author SHA1 Message Date
Jack Christensen 03da9fcec6 Check conn liveness before using when idle for more than 1 second
Implemented in pgxpool.Pool and database/sql.

https://github.com/jackc/pgx/issues/672
2022-06-25 17:58:53 -05:00
Jack Christensen e94cf1fbaa Remove AcquireConn and ReleaseConn
Superseded by (*sql.Conn) Raw()
2022-04-16 14:07:59 -05:00
Jack Christensen fccaebc93d Add pgtype.Map.SQLScanner
This enables compatibility with database/sql for types that cannot
implement Scan themselves.
2022-04-16 13:38:27 -05:00
Jack Christensen f14fb3d692 Replace interface{} with any 2022-04-09 09:12:55 -05:00
Jack Christensen 1f2f239d09 Renamed pgtype.ConnInfo to pgtype.Map 2022-02-21 09:13:09 -06:00
Jack Christensen bda10b2ec9 Rename pgtype.DataType to pgtype.Type 2022-02-21 09:01:48 -06:00
Jack Christensen 4b6d527b0b Merge branch 'master' into v5-dev 2022-02-12 09:22:37 -06:00
Isabel Jimenez 71da600c3a exposing stdlib DB connector 2022-02-12 09:11:56 -06:00
Jack Christensen 5ed95dcd1c Expose wrap functions on ConnInfo
- Remove rarely used ScanPlan.Scan arguments
- Plus other refactorings and fixes that fell out of this change.
- Plus rows Scan now handles checking for changed type.
2022-01-22 17:50:19 -06:00
Jack Christensen 8b27725f5b Convert json and jsonb to Codec 2022-01-18 16:04:25 -06:00
Jack Christensen eec82c9433 Replace CID, OID, OIDValue, and XID with Uint32 2022-01-09 00:35:49 -06:00
Jack Christensen 72cc95e4dd Bump module version to v5 2021-12-11 13:29:03 -06:00
Jack Christensen 0e293b966c Finish import of pgconn 2021-12-04 14:06:57 -06:00
Jack Christensen 7e13db4538 Finish import of pgtype repo
Fix some tests that broke by merging repos
Tweak readme wording
2021-12-04 13:45:57 -06:00
Dmytro Haranzha cabb58cc40 ResetSession hook is called before a connection is reused from pool for another query. 2021-06-12 13:48:31 -05:00
dkinder 00feeaa5c9 stdlib: style nit in RandomizeHostOrderFunc 2021-05-10 08:17:53 -05:00
dkinder a8020a21e8 stdlib: add OptionBeforeConnect and randomizer
Fixes https://github.com/jackc/pgconn/issues/71
2021-05-10 08:17:53 -05:00
Andrew Kimball 3ab8941921 stdlib: Do not reuse ConnConfig strings
Previously, stdlib.RegisterConnConfig would sometimes reuse the same connection
string for different ConnConfig options (specifically, it happened when a connection
was open and then closed, and then a new, different connection was opened). This
behavior interferes with callers that expect that two connections with the same data
source name are connecting to the same backend database in the same way.

This fix updates stdlib.RegisterConnConfig to use an incrementing sequence
counter to uniquify all returned connection strings.

Fixes #947
2021-04-03 10:52:37 -05:00
Jonathan Amsterdam 88ede6efb5 stdlib: implement Conn.ResetSession
This prevents closed connections from being returned
by `database.sql.DB.Conn`.

Fixes #974.
2021-03-26 10:25:07 -05:00
Jack Christensen a49f4bb135 Use errors instead of golang.org/x/xerrors 2021-03-25 09:55:12 -04:00
Jack Christensen e93da6c744 Fix ignored deferred error with database/sql QueryRow
fixes #958
2021-03-13 06:52:58 -06:00
Jack Christensen 82bac82213 stdlib: consider any Ping failure as fatal
refs #672
2020-12-03 19:41:03 -06:00
Jack Christensen 4ebf1d2e0b Passthrough all parameters directly to pgx 2020-07-18 08:44:57 -05:00
Jack Christensen c8a9da960c Revert "stdlib: close connection on Tx commit or rollback that doesn't end Tx"
This reverts commit 2583134306.

This fix should actually be on the main Tx implementation.
2020-07-13 22:48:28 -05:00
Jack Christensen 2583134306 stdlib: close connection on Tx commit or rollback that doesn't end Tx
refs #787
2020-07-13 22:40:42 -05:00
zikaeroh 84510c4590 Cache column names in stdlib Rows 2020-06-29 10:20:13 -07:00
Jack Christensen bf47a3d0a4 Fix stdlib decoding error with certain order and combination of fields
fixes #781
2020-06-29 09:38:53 -05:00
Jack Christensen 4e50623069 Fix stdlib number size conversions 2020-06-06 09:54:19 -05:00
Jack Christensen 81140f6c27 Improve stdlib performance with large results 2020-06-06 09:49:14 -05:00
Jack Christensen 8dee3382f7 Improve unknown type support for database/sql
- Return unknown type OID instead of empty string for type name.
- ScanType is string instead of empty interface for unknown types.

fixes #759
2020-05-30 13:27:25 -05:00
Jack Christensen 837704dc7d Update stdlib docs to point to Conn.Raw instead of AcquireConn 2020-05-30 13:27:25 -05:00
Jack Christensen 2bd26ec7fa Expose stdlib.Conn.Conn() to enable database/sql.Conn.Raw() 2020-05-30 13:27:25 -05:00
Jack Christensen 64789acf46
Merge pull request #734 from georgysavva/stdlib-timeouts
Improve Stdlib context timeouts
2020-05-13 07:45:18 -05:00
Jack Christensen c44cda4bb4 Clean up old Go 1.10 build tags
pgx requires Go modules which requires at least Go 1.11 so there is no
use in build tags to support older Go versions.
2020-05-08 12:18:09 -05:00
Jack Christensen c03ac1519e Improve stdlib performance with large result sets
In a hot path type assertions are expensive. Cache the already correctly
typed interfaces. ~20% improvement with 1000 rows.

Before:

jack@glados ~/dev/pgx/stdlib ±master » PGX_BENCH_SELECT_ROWS_COUNTS='1 10 1000' got ./... -bench=SelectRows -benchmem
goos: darwin
goarch: amd64
pkg: github.com/jackc/pgx/v4/stdlib
BenchmarkSelectRowsScanSimple/1_rows-16         	   21465	     55060 ns/op	    1679 B/op	      40 allocs/op
BenchmarkSelectRowsScanSimple/10_rows-16        	   16692	     71176 ns/op	    3827 B/op	     148 allocs/op
BenchmarkSelectRowsScanSimple/1000_rows-16      	     800	   1369547 ns/op	  248855 B/op	   12938 allocs/op
BenchmarkSelectRowsScanNull/1_rows-16           	   20306	     57883 ns/op	    1940 B/op	      54 allocs/op
BenchmarkSelectRowsScanNull/10_rows-16          	   15942	     74729 ns/op	    4294 B/op	     171 allocs/op
BenchmarkSelectRowsScanNull/1000_rows-16        	     829	   1326788 ns/op	  261291 B/op	   13051 allocs/op
PASS
ok  	github.com/jackc/pgx/v4/stdlib	10.429s

After:

jack@glados ~/dev/pgx/stdlib ±master » PGX_BENCH_SELECT_ROWS_COUNTS='1 10 1000' got ./... -bench=SelectRows -benchmem
goos: darwin
goarch: amd64
pkg: github.com/jackc/pgx/v4/stdlib
BenchmarkSelectRowsScanSimple/1_rows-16         	   21327	     55097 ns/op	    2127 B/op	      43 allocs/op
BenchmarkSelectRowsScanSimple/10_rows-16        	   16724	     69496 ns/op	    4276 B/op	     151 allocs/op
BenchmarkSelectRowsScanSimple/1000_rows-16      	    1009	   1124573 ns/op	  250037 B/op	   12941 allocs/op
BenchmarkSelectRowsScanNull/1_rows-16           	   20577	     58117 ns/op	    2396 B/op	      57 allocs/op
BenchmarkSelectRowsScanNull/10_rows-16          	   16402	     72533 ns/op	    4750 B/op	     174 allocs/op
BenchmarkSelectRowsScanNull/1000_rows-16        	    1010	   1161437 ns/op	  261735 B/op	   13054 allocs/op
PASS
ok  	github.com/jackc/pgx/v4/stdlib	10.363s
2020-05-08 00:06:42 -05:00
georgysavva e27a6e71b5 Wrap stdlib Conn.Close() and Stmt.Close() with default 5 seconds timeout. 2020-05-02 16:57:39 +03:00
georgysavva 7738775417 Include context into stdlib.wrapTx{} in order to propagate it to the underlying pgx.Tx.Commit() and Rollback() methods. 2020-04-02 15:30:55 +03:00
Bas van Beek e75d315079 bail early if preloading rows.Next() results in rows.Err() 2020-03-17 19:50:23 +01:00
Jack Christensen 77c1076d39 stdlib.ReleaseConn closes connections left in invalid state
If a connection is in a transaction or has an open result set then
close the connection when returning it to database/sql. When next
database/sql attempts to use it the connection will return
driver.ErrBadConn and database/sql will remove it from the pool.

fixes #673
2020-02-01 12:00:26 -06:00
Alex Gaynor efbbde0487 Fixes #664 -- implement DriverContext for stdlib 2020-01-23 14:19:40 -06:00
Johan Brandhorst d75362f396 Add back GetDefaultDriver
This method is useful when it is necessary
to wrap the pgx stdlib driver, for example to
add tracing and metrics.

Fixes #645
2019-12-07 10:19:51 +00:00
Jack Christensen 69e9c33daf Add RegisterConnConfig to stdlib
This restored functionality lost in the v3 to v4 transition when
RegisterDriverConfig was removed.

fixes #617
2019-11-16 11:06:57 -06:00
Jack Christensen 76348773bd Make Conn.ConnInfo private 2019-09-10 18:09:21 -05:00
Jack Christensen 28d5375b74 Update stdlib for latest pgconn 2019-08-27 18:29:27 -05:00
Jack Christensen 169632e028 Refactor format code choosing 2019-08-25 00:38:50 -05:00
Jack Christensen a262126b5c Replace IsAlive with IsClosed
IsAlive is ambiguous because the connection may be dead and we do not
know it. It implies the possibility of a ping. IsClosed is clearer -- it
does not promise the connection is alive only that it hasn't been
closed.
2019-08-24 23:49:59 -05:00
Jack Christensen b2b949afa4 Rename BeginEx to BeginTx and update docs 2019-08-24 20:50:24 -05:00
Jack Christensen 3675337e5b Update for rename of pgconn.PreparedStatementDescription 2019-08-24 20:44:56 -05:00
Jack Christensen 31705e586a Use pgconn.PreparedStatementDescription directly
Instead of having similar pgx.PreparedStatement
2019-08-24 14:29:05 -05:00
Jack Christensen 6972a57421 pgtype.OID type should only be used for scanning and encoding values
It was a mistake to use it in other contexts. This made interop
difficult between pacakges that depended on pgtype such as pgx and
packages that did not like pgconn and pgproto3. In particular this was
awkward for prepared statements.

This is preparation for removing pgx.PreparedStatement in favor of
pgconn.PreparedStatement.
2019-08-24 13:55:57 -05:00