406 Commits

Author SHA1 Message Date
Jack Christensen
2978a7440a Use pgconn for more conn status 2019-04-19 16:18:47 -05:00
Jack Christensen
ae73ca2da1 Update to more effecient pgconn 2019-04-19 15:55:45 -05:00
Jack Christensen
1b7ff4d774 Remove unused config field 2019-04-13 18:15:02 -05:00
Jack Christensen
a6bdd8fd49 Hard code standard PostgreSQL types
Instead of needing to instrospect the database on connection preload the
standard OID / type map. Types from extensions (like hstore) and custom
types can be registered by the application developer. Otherwise, they
will be treated as strings.
2019-04-13 16:45:52 -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
5a374c467f Fix Exec prepared statement with 0 args 2019-04-13 08:37:15 -05:00
Jack Christensen
ec0bae649a Fix Ping 2019-04-12 21:42:16 -05:00
Jack Christensen
b78ecf26dc Fix encode empty value 2019-04-12 21:23:57 -05:00
Jack Christensen
3901f3ef88 Add Conn.PgConn escape hatch 2019-04-12 16:57:25 -05:00
Jack Christensen
3497f0e8f9 Expose ParseConfig 2019-04-12 16:56:54 -05:00
Jack Christensen
938ee9f434 Rows and Row are now interfaces 2019-04-11 17:58:16 -05:00
Jack Christensen
3e87a8b363 Conn.Close takes context 2019-04-10 14:56:14 -05:00
Jack Christensen
2f948c5249 Remove unused code 2019-04-10 14:33:35 -05:00
Jack Christensen
acd15cf589 Remove some obsolete context handling 2019-04-10 14:25:06 -05:00
Jack Christensen
7718ee6207 Remove Ex versions of Query and QueryRow
Always require context and prepend options to arguments if necessary.
2019-04-10 12:12:22 -05:00
Jack Christensen
b69179cebb Remove Conn.Listen and Conn.Unlisten
Use Conn.Exec instead to listen or unlisten.
2019-04-10 11:21:40 -05:00
Jack Christensen
ec10fdde8b Core of new connection pool 2019-04-09 21:32:01 -05:00
Jack Christensen
d619d8913e Remove cancel query logic 2019-04-05 11:04:57 -05:00
Jack Christensen
858d00788a Use extracted packages with Go modules 2019-04-05 10:59:47 -05:00
Jack Christensen
d287776d97 Use LogLevel type consistently 2019-03-23 11:32:38 -05:00
Jack Christensen
bd181764bf Remove ensureConnectionReadyForQuery 2019-02-02 13:00:31 -06:00
Jack Christensen
577bc57ba5 Remove sendSimpleQuery
In preparation for removing ready for query tracking.
2019-02-02 12:55:12 -06:00
Jack Christensen
1127f31cb3 Remove sendPreparedQuery and simplify sendSimpleQuery 2019-02-02 12:47:12 -06:00
Jack Christensen
52e8d0d679 Remove *Conn.sendQuery 2019-02-02 12:45:10 -06:00
Jack Christensen
1ccd6527f5 Remove rxMsg 2019-02-02 12:41:44 -06:00
Jack Christensen
d3a2c1c107 Partial conversion of pgx to use pgconn 2019-01-26 16:46:30 -06:00
Jack Christensen
c4050134cc Begin delegation of Prepare to pgconn 2019-01-12 12:19:12 -06:00
Jack Christensen
1257b89df7 Update main pgx package to compile with new pgconn 2019-01-05 19:00:41 -06:00
Jack Christensen
e78fd95296 Fix switching CommandTag back to string 2019-01-05 18:53:07 -06:00
Jack Christensen
19a8df16b6 Move notice handling to pgconn 2019-01-02 13:15:26 -06:00
Jack Christensen
89c3d8af5d Remove ExecEx 2019-01-02 12:52:37 -06:00
Jack Christensen
12857ad05b Implement pgx.Conn.Exec in terms of pgconn.PgConn.Exec 2019-01-02 12:32:36 -06:00
Jack Christensen
7f9540438c pgx uses pgconn.CommandTag instead of own definition 2019-01-01 16:55:48 -06:00
Jack Christensen
356a6c43d2 Avoid allocating strings in common message types 2019-01-01 13:47:37 -06:00
Jack Christensen
be7a7b44dc Access PID and SecretKey via method 2018-12-31 18:03:55 -06:00
Jack Christensen
1ff8024df9 Access underlying net.Conn via method
Also remove some dead code.
2018-12-31 18:00:08 -06:00
Jack Christensen
af2fc36c27 Remove code moved to pgconn 2018-12-31 17:52:11 -06:00
Jack Christensen
378ccb8945 PG error type is *pgconn.PgError 2018-12-31 17:46:56 -06:00
Jack Christensen
103ab963eb pgx uses pgconn CancelRequest 2018-12-31 17:37:07 -06:00
Jack Christensen
084423ae69 Add context to potentially blocking methods 2018-12-31 17:17:11 -06:00
Jack Christensen
b3c8a73dc7 Restructure connect process
- Moved lots of connection logic to pgconn from pgx
- Extracted pgpassfile package
2018-12-30 16:55:56 -06:00
Jack Christensen
9990e4894d Rename base package to pgconn 2018-12-28 17:09:56 -06:00
Jack Christensen
44de49ffa1 Rename runtime params to parameter status 2018-12-28 12:25:59 -06:00
Jack Christensen
b63370e5d5 Rename base.Conn to base.PgConn
- pgx.Conn embeds base.PgConn privately
- Add pgx.Conn.ParameterStatus
2018-12-28 12:16:50 -06:00
Jack Christensen
a9a178bc98 Merge branch 'master' into v4-experimental 2018-12-01 11:17:30 -06:00
Jack Christensen
f25025a580
Merge pull request #486 from yobert/master
Fix two minor grammatical errors in source documentation
2018-12-01 10:38:57 -06:00
Joel Jensen
41b714110a Fix two minor grammatical errors in source documentation 2018-11-27 16:40:46 -07: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
65e69c5580 Initial base.Connect extraction 2018-11-12 18:08:46 -06:00
Jack Christensen
2e72ca854a First extraction of base.Conn 2018-11-10 18:48:43 -06:00