Commit Graph

251 Commits (6f0ec4c470012f42f222949e2d89e7acb0753c80)

Author SHA1 Message Date
Jack Christensen f895e970b5 Merge branch 'master' into v3-experimental
* master:
  Tweak replication test setup
  Properly make it a func init()
  The naming really matters
  Fix the syntax
  Properly make the replication tests skippable on 9.5 and below
  I forgot the tests are 9.6+
  One more try for travis
  Valid YAML helps.
  Dont break old postgres
  Try to fix travis
  Add the ability to set all the fields in the constructor
  Start replication now wraps the sql and returns errors properly
  It should all be unsigned.
  Capitalization
  Add replication stop mechanism
  Add basic logical replication protocol support
2017-01-06 15:25:57 -06:00
Jack Christensen 93e5c68f69 Merge branch 'master' into v3-experimental 2016-12-10 12:21:08 -06:00
Kris Wehner 7bbb1c7307 Add basic logical replication protocol support 2016-12-04 21:35:22 -08:00
ferhat elmas 84439a13cb Simplify map composite literals as gofmt -s handles 2016-11-09 00:52:10 +01:00
Jack Christensen 3734a92a71 Log TLS connection errors as info when fallback available
fixes #198
2016-10-21 14:27:38 -05:00
Jack Christensen f7b6b3f077 Handle json/jsonb in binary to support CopyTo
fixes #189
2016-10-01 11:01:54 -05:00
Martin Hamrle 9f6b99e332 Cleanups
Cleanups suggested by gometalinter tools.
2016-08-30 20:05:44 +02:00
Jack Christensen 73124171e2 Rename Pid to PID 2016-08-02 15:10:00 -05:00
Jack Christensen 390f75c0e1 Reduce Logger interface to Log method 2016-08-02 14:42:31 -05:00
Jack Christensen 214443deb7 Rename Oid to OID 2016-08-02 13:31:55 -05:00
Jack Christensen 30cb421551 Add basic record to []interface{} decoding
refs #155
2016-06-21 15:00:47 -05:00
Jack Christensen 40f00f4a82 Pass PrepareEx opts as pointer and DRY implementation 2016-05-20 08:30:10 -05:00
Jack Christensen 7954a36b2d Tweak Prepare docs 2016-05-20 08:16:28 -05:00
Jack Christensen b06560aa03 Rename Preparex to PrepareEx 2016-05-20 08:14:56 -05:00
William King 2ba5bb405b Slight doc update 2016-05-18 13:27:22 -07:00
William King e417cc2f15 Preparex 2016-05-18 13:15:15 -07:00
Jack Christensen 90f22c1717 Don't share inet constant memory between connections 2016-05-12 08:00:53 -05:00
Jack Christensen a488fe026f Every Conn in a ConnPool gets its own PgTypes
Rather than sharing which could allow data races.
2016-05-12 07:51:53 -05:00
John Barker a282d9df90 Cache connection properties in the pool
This is a quick attempt to improve connection startup time by caching
the properties that are loaded when a connection is ready in the pool,
so that further connections don't incur this cost.

