57 Commits

Author SHA1 Message Date
Jack Christensen
f7b6b3f077 Handle json/jsonb in binary to support CopyTo
fixes #189
2016-10-01 11:01:54 -05:00
Jack Christensen
1a4be31e7a Fix Rows.Values with binary varchar
fixes #161
2016-07-07 08:03:26 -05:00
Krzysztof Dryś
ed6ee27a22 Copy sql query from prepared statement to rows.
This enables proper logging of sql query when using stdlib.
2016-06-28 11:08:38 +02:00
Jack Christensen
9288322a4f Avoid two memory allocations per query
rows can get log and shouldLog from conn instead of needing copied
to self.
2016-04-30 13:06:59 -05:00
Jack Christensen
932a4d6533 Avoid pointless recursive call 2016-04-30 12:58:36 -05:00
Jack Christensen
6e2cee6294 Prevent every row scan from causing a malloc 2016-04-30 12:54:16 -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
94052ea940 Rows.Scan can ignore column with nil
fixes #130
2016-03-24 14:22:16 -05:00
Jack Christensen
49b3582977 Fix connection corruption when errored query closes early
refs #125
2016-03-15 19:20:03 -05:00
Jack Christensen
c6b6d7bad7 Expose encoding and decoding functions 2016-02-15 13:57:11 -06:00
Jack Christensen
a93025479d Add AfterClose and Conn to Rows 2016-02-13 13:03:06 -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
edfdaf15c6 Rows.Scan errors now include which argument caused error 2015-11-20 14:02:49 -06:00
Jack Christensen
e1215d9b19 []byte skips encoding/decoding
refs #104
2015-11-12 14:54:25 -06:00
Jack Christensen
7dfdc92855 Rows.Values supports oid type 2015-10-07 08:00:43 -05:00
Jack Christensen and Jake Worth
c726a51450 Add inet[] and cidr[] support 2015-09-29 13:23:26 -05:00
Jack Christensen
86837e5576 Add guards against usage of busy connection 2015-09-16 10:22:16 -05:00
Jack Christensen
a1aa06c934 More efficient logging with log levels 2015-09-16 08:20:51 -05: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
fff5b9759b Add tests for other types of JSON objects 2015-09-04 13:40:59 -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
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
879ca97228 Fix Scanner that does not read entire value 2015-04-09 17:46:58 -05:00
Jack Christensen
daf2efa313 Tweak handling of reading null as raw bytes.
* NULL maps to nil not empty slice
* Handle NULL in Scan not ReadBytes
2014-12-23 21:58:48 -06:00
Jack Christensen
d77e599ce6 Add timestamptz[] support 2014-12-23 18:17:39 -06:00
Jack Christensen
191c37dfa6 Values supports timestamp[] 2014-12-23 17:52:33 -06:00
Karl Seguin
109b55f9de support decoding of []time.Time and []bool 2014-12-21 14:35:38 +07:00
Jack Christensen
3c61b16776 Fix crash reading value after empty array
fixes #51
2014-12-19 08:25:33 -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
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
4e51ff728f Allow reading any value into []byte 2014-09-27 15:34:52 -05: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
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
b21a653085 Truncate logged strings and byte slices 2014-09-15 13:53:59 -05:00
Jack Christensen
5dbc03602d Improve wrong number of arguments error message for Rows.Scan
fixes #33
2014-09-05 11:14:11 -05:00
Jack Christensen
ff905fe862 Finish compatible interface to inconshreveable/log15 2014-09-04 16:27:40 -05:00
Jack Christensen
311c332fdc More logging 2014-09-03 11:13:29 -05:00
Jack Christensen
e47838d926 Add logging to Query 2014-09-03 10:34:45 -05:00
Jack Christensen
b8881af745 Better error when Scan fails due to unknown destination type
fixes #31
2014-09-02 16:58:10 -05:00
Jack Christensen
0ddf94ef9d Add pgx.Oid serialization 2014-08-08 10:57:33 -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
61bf7d841a Always use bound parameters
PostgreSQL has two string syntaxes, one that allows backslash escapes and one
that does not (SQL standard conforming strings). By default PostgreSQL uses
standard conforming strings. QuoteString was only designed for use with
standard conforming strings. If PostgreSQL was configured with certain
combinations of the standard_conforming_strings and backslash_quote settings,
QuoteString may not correctly sanitize strings. QuoteString was only used in
unprepared queries, bound parameters are used for prepared queries.

This commit alters pgx to use always use bound parameters.

As a consequence of never doing string interpolation there is no need to have
separate Text and Binary encoders. There is now only the Encoder interface.

This change had a negative effect on the performance of simple unprepared
queries, but prepared statements should already be used for performance.

fixes #26

https://github.com/jackc/pgx/issues/26
2014-07-18 16:51:11 -05:00