143 Commits

Author SHA1 Message Date
Jack Christensen
bcc139a365 Port fc020c24ac9590f6547f8ad1d291fc75b4873a84 from pgx v3
commit fc020c24ac9590f6547f8ad1d291fc75b4873a84
Author: Nicholas Wilson <nicholas.wilson@realvnc.com>
Date:   Wed Jul 24 12:32:18 2019 +0100

    Add support for pgtype.UUID to write into any [16]byte type
2019-08-17 13:30:41 -05:00
Jack Christensen
4e0ed911f5 Import Fix for -0 numeric
From pgx: d678216f468d1fe4dc28649feacd4b30a176769e
2019-06-08 11:45:47 -05:00
Jack Christensen
3294a8cf1f Allow empty hstore keys
See pgx commit: 56f4f0b9d319a910016ce044a53f52fcf986ddc6
2019-05-20 16:26:58 -05:00
Jack Christensen
99fd636b8e Finish mod changes for split 2019-04-20 19:20:51 -05:00
Jack Christensen
4ed0de4755 Splitting pgtype into own repo 2019-04-20 19:14:08 -05:00
Jack Christensen
f25878662d Use golang.org/x/xerrors 2019-04-20 17:43:44 -05:00
Jack Christensen
8502a12ac7 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
6161728ff9 Prepare takes context
Also remove PrepareEx. It's primary usage was for context. Supplying
parameter OIDs is unnecessary when you can type cast in the query SQL.
If it does become necessary or desirable to add options back it can be
added in a backwards compatible way by adding a varargs as last
argument.
2019-04-20 11:47:16 -05:00
Jack Christensen
78eda7d567 Remove unused scan float into numeric 2019-04-13 18:06:09 -05:00
Jack Christensen
4e79a104f7 Test domains when registered and unregistered
Fix bug assigning to unknown type.
2019-04-13 17:09:51 -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
a0f487bc09 More transcoding type tests
Text every combination of text and binary arguments and text and binary
results.
2019-04-13 14:17:04 -05:00
Jack Christensen
ea65a92de9 Fix long standing text array text format null bug 2019-04-13 14:06:01 -05:00
Jack Christensen
7fbae064bb Remove simple protocol and one round trip query options
It is impossible to guarantee that the a query executed with the simple
protocol will behave the same as with the extended protocol. This is
because the normal pgx path relies on knowing the OID of query
parameters. Without this encoding a value can only be determined by the
value instead of the combination of value and PostgreSQL type. For
example, how should a []int32 be encoded? It might be encoded into a
PostgreSQL int4[] or json.

Removal also simplifies the core query path.

The primary reason for the simple protocol is for servers like PgBouncer
that may not be able to support normal prepared statements. After
further research it appears that issuing a "flush" instead "sync" after
preparing the unnamed statement would allow PgBouncer to work.

The one round trip mode can be better handled with prepared statements.

