55 Commits

Author SHA1 Message Date
Maxim Ivanov
368295d3ee Create ROW helper for adhoc decoding of records 2020-04-12 18:40:52 +01:00
Jack Christensen
65bb544ba9 Merge branch 'rw_format' of git://github.com/rwelin/pgtype into rwelin-rw_format 2020-03-27 16:10:37 -05:00
Robert Welin
43bf713180 Use correct format verb for unknown type error 2020-03-27 13:20:33 +00:00
Jack Christensen
c7502af68b Add PostgreSQL time type support
fixes #15
2019-12-19 21:35:35 -06:00
jaltavilla
af517d68fc Scan into nullable custom types (pointers to pointers). 2019-10-21 17:21:42 -04:00
Jack Christensen
52ae698572 Fix daterange oid 2019-09-19 21:43:18 -05:00
Jack Christensen
b1e25e4ea4 Add format code helpers to ConnInfo 2019-08-25 00:32:11 -05:00
Jack Christensen
ab885b375b 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.

Because pgx depends on pgtype and the tests for pgtype depend on pgx
this change will require a couple back and forth commits to get the
go.mod dependecies correct.
2019-08-24 13:49:12 -05:00
Jack Christensen
4cf1c44817 Fix unknown OID scanning into string and []byte 2019-08-22 18:20:36 -05:00
Jack Christensen
f25878662d Use golang.org/x/xerrors 2019-04-20 17:43:44 -05:00
Jack Christensen
bd85fe870d Hard code standard PostgreSQL types
Instead of needing to instrospect the database on connection preload the
standard OID / type map. Types from extensions (like hstore) and custom
types can be registered by the application developer. Otherwise, they
will be treated as strings.
2019-04-13 16:45:52 -05:00
Jack Christensen
f779b05f36 Extract scan value to pgtype 2019-04-12 21:31:59 -05:00
Iurii Krasnoshchok
91bb74b526 Add support for bpchar type 2018-01-02 12:29:40 +01:00
Jack Christensen
a01653c3df Add support for bit type 2017-11-18 21:13:34 -06:00
Jack Christensen
4e6de12a62 Fix missing interval mapping 2017-11-17 09:37:57 -06:00
Kelsey Francis
2dfcf74f62 Add UUIDArray type
Also change UUID.Set() to convert nil to NULL in order for
UUIDArray.Set() to support converting [][]byte slices that contain nil.
2017-08-27 19:36:53 -07:00
Timothée Peignier
43c2b979d0 Add more ColumnType support 2017-08-18 18:22:08 -07:00
Jack Christensen
a5f166bd21 Use github.com/pkg/errors 2017-06-04 21:30:03 -05:00
Jack Christensen
654adbdd4a Use Go casing convention for CID/TID/XID/CIDR 2017-06-03 12:01:49 -05:00
Jack Christensen
01fa5960b2 Use Go casing convention for ACLItem 2017-06-03 11:58:40 -05:00
Jack Christensen
aab8b77215 Use Go casing convention for JSON(B) 2017-06-03 11:57:14 -05:00
Jack Christensen
496c5a4dff Use Go casing convention for UUID 2017-06-03 11:54:57 -05:00
Jack Christensen
2140814606 Use Go casing convention for OID 2017-06-03 11:53:49 -05:00
Jack Christensen
6b906ca870 Refactor pgio and types to append buffers 2017-05-02 20:38:26 -05:00
Jack Christensen
ab21bc4ec7 pgtype DecodeText and DecodeBinary do not copy
They now take ownership of the src argument.

Needed to change Scan to make a copy of []byte arguments as lib/pq apparently
gives Scan a shared memory buffer.
2017-04-29 12:23:51 -05:00
Jack Christensen
92474ef292 Add MarshalJSON to a few types 2017-04-13 21:58:19 -05:00
Jack Christensen
68fd815778 Add pgtype.Varbit 2017-04-05 07:54:41 -05:00
Jack Christensen
c31fe24693 Fix pgtype.Inet.AssignTo assigning reference
AssignTo should always assign copy.
Added documentation for AssignTo interface.
2017-04-04 21:13:00 -05:00
Jack Christensen
3631b076fe Add pgtype.Macaddr 2017-04-04 21:07:27 -05:00
Jack Christensen
d99d09b0d1 Add pgtype.Circle
Also rename Point.Vec2 to Point.P to conform to rest of geometric types.
2017-04-04 20:39:48 -05:00
Jack Christensen
6a0b41e50a Add pgtype.Polygon 2017-04-04 20:30:04 -05:00
Jack Christensen
8cbf667b8e Add pgtype.Uuid 2017-04-04 20:24:01 -05:00
Jack Christensen
f4bdd8300f Add path 2017-04-04 08:40:41 -05:00
Jack Christensen
d8a778811e Add pgtype.Lseg 2017-04-04 08:16:02 -05:00
Jack Christensen
2fc89c69e9 Add pgtype.Line 2017-04-04 08:04:54 -05:00
Jack Christensen
dccbbc6a40 Add pgtype.Box 2017-04-03 19:47:36 -05:00
Jack Christensen
0079bd5095 Add pgtype.Point 2017-04-03 17:53:32 -05:00
Jack Christensen
cc873a0bcf Add pgtype.NumericArray 2017-04-03 07:46:45 -05:00
Jack Christensen
066562fc89 Add pgtype.Numrange 2017-04-03 07:35:19 -05:00
Jack Christensen
f7191d3a56 Add pgtype.Numeric 2017-04-01 23:33:04 -05:00
Jack Christensen
94971db9e2 Add daterange, tsrange, and tstzrange 2017-03-24 14:17:49 -05:00
Jack Christensen
be04ad7b21 Add int4range 2017-03-23 18:41:52 -05:00
Jack Christensen
6f9ef694d0 Add database/sql support to pgtype 2017-03-18 21:11:43 -05:00
Jack Christensen
6e21cb00fe 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
b94ccae4c9 Document that Decode* must not keep src
- Also fix Bytea.DecodeBinary to not keep src.
2017-03-11 20:12:47 -06:00
Jack Christensen
9b9361848d Expand pgtype.Value interface
- Include and rename ConvertFrom to Set
- Add Get
- Include AssignTo
2017-03-11 19:53:45 -06:00
Jack Christensen
666af9ead5 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
a231c5461f Move Tid to pgtype 2017-03-11 16:48:37 -06:00
Jack Christensen
2f63514c47 Move ACLItem to pgtype 2017-03-11 16:13:05 -06:00
Jack Christensen
e654d1f0fc 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