Jack Christensen
863b41aaa6
Remove unused sentinal error
2019-08-27 18:29:38 -05:00
Jack Christensen
8170eaf401
Update to latest version of pgconn
...
- Also remove a few tests of functionality that is handled by pgconn
2019-08-27 18:22:34 -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
64b07f0d66
Batch uses statement cache.
...
This streamlines Queue's interface as well.
2019-08-24 23:40:21 -05:00
Jack Christensen
6508934508
Rename PreparedStatementCache to StatementCache
2019-08-24 22:19:29 -05:00
Jack Christensen
3675337e5b
Update for rename of pgconn.PreparedStatementDescription
2019-08-24 20:44:56 -05:00
Jack Christensen
0c3e59b07a
Add automatic statement cache
2019-08-24 20:29:54 -05:00
Jack Christensen
180dfe6954
Remove bad error check
2019-08-24 16:29:44 -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
Jack Christensen
7385349950
Refactor Conn.exec
2019-08-24 12:46:04 -05:00
Jack Christensen
e22c023d8a
Remove unused struct
2019-08-24 10:52:28 -05:00
Jack Christensen
e9770d6ff9
Add listen / notify implemented with pgconn
...
fixes #553
2019-08-24 10:49:10 -05:00
Jack Christensen
b7b52ff079
Require conn and pool configs to be created by ParseConfig
...
This simplifies handling default values. Now there is no ambiguity
between a zero value and a default value. All default values are set by
ParseConfig and the user can modify them after the initial creation.
fixes #567
2019-08-24 09:53:38 -05:00
Jack Christensen
f3c703a102
Remove Conn SetLogger and SetLogLevel
...
Simplifying interface
2019-08-17 15:34:29 -05:00
Jack Christensen
99c54fbec0
Tweak Conn comment
2019-08-17 13:46:22 -05:00
Jack Christensen
3028821487
Add context.Context to Logger interface
...
This allows custom logger adapters to add additional fields to log
messages. For example, a HTTP server may with to log the request ID.
fixes #428
2019-08-03 16:16:21 -05:00
Jack Christensen
ab1edc79e0
Remove 0 bytes when sanitizing identifiers
...
Port of 95ea78048a
from v3.
2019-08-03 09:51:03 -05:00
Jack Christensen
29f02807b0
Restore simple protocol support
2019-05-20 20:36:03 -05:00
Jack Christensen
b0dac84d77
Use extended query builder everywhere
2019-05-17 13:59:41 -05:00
Jack Christensen
79f49ce300
Convert large objects to prepared statements
...
This allows removing semi-obsolete fastpath interface support. See
https://www.postgresql.org/docs/current/libpq-fastpath.html . This also
simplifies introducing context support.
2019-05-11 11:36:38 -05:00
Jack Christensen
583c8d3b25
Use pgproto3.FieldDescription instead of pgx version
...
This allows removing a malloc and memcpy.
2019-05-04 13:47:18 -05:00
Jack Christensen
ea31df3b50
Extract extendedQueryBuilder
2019-05-04 12:32:21 -05:00
Jack Christensen
8b365ce37e
Extract int16SlicePool
2019-05-04 11:01:09 -05:00
Jack Christensen
dd571cf345
Remove another malloc from query path
2019-05-04 09:01:57 -05:00
Jack Christensen
db68713809
Remove malloc from query path
2019-05-04 08:58:02 -05:00
Jack Christensen
85ddbfeeee
Remove 2 mallocs from query path
2019-05-04 08:55:05 -05:00
Jack Christensen
243f9031b3
Remove extra prepare in stdlib
2019-04-27 15:45:30 -05:00
Jack Christensen
7b1272d254
Add SendBatch to pool
2019-04-25 15:07:35 -05:00
Jack Christensen
00d123a944
Prune methods that delegated to *pgconn.PgConn
2019-04-25 14:25:16 -05:00
Jack Christensen
aed6b822d9
Split batch command and result
2019-04-24 16:39:06 -05:00
Jack Christensen
c7d03eb555
Add RowsFromResultReader
2019-04-24 15:57:50 -05:00
Jack Christensen
a19ca0638f
Reorganize conn and rows
2019-04-24 14:16:52 -05:00
Jack Christensen
1b8f0016e9
Split pgtype into own repo
2019-04-20 19:20:00 -05:00
Jack Christensen
cc3461e65d
Use golang.org/x/xerrors
2019-04-20 17:43:44 -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
b7e56b003a
Replace lastStmtSent with pgconn support
2019-04-20 17:12:20 -05:00
Jack Christensen
35a0f64876
Pass ctx to PgConn.Prepare
2019-04-20 12:06:11 -05:00
Jack Christensen
de40fea100
Remove unused variables
2019-04-20 12:00:07 -05:00
Jack Christensen
66625e6489
Prepare takes context
...
Also remove PrepareEx. It's primary usage was for context. Supplying
parameter OIDs is unnecessary when you can type cast in the query SQL.
If it does become necessary or desirable to add options back it can be
added in a backwards compatible way by adding a varargs as last
argument.
2019-04-20 11:47:16 -05:00
Jack Christensen
95756b1d7f
Deallocate takes context
2019-04-20 11:34:52 -05:00
Jack Christensen
427cfe1c16
Remove unnecessary mux
2019-04-19 16:23:06 -05:00
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
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
Jörg Thalheim
3410ad9122
Add host query parameter to support unix sockets
...
Currently there is no way to specify unix sockets in the connection
url. This patch adds a `host` query parameter that allows to set the path.
2018-11-03 21:07:33 +00:00
Tejas Manohar
e2010c858c
tls: stop sending ssl_renegotiation_limit in startup message
...
This addresses https://github.com/jackc/pgx/issues/321 with the
fix @jackc proposed there. Redshift users that need to connect
w/ SSL currently fork the library to delete this parameter, e.g.
8e0028d742
And, that's annoying to keep up-to-date :)
2018-10-29 21:50:09 -07:00
Murat Kabilov
d9f21d02a5
mind PreferSimpleProtocol parameter in the config Merge method
2018-07-24 16:03:26 +02:00