Jack Christensen
8e341e20f3
Remove ConnConfig.BuildStatementCache
2022-03-12 09:23:40 -06:00
Jack Christensen
f27178ba85
Initial privatization of stmtcache
...
ConnConfig.BuildStatementCache is pending removal once connections
always have separate caches for prepared and described statements.
2022-03-12 08:35:31 -06:00
Jack Christensen
fe21cc7486
Use Map.Encode path for simple protocol
2022-03-05 21:40:49 -06:00
Jack Christensen
c4b08378f2
Handle driver.Valuers inside Map.Encode
2022-03-05 21:27:17 -06:00
Jack Christensen
1cef9075d9
Simply typed nil and driver.Valuer handling
...
* Convert typed nils to untyped nils at beginning of encoding process.
* Restore v4 json/jsonb null behavior
* Add anynil internal package
2022-03-05 19:53:59 -06:00
Jack Christensen
0d8e109c21
Test every QueryExecMode
2022-03-05 14:04:51 -06:00
Jack Christensen
aad3d65e16
Initial restructure of simple protocol to query exec mode
2022-03-05 10:27:15 -06:00
Jack Christensen
95cbbfe441
Import pgproto3
...
Also copy in pgmock as an internal package.
2022-02-21 13:22:42 -06: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
5daa487a2c
Merge branch 'master' into v5-dev
2022-02-21 08:35:11 -06:00
Jack Christensen
b6b24f9e8a
Allocate connRows on demand instead of preallocating in bulk
...
The 64 element preallocatedRows may be pinning memory from previous
queries.
See https://github.com/jackc/pgx/issues/1127
2022-02-19 11:51:25 -06:00
Jack Christensen
1e565b0d44
Handle stmtCache.Get error previously thought impossible
...
The statement cache is already prefilled, but it is possible for the
ctx to be canceled between when the statement is prepared and when the
statement is retrieved for use.
refs #1156
2022-02-19 11:28:39 -06:00
Jack Christensen
9c5dfbdfb3
pgconn.CommandTag is now an opaque type
...
It now makes a copy instead of retaining driver memory. This is in
preparation to reuse the driver read buffer.
2022-02-12 10:26:26 -06:00
Jack Christensen
4b6d527b0b
Merge branch 'master' into v5-dev
2022-02-12 09:22:37 -06:00
Saimon Shaplygin
4ac1499060
ref: remove anchored code
2022-02-12 09:15:24 -06:00
Jack Christensen
558748ef9c
ArrayCodec contains element DataType
2022-01-29 16:41:07 -06:00
Jack Christensen
b5bf9d7bb9
Move LoadDataType to pgx.Conn
2022-01-29 16:32:05 -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
Jack Christensen
a457da8bff
Unpin extendedQueryBuilder memory immediately after use
...
refs #1110
2021-11-13 17:12:09 -06:00
Jack Christensen
851091fdf4
Improve Query docs regarding error detection
2021-11-13 04:42:28 -06:00
Dan Gillis
b28c053c39
Add comments
2021-09-25 09:26:59 -05:00
Dan Gillis
bb8d7ffc87
Add comments
...
Add several comments and correct ConnectConfig
2021-09-25 09:26:59 -05:00
Jack Christensen
a49f4bb135
Use errors instead of golang.org/x/xerrors
2021-03-25 09:55:12 -04:00
Jack Christensen
f8c43c97ab
Document prefer_simple_protocol config option
2021-03-04 19:58:52 -06:00
Jack Christensen
d9ac491657
Add prefer_simple_protocol option to ParseConfig
...
refs #650
2021-03-04 19:56:14 -06:00
Jack Christensen
e8f959e0e1
Add QueryFunc
...
refs #821
2020-12-12 09:39:58 -06:00
Ethan Pailes
1df45d758d
fix stmtcache invalidation
...
This patch fixes jackc/pgx#841. The meat of the fix lives
in [a PR to the pgconn repo][1]. This change just checks
for errors after executing a prepared statement and informs
the underlying stmtcache about them so that it can properly
clean up. We don't try to get fancy with retries or anything
like that, just return the error and allow the application to handle it.
I had to make [some][1] [changes][2] to to the jackc/pgconn package as well
as this package.
Fixes #841
[1]: https://github.com/jackc/pgconn/pull/56
[2]: https://github.com/jackc/pgconn/pull/55
2020-11-12 08:15:13 -05:00
Jack Christensen
7c47415150
Fix SendBatch of all prepared statements with statement cache disabled
...
fixes #856
2020-10-29 20:28:57 -05:00
Oleg Kovalov
5f8d853b34
remove unused definitions on conn.go
2020-10-12 08:13:52 -05:00
Oleg Kovalov
557018a24e
use simpler strings funcs
2020-10-05 19:26:33 -05:00
Jinzhu
5b06f03d0a
Fix SimpleProtocol with prepared statement
2020-08-31 17:06:36 -05:00
georgysavva
e29ce9f6d6
Add Config.Copy() in pgx and pgxpool packages. Conn.Config() and Pool.Config() return copy of the original config.
2020-06-02 13:35:05 +03:00
georgysavva
608451a215
Store original config in Conn before updating it.
2020-06-01 19:38:12 +03:00
Jordan Lewis
25099e6f89
Permit SendBatch with Simple Protocol
...
This commit adds support for sending batches of queries via the Simple
protocol with SendBatch. The result appears identically to how it would
if it were created with the extended protocol.
2020-05-25 01:37:48 -04:00
Jack Christensen
ac6c49c39d
Require access to ConnString via Config
...
A Config object may be created via ParseConfig and then further
modified. Requiring access to the original ConnString via the Config
helps indicate that the Config is the source of truth as to how the
connection was actually established.
2020-05-16 18:12:04 -05:00
georgysavva
20c6c44f9f
Expose Conn.Config() and Pool.Config().
2020-05-16 19:53:08 +03:00
georgysavva
33cbec368f
rename ConnStr -> ConnString
2020-05-16 19:24:57 +03:00
georgysavva
a62de87342
Add ConnStr getter to Pool and Conn structs.
2020-05-16 18:10:29 +03:00
Ben Bader
a10b89ebc0
Add query logging for individual batch items
2020-02-18 16:22:29 -08:00
malstoun
8dc8431ef9
Add arguments count check to execParamsAndPreparedPrefix
2020-01-04 12:41:49 +03:00
Jack Christensen
10d5f5eaa8
Do not mutate config.Config.OnNotification in connect
...
fixes #618
2019-10-12 11:06:43 -05:00
Jack Christensen
e16bfa9af5
Add docs regarding closing BatchResults
2019-09-19 22:46:43 -05:00
Jack Christensen
76348773bd
Make Conn.ConnInfo private
2019-09-10 18:09:21 -05:00
Jack Christensen
4952a488f2
Add more docs for Conn.Query
2019-09-10 17:35:08 -05:00
Jack Christensen
4a320500cf
Remove barely used ProtocolError type
2019-08-27 18:31:54 -05:00
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