Commit Graph

171 Commits (103ab963eb35e1d0f84ebebe601633b579fcc618)

Author SHA1 Message Date
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
Jack Christensen a12b7ed6c1 Handle Scanning null into core types
Return error instead of panic.
2014-07-12 22:07:21 -05:00
Jack Christensen aff5043df9 Added a lot of documentation 2014-07-12 21:17:38 -05:00
Jack Christensen f215c8bf5f Change Scan / decodeX to use ValueReader
Also improve Rows.Scan and Rows.Values error handling.
2014-07-12 19:43:27 -05:00
Jack Christensen 546a2fc670 NullX Scan check oids 2014-07-12 11:41:23 -05:00
Jack Christensen 1cb3ac91f3 EncodeBinary checks oid of param 2014-07-12 09:46:33 -05:00
Jack Christensen ed2b3b3b49 Add timestamp support
But not to NullTime because of text vs binary encoding difficulties.

You really should never use timestamp anyway.
2014-07-12 09:33:49 -05:00
Jack Christensen 6c1c819a5e Error detection for mismatched types 2014-07-11 16:07:08 -05:00
Jack Christensen 95301ea276 Correct Null* docs 2014-07-11 15:25:40 -05:00
Jack Christensen 4bdefced66 Add NullTime 2014-07-11 15:25:26 -05:00
Jack Christensen 724adde815 Add NullBool 2014-07-11 15:00:13 -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 6eac791f51 Encode* should be value, not pointer to value 2014-07-11 11:44:02 -05:00
Jack Christensen 32a368a75b Add more Null* types
* NullFloat32
* NullFloat64
* NullInteger16
* NullInteger32
2014-07-11 11:41:32 -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 d7529600e0 Rename QueryResult to Rows
This helps conform closer to database/sql
2014-07-11 08:21:29 -05:00
Jack Christensen 566d713285 More tests and bug fixes 2014-07-11 07:50:44 -05:00
Jack Christensen eb8b2a16ff Add/fix comments 2014-07-09 08:10:32 -05:00
Jack Christensen c4db9d3547 Remove remaining array code 2014-07-09 08:05:36 -05:00
Jack Christensen 89bcc0670c Unify serialization code in values.go 2014-07-09 08:05:03 -05:00