Commit Graph

352 Commits (6c0de9ff3723b1d93e37c52873dc4a8d7160b2c5)

Author SHA1 Message Date
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
Jack Christensen 670e85136f Remove Conn.lastActivityTime
It was only read in one place and that was an optimization to get the
current time. Replaced that usage with time.Now()
2018-11-09 15:33:31 -06:00
Jack Christensen a0d2ce5a0e
Merge pull request #477 from fastest963/cancel
Added option to customize query cancellation and wait for ready
2018-11-08 19:30:15 -06:00
James Hartig 527f404bbc Added option to customize query cancellation and wait for ready
CockroachDB doesn't support 80877102 and doesn't plan to, so instead allow
the user to customize the cancellation with their own function. In our
function, we call CANCEL QUERY with the query_id based on the LocalAddr().

The WaitForReady method can be used by a pool to not put a connection back
in the pool until it is finished cancelled and ready for a new query.
2018-11-05 20:28:59 -05:00
Jack Christensen c10ee2b7bf
Merge pull request #473 from Mic92/unix-sockets
Add path query parameter to support unix sockets
2018-11-05 18:58:19 -06:00