Commit Graph

77 Commits (09371f21d0e825091292aa6c17ac272fec8448a8)

Author SHA1 Message Date
Jack Christensen 09371f21d0 Use JSON format compat with PG and CockroachDB 2021-02-27 10:28:45 -06:00
Jack Christensen fea4bc4318 Use bigint in tests for compat. with CockroachDB 2021-02-27 10:26:14 -06:00
Jack Christensen fb60d0780e Skip unsupported testing functionality on CockroachDB 2021-02-27 10:25:45 -06:00
Jack Christensen 4ebf1d2e0b Passthrough all parameters directly to pgx 2020-07-18 08:44:57 -05: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 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 2bd26ec7fa Expose stdlib.Conn.Conn() to enable database/sql.Conn.Raw() 2020-05-30 13:27:25 -05:00
Jack Christensen a66b09fbd8 Improve simple protocol / text format
Increased data type support for simple protocol. Improved test
coverage of simple protocol. This has the additional advantage of
exercising the text encoders and decoders.
2020-05-08 16:20:15 -05:00
Jack Christensen c3381c6911 Replace t.Fatal with require where possible 2020-05-08 12:47:47 -05:00
Jack Christensen ec53234e86 Rename ensureConnValid to ensureDBValid 2020-05-08 12:26:24 -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 e439372d2a Add multi-row select benchmarks 2020-05-07 22:28:46 -05: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
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 04a0609876 Remove unused pgmock code 2019-08-31 13:13:45 -05:00
Jack Christensen 28d5375b74 Update stdlib for latest pgconn 2019-08-27 18:29:27 -05:00
Jack Christensen 5eae85194e Bring stdlib iso change from v3 2019-08-08 15:35:30 -05:00
Jack Christensen 98f3e64bec Use envvars for stdlib tests 2019-05-20 20:39:45 -05:00
Jack Christensen 29f02807b0 Restore simple protocol support 2019-05-20 20:36:03 -05:00
Jack Christensen efb333df6b Fix go modules
Wow. This is fun. Sure is easy to get modules wrong when upgrading a v2+
project.
2019-04-20 17:41:08 -05:00
Jack Christensen c53c9e6eb5 Remove simple protocol and one round trip query options
It is impossible to guarantee that the a query executed with the simple
protocol will behave the same as with the extended protocol. This is
because the normal pgx path relies on knowing the OID of query
parameters. Without this encoding a value can only be determined by the
value instead of the combination of value and PostgreSQL type. For
example, how should a []int32 be encoded? It might be encoded into a
PostgreSQL int4[] or json.

Removal also simplifies the core query path.

The primary reason for the simple protocol is for servers like PgBouncer
that may not be able to support normal prepared statements. After
further research it appears that issuing a "flush" instead "sync" after
preparing the unnamed statement would allow PgBouncer to work.

The one round trip mode can be better handled with prepared statements.

As a last resort, all original server functionality can still be accessed by
dropping down to PgConn.
2019-04-13 11:39:01 -05:00
Jack Christensen b77f901168 Inital pass at converting stdlib
Multiple tests still failing
2019-04-12 16:57:42 -05:00
Jack Christensen 858d00788a Use extracted packages with Go modules 2019-04-05 10:59:47 -05:00
James Hartig 6d336eccb1 Added LastStmtSent and use it to retry on errors if statement was not sent
Previously, a failed connection could be put back in a pool and when the
next query was attempted it would fail immediately trying to prepare the
query or reset the deadline. It wasn't clear if the Query or Exec call
could safely be retried since there was no way to know where it failed.

You can now call LastQuerySent and if it returns false then you're
guaranteed that the last call to Query(Ex)/Exec(Ex) didn't get far enough
to attempt to send the query. The call can be retried with a new
connection.

This is used in the stdlib to return a ErrBadConn if a network error
occurred and the statement was not attempted.

Fixes #427
2018-11-19 10:44:40 -05:00
Jack Christensen 897e90f353 Type modifier should be int32 not uint32 2018-09-22 07:43:18 -05:00
Valery Krivchikov c844a2402b Call context.WithTimeout cancel function 2018-09-15 13:23:09 +03:00
Jack Christensen 0a483bad9d Merge branch 'implement-opendb' of https://github.com/james-lawrence/pgx into james-lawrence-implement-opendb 2018-07-14 09:57:49 -05:00
Jack Christensen 1fbd6977e1 Use json instead of jsonb for PG 9.3 compat. 2018-04-14 10:02:08 -05:00
Jack Christensen 5297846239 pgtype.JSON(B).Value now returns []byte
Allows scanning jsonb column into *json.RawMessage.

fixes #409
2018-04-14 09:17:56 -05:00
James Lawrence 19a9154d23 implement driver.Connector 2018-04-08 11:12:15 -04:00
Jack Christensen 3707b79782 Add prefer simple protocol support to stdlib
Test code partially taken from james-lawrence
(7471e7f9eb)
2018-01-13 13:46:20 -06:00
ferhat elmas 763deea17e Run gofmt with simplify flag 2017-12-21 23:45:26 +01:00
Timothée Peignier 0f84f73c7b
Add more ColumnType support 2017-08-18 18:22:08 -07:00
Jack Christensen a147e0f3b8 Fix test on Travis 2017-07-22 08:41:13 -05:00
Jack Christensen dfe250c13b Allow either error message 2017-06-02 08:38:27 -05:00
Jack Christensen 07c5b76a24 Allow for either of 2 possible errors from tx context cancelation 2017-05-29 11:39:06 -05:00
Jack Christensen 21d2ed0934 Add mock close 2017-05-22 08:51:23 -05:00
Jack Christensen d1fd222ca5 Add transaction context support 2017-05-20 17:58:19 -05:00
Jack Christensen 2a27fb1817 Remove accidentally committed mock db open 2017-05-20 08:30:47 -05:00
Jack Christensen e5820baebe Add driver.StmtQueryContext support to stdlib.Stmt 2017-05-19 17:31:56 -05:00
Jack Christensen 7f226539a0 Add driver.StmtExecContext support to stdlib.Stmt 2017-05-19 16:18:54 -05:00
Jack Christensen f9cb22e4b8 Add driver.RowsColumnTypeDatabaseTypeName support to stdlib.Rows 2017-05-19 16:05:30 -05:00
Jack Christensen 5ee76a26c8 Add tests for stdlib.Conn.QueryContext 2017-05-19 15:54:55 -05:00
Jack Christensen dbcfa46d8e Add driver.ExecerContext support to stdlib.Conn 2017-05-19 14:57:49 -05:00
Jack Christensen f8d7602270 Add driver.ConnPrepareContext support to stdlib.Conn 2017-05-19 14:31:01 -05:00
Jack Christensen 936cb68866 Add driver.Pinger support to stdlib.Conn 2017-05-19 08:54:08 -05:00
Jack Christensen 479ebdfa19 Add basic pgmock support
Primarily useful for testing pgx itself. Design is still subject to change.
2017-05-13 17:56:54 -05:00
Jack Christensen 6a2a5e28fd Fix issues identified by go vet 2017-05-06 19:48:03 -05:00
Jack Christensen c78d450c19 Add stdlib AcquireConn and ReleaseConn
Also add some documentation.
2017-05-06 19:39:40 -05:00
Jack Christensen 4cbefbb27e Add TxOptions support to stdlib 2017-05-06 16:29:37 -05:00