I'm not entirely convinced by the interface here, perhaps these 3 items
could live in their own type and that be passed around for clearer code,
but the idea works well.
2016-05-10 18:34:26 -04:00
John Barker 3ac09ce728 Reduce the set of types loaded on connect [Fixes #140]
Modify the pg_types query so that it does not load the table array types
that are created when new tables are created.
2016-05-10 14:10:51 -04:00
Jack Christensen 7323d3f5a7 Encode/decode [][]byte to/from bytea[]
fixes #139
2016-04-30 19:07:29 -05:00
Jack Christensen b596fa3455 Avoid allocation for WriteBuf on query 2016-04-30 13:32:19 -05:00
Jack Christensen e5ec5851e5 Reduce allocations for row objects 2016-04-30 12:22:36 -05:00
Jack Christensen 04e9fbcc55 Fix some golint errors
- Add comments
- Rename variables
- Remove unnecessary "else"
2016-03-29 15:18:09 -05:00
Jack Christensen 9ce1b2b16e Fix Listen/Unlisten with special characters
fixes #132
2016-03-24 15:26:44 -05:00
Jack Christensen c6b6d7bad7 Expose encoding and decoding functions 2016-02-15 13:57:11 -06:00
Jack Christensen 0f7bf19387 Add *Conn.SetLogLevel
Allow changing log level after connection is established. Because
log level and loggers can be set independently, it is now possible
to have a log level above none when there is a nil logger. This
means all log statements need to check for nil logger and an
appropriate log level. This check has been factored out into
*Conn.shouldLog.
2016-02-13 10:13:10 -06:00
Jack Christensen cffae7ff5d Add SetLogger to *Conn
Allow replacing logger after connection is established. Also
refactor internals of logging such that there is a log method that
adds the pid to all log calls instead of making a new logger object.
The reason for this is so pid will be logged regardless of whether
loggers are replaced and restored.
2016-02-12 17:49:04 -06:00
Jack Christensen 9f9a9779ac Add compatibility with database/sql custom types
Support database/sql.Scanner
Support database/sql/driver.Valuer
2015-12-31 14:46:43 -06:00
Jack Christensen f004f0802c Add ConnPool.Reset method
refs #110
2015-12-12 13:15:14 -06:00
Jack Christensen dd26ad0091 Remove unreachable code 2015-11-14 14:14:52 -06:00
Jack Christensen e1215d9b19 []byte skips encoding/decoding
refs #104
2015-11-12 14:54:25 -06:00
Jack Christensen 60cca3de7d Disable SSL renegotiation
fixes #103
2015-10-26 12:07:54 -05:00
Jack Christensen 8d9eb62609 Add docs for relating to ConnConfig.RuntimeParams 2015-10-16 16:16:39 -05:00
Jack Christensen ec8f6259e6 ParseEnvLibpq extracts PGAPPNAME 2015-10-16 16:13:15 -05:00
Jack Christensen 829d61ce40 ParseDSN extracts RuntimeParams 2015-10-16 15:48:24 -05:00
Jack Christensen 5b0550c1cb ParseURI extracts run-time parameters
refs #99
2015-10-16 15:37:49 -05:00
Jack Christensen 1fb63a4b41 Add RuntimeParams to ConnConfig 2015-10-16 15:37:32 -05:00
Jack Christensen 41b96b5f77 Fix stdlib error caused by idempotent Prepare 2015-10-16 14:58:03 -05:00
Jack Christensen 984eace2b5 Make *Conn.Prepare idempotent.
fixes #94
2015-10-16 14:17:07 -05:00
Jack Christensen and Jake Worth c726a51450 Add inet[] and cidr[] support 2015-09-29 13:23:26 -05:00
Jack Christensen 4987d5425e Fix JSON encoding of *string 2015-09-21 13:40:47 -05:00
Jack Christensen ca16a4c98f Unlisten tweaks
- Use unlisten * when releasing connection with listeners to pool
- Only unlisten on releasing connection to pool when necessary
- Remove Unlisten("") as was to release all listeners
2015-09-21 08:18:10 -05:00
Joseph Glanville eb5cadccf9 Track Listen/Unlisten and clear subscriptions on conn release 2015-09-21 07:56:45 -05:00
Jack Christensen 86837e5576 Add guards against usage of busy connection 2015-09-16 10:22:16 -05:00
Jack Christensen 23c48c2f87 Add trace logging 2015-09-16 08:40:01 -05:00
Jack Christensen a1aa06c934 More efficient logging with log levels 2015-09-16 08:20:51 -05:00
Jack Christensen a2e078597b Add logging to rxMsg
Also benchmark what a log call costs
2015-09-14 10:25:48 -05:00
Jack Christensen 6e5fa60c4c Fix cases where net conn write failure was not marking connection as dead
Also added loop to run these timing sensitive tests multiple times.
2015-09-12 19:32:55 -05:00
Jack Christensen 4ff46becfc Generalize pointer to string uuid transcoding to any non-varchar/text type 2015-09-09 18:07:05 -05:00
Joseph Glanville 2184ffb5e9 Add support for encoding to UUID from string types 2015-09-10 00:58:51 +10:00
Jonathan Rudenberg 272262536b Add support for pointers to pointers
Using types like **string allows the inner pointer to be nil’ed out,
avoiding the need for NullX types.

Signed-off-by: Jonathan Rudenberg <jonathan@titanous.com>
2015-09-08 11:52:58 -05:00
Jack Christensen 4ebb0508b6 Encode dates in binary format
- Also allow NullTime to handle dates
2015-09-08 11:51:28 -05:00
Jack Christensen 9d200733b9 Merge common JSON and JSONB 2015-09-04 11:04:51 -05:00
Joseph Glanville 0013733535 Add JSON/JSONB support 2015-09-04 18:15:46 +10:00
Jack Christensen fd39261551 Use binary transcoding for inet/cidr
fixes #87
2015-09-03 11:39:32 -05:00
Jack Christensen 9af068add0 Add cidr support 2015-09-03 09:42:01 -05:00
Jack Christensen d494f83cd1 Add inet support 2015-09-03 09:33:19 -05:00
Jack Christensen a0c76b897c Fix doc typos 2015-08-21 13:50:31 -05:00
Jack Christensen c44cbb12ab Add sslmode note for ParseDSN 2015-08-21 13:50:06 -05:00
Rick Snyder 6413491657 Add support for specifying sslmode in connection strings
Add tests for sslmode parameter when calling ParseURI.  Fix existing tests to work since default sslmode is 'prefer'

Make sure we default to prefer if sslmode is not provided in ParseDSN

Fix existing tests for ParseDSN to expect TLS configuration for prefer since prefer is the default sslmode; also, add tests for ParseDSN when specifying sslmode parameter on connection string
2015-08-19 11:33:12 -04:00
Jack Christensen 07a11abc07 Add basic PGSSLMODE support to ParseEnvLibpq 2015-05-23 13:49:26 -05:00
Jack Christensen 51d6d1a3a6 Add ParseEnvLibpq with support for basic envvars 2015-05-23 12:46:36 -05:00
Jack Christensen dd9d960ba3 Add fallback TLS ConnConfig option
This is in preparation for supporting libpq style SSL options.
2015-05-23 11:57:36 -05:00
Jack Christensen 0c0a426d18 Add named error for server refused TLS 2015-05-15 19:21:59 -05:00
Jack Christensen 5bb7f64dac Add more error fields to PgError 2015-05-01 18:06:17 -05:00
Lewis Marshall 784d12cbbc Support using a custom dialer
For example I may want to use a dialer which retries transient network
errors (e.g. DNS issues).

Signed-off-by: Lewis Marshall <lewis@lmars.net>
2015-04-18 22:42:55 +01:00
deoxxa 7e2886c576 add ParseDSN function 2015-04-08 14:50:56 +10:00
Jack Christensen fc484ab5fd Allow NullTime to work with timestamp 2015-03-27 18:14:36 -04:00
Jack Christensen 28ef19702f Detect too many parameters on Prepare
refs #65
2015-03-14 18:58:09 -05:00
Jonathan Rudenberg 0176e3ccc0 Implement large object support
This patch implements large object support as described in
http://www.postgresql.org/docs/current/static/largeobjects.html
2015-01-01 22:01:01 -05:00
Jack Christensen d77e599ce6 Add timestamptz[] support 2014-12-23 18:17:39 -06:00
Karl Seguin 67292290cf support for inserting []time.Time into timestamp[] columns 2014-12-21 13:35:39 +07:00
Karl Seguin d1b42d1c8e support inserting into bool[] 2014-12-21 13:01:24 +07:00
Jack Christensen 79818c2557 Merge pull request #49 from karlseguin/mem1
reduce unecessary memory allocation
2014-11-17 20:36:57 -06:00
Karl Seguin a8f5ce12c5 Trying to reduce memory allocation. logQueryArgs is called even when
using the default discardLogger. This allocates quite a bit of memory.
Created a default dlogger instance and avoid logging code when that's our
logger. I couldn't think of a better implementation without touching the
Logger interface.

On 100 000 inserts, this brought the allocation down to 58MB from 122MB.
It should also result in some small performance gains.
2014-11-18 07:53:33 +07:00
Karl Seguin 04b54f03a5 Use LastIndex instead of Split for better performance getting the number of rows affected from CommandTag 2014-11-16 12:43:47 +07:00
Jack Christensen 5edd660971 WaitForNotification detects lost connections quicker
Ping server every 15 seconds while waiting if no traffic has occurred.
2014-10-03 14:58:04 -05:00
Jack Christensen 44f44c1baa Merge pull request #39 from anaxagoras/emptyquery
support EmptyQueryResponse message type
2014-09-27 14:37:13 -05:00
Jack Christensen 9e30e7aa93 Remove duplicate line 2014-09-27 12:20:36 -05:00
Jack Christensen 3d7974ce30 Always use keep-alive on TCP conns 2014-09-27 12:13:10 -05:00
Andy Walker f715715c86 add support for EmptyQueryResponse 2014-09-26 17:14:28 -04:00
Andy Walker 33fb73b8ab name consistency 2014-09-24 18:53:07 -04:00
Andy Walker b46ee0a951 Add keep-alive option by creating a dialer first, then setting KeepAlive option 2014-09-24 18:38:15 -04:00
Jack Christensen 98853ea98f more docs 2014-09-19 17:35:00 -05:00
Andy Walker 2f1ec582d7 Instead of native map[string]string, use type pgx.Hstore instead 2014-09-19 15:27:15 -05:00
Andy Walker 821605a8dd Adding hstore support. map[string]string will encode to hstores and throw errors on hstores with NULL values, and there is now a NullHstore type that is basically map[string]NullString and will both accept and decode NULL values properly 2014-09-19 15:27:15 -05:00
Jack Christensen 8f81acfb5f Enhance support for custom types
* Add per connection oid to name map
* Global default type format is now based on names not oids
* Add better docs for custom types
2014-09-19 15:27:15 -05:00
Brian Dunn and Jack Christensen a68115fc03 Fix data race with Rows and ConnPool
In an effort to reduce memory allocations, Rows was stored on the
Conn. This caused a race condition where Rows are closed and this
returns the Conn to the Pool. The Pool could then give out the Conn
again. Rows would then be reanimated and the original Rows could reclose
it.
2014-09-16 16:29:45 -05:00
Jack Christensen a5f082fa03 Extract more error information 2014-09-15 14:52:32 -05:00
Jack Christensen b21a653085 Truncate logged strings and byte slices 2014-09-15 13:53:59 -05:00
Jack Christensen f5156ac4eb discardLogger should be private 2014-09-04 16:45:35 -05:00
Jack Christensen ff905fe862 Finish compatible interface to inconshreveable/log15 2014-09-04 16:27:40 -05:00
Jack Christensen 98109c57bb Use interface for logging instead of log15 directly 2014-09-04 16:00:53 -05:00
Jack Christensen 311c332fdc More logging 2014-09-03 11:13:29 -05:00
Jack Christensen 0ddf94ef9d Add pgx.Oid serialization 2014-08-08 10:57:33 -05:00
Jack Christensen 2a04433355 Fix misleading error message 2014-08-08 10:31:47 -05:00
Jack Christensen fb55203324 Add support for varchar[] 2014-07-31 13:35:44 -05:00
Jack Christensen e29574d447 Add support for integer, float and text arrays
Restructure internals a bit so pgx/stdlib can turn off binary encoding and
receive text back for array types.
2014-07-26 15:03:52 -05:00
Jack Christensen 3144b5363f Support unknown PostgreSQL types as strings 2014-07-19 17:49:11 -05:00