69 Commits

Author SHA1 Message Date
Jack Christensen
b06d71f684 Update test to work on Windows 2014-07-26 09:50:43 -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
Jack Christensen
c108378973 Reorganize code 2014-07-12 08:50:30 -05:00
Jack Christensen
f31665c5db wip 2014-07-12 07:11:16 -05:00
Jack Christensen
19537badff Add Rows.Values 2014-07-11 16:55:45 -05:00
Jack Christensen
294c05efcc Add test for date 2014-07-11 14:39:06 -05:00
Jack Christensen
93677e40dd Add test for timestamptz 2014-07-11 14:37:16 -05:00
Jack Christensen
12861ff7f1 Remove unused code 2014-07-11 14:36:58 -05:00
Jack Christensen
7ca95d7f73 Add NullString
Changes EncodeText interface to work for null values in SQL interpolation
and in prepared statements text format.
2014-07-11 14:16:25 -05:00
Jack Christensen
24395d98df Add more testing of Encode*
Handle case where TextEncoder is used to a core type that the driver
could otherwise have handled as binary.
2014-07-11 11:16:12 -05:00
Jack Christensen
6884fdfb52 Move Query tests together 2014-07-11 08:33:09 -05:00
Jack Christensen
986f9a1e66 Run TestConnQueryReadTooManyValues in parallel 2014-07-11 08:29:57 -05:00
Jack Christensen
646136fb44 Rename *Rows.NextRow to *Rows.Next
Conform closer to database/sql
2014-07-11 08:26:01 -05:00
Jack Christensen
d7529600e0 Rename QueryResult to Rows
This helps conform closer to database/sql
2014-07-11 08:21:29 -05:00
Jack Christensen
01f261c71c Conform closer to database/sql style and add no rows test 2014-07-11 08:16:21 -05:00
Jack Christensen
566d713285 More tests and bug fixes 2014-07-11 07:50:44 -05:00
Jack Christensen
009cdfa0b1 Use Scan and Encode* instead of ValueTranscoders 2014-07-09 07:56:48 -05:00
Jack Christensen
43dcd47a92 Move to Scan interface
Remove SelectValue
2014-07-05 18:23:19 -05:00
Jack Christensen
5b345e80e1 Remove SelectValueTo
Benchmarks revealed that it is no longer performant enough to pull
its own wait. Using go_db_bench to copy JSON results to HTTP responses
it was ~20% *slower* for ~4BK responses and less than 10% faster for
+1MB responses.

The the performance problem was in io.CopyN / io.Copy. io.Copy
allocates a 32KB buffer if it doesn't have io.WriterTo or io.ReaderFrom
available. This extra alloc on every request was more expensive than
just reading the result into a string and writing it out to the response
body.

Tests indicated that if MsgReader implemented a custom Copy that used a
shared buffer it might have a few percent performance advantage. But the
additional complexity is not worth the performance gain.
2014-07-05 09:32:47 -05:00
Jack Christensen
b27d828311 Add RowReader.CopyBytes
Implement SelectValueTo in terms of RowReader.CopyBytes
2014-07-05 07:51:32 -05:00
Jack Christensen
a1fc6f513a Remove dead space 2014-07-05 07:25:29 -05:00
Jack Christensen
78b8e0b6f2 Safely handle bad reads of QueryResult 2014-06-30 19:01:36 -05:00
Jack Christensen
1eb4f2e8b4 Correct spelling 2014-06-30 07:49:06 -05:00
Jack Christensen
d30ef1b8b9 Replace SelectFunc with Query as core 2014-06-28 17:07:31 -05:00
Jack Christensen
b6ac3ef2b0 Rename Execute to Exec 2014-06-27 14:56:27 -05:00
Jack Christensen
7d0e178424 Determine automatically if Host is socket
Instead of requiring user to specify either Host or Socket unify these fields.
It can be automatically determined whether it is a socket or not.
2014-06-21 12:53:38 -05:00
Jack Christensen
b2c1a14fcc Update github.com/JackC to github.com/jackc 2014-06-21 08:36:20 -05:00
Jack Christensen
839ddcf75f Allow running tests in parallel 2014-06-20 15:27:49 -05:00
Jack Christensen
73b5c73c1c Do not share database connections between tests 2014-06-20 15:18:55 -05:00
Jack Christensen
247fd3be53 Fix CommandTag RowsAffected for INSERT 2014-06-20 13:38:01 -05:00
Jack Christensen
4efa61bf5b Prepare returns *PreparedStatement 2014-06-20 10:47:31 -05:00
Jack Christensen
928612917d Fix a couple go vet discovered issues 2014-06-11 07:59:43 -05:00
Jack Christensen
f119d5221c Add CommandTag 2014-05-19 09:32:31 -05:00
Jack Christensen
bc2a120301 Add constants for transaction isolation levels 2014-05-19 08:25:34 -05:00
Jack Christensen
1ff653ae15 Rename ConnectionParameters to ConnConfig 2014-05-17 13:38:13 -05:00
Jack Christensen
4eb597d20b Rename pgx.Connection to pgx.Conn 2014-05-17 13:11:30 -05:00
Jack Christensen
70e461b769 Renamed conn* to connection* 2013-04-20 11:55:13 -05:00
Jack Christensen
58ae1855cb Extract Connection.SelectAll* to own file 2013-04-20 11:34:52 -05:00
Jack Christensen
e27511a4c5 Extract Connection.Select* to own file 2013-04-20 11:30:06 -05:00
Jack Christensen
0b1ac12c0e Added basic null handling
* Connection.SelectRows leaves null values empty
* Select* and SelectAll* now error on null

refs #4
2013-04-20 11:14:01 -05:00
Jack Christensen
ee25d4a03a Rename Select to SelectFunc to conform to Go standard lib style 2013-04-19 16:35:44 -05:00
Jack Christensen
1752020d3e Update test name 2013-04-19 16:33:48 -05:00
Jack Christensen
bf86100fec Rename Query to SelectRows 2013-04-19 16:18:11 -05:00
Jack Christensen
9a5c299563 Added Select to process rows as they come over the wire
This was accomplished by promoting private query function to
public Select.

fixes #12
2013-04-19 16:10:14 -05:00
Jack Christensen
fa4c70907c Rename pgx.conn to pgx.Connection 2013-04-17 08:26:01 -05:00
Jack Christensen
d306d42afb Added conn.Execute to run arbitrary SQL without a result set
fixed #13
2013-04-16 20:13:06 -05:00
Jack Christensen
cbf03821e1 Revert making query methods automatically escape arguments.
Must now call SanitizeSql explicitly.

This was necessary because go supports variadic arguments but not
totally optional arguments. So it would require something to
always be passed in.
2013-04-16 19:55:01 -05:00
Jack Christensen
8392883350 Added SQL parameter sanitization
fixes #3
2013-04-15 20:22:28 -05:00
Jack Christensen
2a5ad27041 go fmt 2013-04-13 20:28:45 -05:00
Jack Christensen
d2ad78b90e Added SelectAll*
fixes #2
2013-04-13 19:03:00 -05:00