As a last resort, all original server functionality can still be accessed by
dropping down to PgConn.
2019-04-13 11:39:01 -05:00
Jack Christensen
f779b05f36 Extract scan value to pgtype 2019-04-12 21:31:59 -05:00
Jack Christensen
59003afe8c Fix encode empty value 2019-04-12 21:23:57 -05:00
Jack Christensen
fcbd9e93fa Initial pass at fixing pgtype tests
Many still failing, but at least it compiles now.
2019-04-12 16:58:42 -05:00
Jack Christensen
0ac82007fb Use extracted packages with Go modules 2019-04-05 10:59:47 -05:00
David Bariod
738f3a1027 support binding of []int type to array integer 2019-01-19 11:44:30 -06:00
maxarchx
f9440700e5 Apply UUID string length check before parsing 2018-11-30 15:13:43 +05:00
Jack Christensen
6c9b75d49b Merge pull request #454 from regeda/macaddr-array
macaddr array is introduced
2018-09-01 22:46:13 -04:00
Jack Christensen
8f7c03a47f Fix: do not silently ignore assign NULL to *string
AssignTo can only assign NULL to a **string. Previous code tried to
assign nil to a *string, which did nothing. Correct behavior is to
detect this as an error.
2018-09-01 18:40:42 -05:00
Anthony Regeda
88d317af97 macaddr-array macaddr array is introduced 2018-09-01 16:06:20 +03:00
Damir Vandic
79ba0275de Add the type of the value in all decode error messages 2018-06-04 21:02:20 +02:00
Tarik Demirci
3ec4c6ca23 Allow setting nil to pgtype.Bool 2018-05-17 12:22:48 +02:00
Anthony Regeda
5524d654d3 numeric_with_uint64 numeric array supports both types int64 and uint64 2018-04-24 16:31:31 +03:00
Jack Christensen
9bb19fd8e7 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
46d0f7e1c8 Fix precision loss for test format geometric types
fixes #399
2018-03-17 10:26:03 -05:00
Jack Christensen
898fc86e25 Skip line test of PG 9.3 2018-03-08 08:05:54 -05:00
Jack Christensen
7ed0a8732c Update shopspring decimal integration test
New version of shopspring/decimal improves precision. This broke a test.
2018-03-08 07:40:25 -05:00
Jack Christensen
f078754e05 Skip test based on missing line type
Instead of explicit server version checking. Ubuntu installed version
string is not parsable by go-version. e.g.

10.2 (Ubuntu 10.2-1.pgdg16.04+1)
2018-02-16 21:39:19 -06:00
Jack Christensen
44bb11de82 Import encoding/json package 2018-01-13 18:14:42 -06:00
Jack Christensen
c01e12e351 Merge branch 'patch-1' of https://github.com/eruca/pgx into eruca-patch-1 2018-01-13 18:12:35 -06:00
Iurii Krasnoshchok
91bb74b526 Add support for bpchar type 2018-01-02 12:29:40 +01:00
eruca
fbc0fc7e3e UnmarshalJSON for Int8 missing 2017-12-29 21:09:22 +08:00
Jack Christensen
81b3e79897 Merge pull request #371 from ferhatelmas/gofmt-simplify
Run gofmt with simplify flag
2017-12-23 10:32:44 -06:00
Jack Christensen
5bd04dc568 Add test for record with unknown OID 2017-12-23 10:24:09 -06:00
ferhat elmas
645e646183 Run gofmt with simplify flag 2017-12-21 23:45:26 +01:00
Iurii Krasnoshchok
e22e7e67ec Return error on unknown oid while decoding record instead of panic 2017-12-20 14:47:52 +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
Jack Christensen
3f02d66ae0 Detect erroneous JSON(B) encoding
JSON(B) automatically marshals any value. Avoid marshalling values of
pgtype.JSON and pgtype.JSONB. The caller certainly meant to call on a
pointer.

See https://github.com/jackc/pgx/issues/350 for discussion.

refs #350
2017-11-04 19:09:24 -05:00
Jack Christensen
4e334054dd Fix ranges with text format where end is unbounded
fixes #342
2017-11-04 14:03:46 -05:00
Jack Christensen
5ab54cb24f Add String method to pgtype.BoundType
Character representation is much easier to read than numeric.
2017-11-04 13:47:03 -05:00
Jack Christensen
6618ea669e Use named value instead of literal 2017-11-04 13:37:47 -05:00
Jack Christensen
5ba28cf2c5 Add support for array of enum
fixes #338
2017-10-17 20:31:11 -05:00
Jack Christensen
3453586e89 Add UnmarshalJSON to a few types 2017-09-29 15:26:37 -05:00
Jack Christensen
2e630dddf9 Fix decoding row with same type values
Row decoding was reusing and returning connection owned values for
decoding. Instead allocate new value each time.

fixes #313
2017-08-29 15:38:45 -05:00
Jack Christensen
703ce85513 Generate UUIDArray from template
- Fix error in Set
- Specifically handle untyped nil
2017-08-29 14:33:25 -05: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