180 Commits

Author SHA1 Message Date
Jack Christensen
38dd42de4b Support new pgtype format preferences 2020-05-10 14:09:02 -05:00
Jack Christensen
a66b09fbd8 Improve simple protocol / text format
Increased data type support for simple protocol. Improved test
coverage of simple protocol. This has the additional advantage of
exercising the text encoders and decoders.
2020-05-08 16:20:15 -05:00
Jack Christensen
be9ceaefe6 Add native Go slice support for strings and numbers to simple protocol
[]string, []int16, []int32, []int64, []int, []uint16, []uint32,
[]uint64, []uint, []float32, and []float64 are now supported in the
simple protocol like they are in the normal usage of the extended
protocol.
2020-04-11 09:27:07 -05:00
Jack Christensen
169632e028 Refactor format code choosing 2019-08-25 00:38:50 -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
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
858d00788a Use extracted packages with Go modules 2019-04-05 10:59:47 -05:00
Jack Christensen
5deea5b971 Convert driver.Valuer's earlier in bind path
fixes #449
2018-09-01 21:37:16 -05:00
Jack Christensen
5297846239 pgtype.JSON(B).Value now returns []byte
Allows scanning jsonb column into *json.RawMessage.

fixes #409
2018-04-14 09:17:56 -05:00
Jack Christensen
82cd87d502 Support nil pointers to value implementing driver.Valuer
fixes #339
2017-10-26 21:37:06 -04:00
Jack Christensen
9c8ef1acdd Fix pgtype types that can Set database/sql/driver.driver.Valuer
Bug was chooseParameterFormatCode would see that type could handle
binary format so binary format would be chosen. But
encodePreparedStatementArgument would see driver.Valuer first and
would encode with that -- which is text mode. So the server would
receive a text format value when expecting a binary format value.

Discovered while investigating #316
2017-09-01 16:00:47 -05:00
Jack Christensen
d49a78dd73 Fix compilation on 32-bit platform
fixes #295
2017-08-03 14:17:28 -05:00
Jack Christensen
8f4178b3d3 Use github.com/pkg/errors 2017-06-04 21:30:03 -05:00
Jack Christensen
27ab289096 Use Go casing convention for OID 2017-06-03 11:53:49 -05:00
Jack Christensen
458dd24a9f Remove unneeded WriteBuf 2017-05-02 21:39:23 -05:00
Jack Christensen
6e64a0c867 Refactor pgio and types to append buffers 2017-05-02 20:38:26 -05:00
Jack Christensen
a5f702c41d Reduce allocs and copies 2017-04-29 13:21:25 -05:00
Jack Christensen
7b1f461ec3 Add simple protocol suuport with (Query|Exec)Ex 2017-04-10 08:58:51 -05:00
Jack Christensen
5ad2c4e2b9 Add pgtype.Numeric 2017-04-01 23:33:04 -05:00
Jack Christensen
bec9bd261b Add database/sql support to pgtype 2017-03-18 21:11:43 -05:00
Jack Christensen
1bea9d3f7e Remove int bound constants 2017-03-18 15:00:41 -05:00
Jack Christensen
9ab59a74a9 Remove oid constants from pgx 2017-03-18 14:59:34 -05:00
Jack Christensen
92cff1d961 Simplify []byte scanning 2017-03-18 14:42:36 -05:00
Jack Christensen
015108be9a Remove unused code 2017-03-18 14:28:06 -05:00
Jack Christensen
a636ef31a4 Refactor encoding parameters for prepared statements 2017-03-18 14:23:04 -05:00
Jack Christensen
9e289cb186 Remove unused DefaultTypeFormats 2017-03-18 14:09:55 -05:00
Jack Christensen
ad2ce2ce3c Remove internalNativeGoTypeFormats 2017-03-18 14:02:55 -05:00
Jack Christensen
b9e2f0e814 Remove a lot of unused code 2017-03-18 13:54:42 -05:00
Jack Christensen
19c6689752 Add pgtype.Record and prerequisite restructuring
Because reading a record type requires the decoder to be able to look up oid
to type mapping and types such as hstore have types that are not fixed between
different PostgreSQL servers it was necessary to restructure the pgtype system
so all encoders and decodes take a *ConnInfo that includes oid/name/type
information.
2017-03-18 12:01:16 -05:00
Jack Christensen
ba5f97176a Move not null Oid to pgtype
In preparation to ConnInfo implementation.
2017-03-13 21:34:38 -05:00
Jack Christensen
9cd561f1a5 Remove unused code 2017-03-13 20:14:08 -05:00
Jack Christensen
26d57356f7 Remove old Scanner and Encoder system 2017-03-12 17:22:04 -05:00
Jack Christensen
7bb1f3677d Move hstore to pgtype
Also implement binary format
2017-03-12 17:06:06 -05:00
Jack Christensen
57494a6a0f Expand pgtype.Value interface
- Include and rename ConvertFrom to Set
- Add Get
- Include AssignTo
2017-03-11 19:53:45 -06:00
Jack Christensen
542eac08c6 Add json/jsonb to pgtype 2017-03-11 18:46:51 -06:00
Jack Christensen
743b98b298 Name PG types as words
Though this doesn't follow Go naming conventions exactly it makes names more
consistent with PostgreSQL and it is easier to read. For example, TIDOID becomes
TidOid. In addition this is one less breaking change in the move to V3.
2017-03-11 17:03:23 -06:00
Jack Christensen
6694e0e618 Move Tid to pgtype 2017-03-11 16:48:37 -06:00
Jack Christensen
f10ed4ff5d Remove unused function 2017-03-11 16:14:13 -06:00
Jack Christensen
fa1c81fec4 Move ACLItem to pgtype 2017-03-11 16:13:05 -06:00
Jack Christensen
b0cd63bcf0 Remove unused ScannerV3 2017-03-11 15:44:21 -06:00
Jack Christensen
77c57c780d Add pgtype.ByteaArray
Also fix up quoting array elements for text arrays.
2017-03-11 13:32:32 -06:00
Jack Christensen
1f3e484ca1 pgtype.Encode(Binary|Text) do not write length
To aid in composability, these methods no longer write their own length. This
is especially useful for text formatted arrays and may be useful for future
database/sql compatibility. It also makes the code a little simpler as the
types no longer have to compute their own size.

Along with this, these methods cannot encode NULL. They now return a boolean
if they are NULL. This also benefits text array encoding as numeric arrays
require NULL to be exactly `NULL` while string arrays require NULL to be
`"NULL"`.
2017-03-11 12:45:30 -06:00
Jack Christensen
8162634259 Decode(Text|Binary) now accepts []byte instead of io.Reader 2017-03-10 16:08:47 -06:00
Jack Christensen
fa36ad9196 Move "char" to pgtype 2017-03-07 19:39:57 -06:00
Jack Christensen
7b1dbd8558 Move Name to pgtype 2017-03-06 17:55:20 -06:00
Jack Christensen
af8519991e Move OID to pgtype 2017-03-05 13:05:49 -06:00
Jack Christensen
cb1c05476f Move XID to pgypte 2017-03-05 09:07:07 -06:00
Jack Christensen
575574cf98 Move cid to pgtype 2017-03-04 22:12:03 -06:00