1741 Commits

Author SHA1 Message Date
Jack Christensen
c03ac1519e Improve stdlib performance with large result sets
In a hot path type assertions are expensive. Cache the already correctly
typed interfaces. ~20% improvement with 1000 rows.

Before:

jack@glados ~/dev/pgx/stdlib ±master » PGX_BENCH_SELECT_ROWS_COUNTS='1 10 1000' got ./... -bench=SelectRows -benchmem
goos: darwin
goarch: amd64
pkg: github.com/jackc/pgx/v4/stdlib
BenchmarkSelectRowsScanSimple/1_rows-16         	   21465	     55060 ns/op	    1679 B/op	      40 allocs/op
BenchmarkSelectRowsScanSimple/10_rows-16        	   16692	     71176 ns/op	    3827 B/op	     148 allocs/op
BenchmarkSelectRowsScanSimple/1000_rows-16      	     800	   1369547 ns/op	  248855 B/op	   12938 allocs/op
BenchmarkSelectRowsScanNull/1_rows-16           	   20306	     57883 ns/op	    1940 B/op	      54 allocs/op
BenchmarkSelectRowsScanNull/10_rows-16          	   15942	     74729 ns/op	    4294 B/op	     171 allocs/op
BenchmarkSelectRowsScanNull/1000_rows-16        	     829	   1326788 ns/op	  261291 B/op	   13051 allocs/op
PASS
ok  	github.com/jackc/pgx/v4/stdlib	10.429s

After:

jack@glados ~/dev/pgx/stdlib ±master » PGX_BENCH_SELECT_ROWS_COUNTS='1 10 1000' got ./... -bench=SelectRows -benchmem
goos: darwin
goarch: amd64
pkg: github.com/jackc/pgx/v4/stdlib
BenchmarkSelectRowsScanSimple/1_rows-16         	   21327	     55097 ns/op	    2127 B/op	      43 allocs/op
BenchmarkSelectRowsScanSimple/10_rows-16        	   16724	     69496 ns/op	    4276 B/op	     151 allocs/op
BenchmarkSelectRowsScanSimple/1000_rows-16      	    1009	   1124573 ns/op	  250037 B/op	   12941 allocs/op
BenchmarkSelectRowsScanNull/1_rows-16           	   20577	     58117 ns/op	    2396 B/op	      57 allocs/op
BenchmarkSelectRowsScanNull/10_rows-16          	   16402	     72533 ns/op	    4750 B/op	     174 allocs/op
BenchmarkSelectRowsScanNull/1000_rows-16        	    1010	   1161437 ns/op	  261735 B/op	   13054 allocs/op
PASS
ok  	github.com/jackc/pgx/v4/stdlib	10.363s
2020-05-08 00:06:42 -05:00
Jack Christensen
dea915e605 Compare binary and text format through pgx
Make ID field bigger -- otherwise all ints are less than 4 digits and
get a bit too much of an advantage in text vs. binary
2020-05-07 22:28:46 -05:00
Jack Christensen
e439372d2a Add multi-row select benchmarks 2020-05-07 22:28:46 -05:00
Jack Christensen
f18351f61c Use ++ instead of += 1 2020-05-07 22:28:46 -05:00
Jack Christensen
f9ce8af5c9 Add explicit enum support 2020-05-07 22:28:46 -05:00
Jack Christensen
71fb93a96c Add CopyFrom with enum test 2020-05-07 22:28:46 -05:00
Jack Christensen
3c5d72a8d9
Merge pull request #733 from dchenk/patch-1
Small typo fixed
2020-04-30 19:15:06 -05:00
Dmitriy
830193dc36
Small typo fixed 2020-04-29 22:23:46 -07:00
Jack Christensen
63428b802d
Merge pull request #731 from felixge/patch-1
Fix typo in readme
2020-04-28 10:47:33 -05:00
Felix Geisendörfer
23a4edc0d7
Fix typo in readme 2020-04-28 11:33:33 +02: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
5f723da269
Merge pull request #716 from redbaron/row-values-doc
Clarify row type handling example
2020-04-10 13:19:28 -05:00
Maxim Ivanov
198f5093e8 Clarify row type handling example 2020-04-10 18:39:04 +01:00
Jack Christensen
3286f3111b
Merge pull request #715 from redbaron/row-values-doc
Document row and composite types handling
2020-04-10 12:04:53 -05:00
Maxim Ivanov
692e10f901 Document row and composite types handling 2020-04-10 17:08:56 +01:00
Jack Christensen
7a9efdefde
Merge pull request #712 from lbcjbb/master
[pgxpool] Fix connection leak if BeginTx() fail
2020-04-07 19:52:40 -05:00
Jean-Baptiste Bronisz
4127eba03f
[pgxpool] Fix connection leak if BeginTx() fail 2020-04-07 22:31:09 +02:00
Jack Christensen
e6af41a78a
Merge pull request #709 from georgysavva/flexible-pool-init
Add ability to skip network operations on pool initialization.
2020-04-04 07:54:28 -05:00
georgysavva
271f5a8a7d revert go.sum 2020-04-03 10:56:40 +03:00
georgysavva
5d453485a9 Introduce new pool setting: LazyConnect 2020-04-03 10:28:05 +03:00
Jack Christensen
bc4586ac6f Update to puddle v1.1.1
Fixes potential race condition if health check is creating new
connections while the pool is closed.
2020-04-02 22:24:09 -05:00
Jack Christensen
f76d37a387 Do not run timing sensitive test in parallel
This test
2020-04-02 22:24:09 -05:00
Jack Christensen
0329f12e05 Remove unneeded goroutine spawn in connection pool destructor
fixes #708
2020-04-02 22:24:09 -05:00
Jack Christensen
43c2113f90
Merge pull request #706 from georgysavva/wrapTx-context
add context to `stdlib.wrapTx{}`
2020-04-02 08:19:05 -05:00
georgysavva
7738775417 Include context into stdlib.wrapTx{} in order to propagate it to the underlying pgx.Tx.Commit() and Rollback() methods. 2020-04-02 15:30:55 +03:00
Jack Christensen
9188e32737
Merge pull request #704 from OberstK/patch-1
Fix of Link in Readme
2020-03-31 09:09:49 -05:00
Benjamin Kurczyk
e6e888b15c
Fix of Link in Readme
The Link to "tern" is wrong. This fixes it
2020-03-31 15:34:56 +02:00
Jack Christensen
27a069cea3 List pgerrcode in related libraries 2020-03-30 15:09:40 -05:00
Jack Christensen
14062fd19f Link to related libraries 2020-03-30 15:08:35 -05:00
Jack Christensen
0446492fe9 Release v4.6.0 v4.6.0 2020-03-30 11:35:02 -05:00
Jack Christensen
cdec57523d Update to pgtype v1.3.0 2020-03-30 11:31:23 -05:00
Jack Christensen
da5c28239b Update to pgconn v1.5.0 2020-03-30 11:21:43 -05:00
Jack Christensen
75f79ebc0f Merge branch 'anicoll-microsecond_accuracy' 2020-03-27 16:03:14 -05:00
Andrew Nicoll
816e95d3ee sanatize time to within microsecond accuracy 2020-03-27 13:03:36 +00:00
Jack Christensen
af03592c0f Merge branch 'treebeardcpu-patch-2' 2020-03-25 20:26:13 -05:00
Jack Christensen
fef3ffc391 Link to pkg.go.dev instead of godoc.org
This is a big improvement because it can directly link to the v4 docs
instead of the pre-modules v3. The badge should be changed once the new
pkg.go.dev badge is available.
2020-03-25 20:24:20 -05:00
Jack Christensen
1dc45f1fa0 README.md tweaks 2020-03-25 20:23:04 -05:00
treebeardcpu
7ca7515087
README: improve flow and readability
Some grammatical changes, some formatting, some new text.
pgx is an excellent driver and deserves an excellent README :)
2020-03-25 19:59:24 -04:00
Jack Christensen
844dccf412
Merge pull request #692 from basvanbeek/early_bail
bail early if preloading rows.Next() results in rows.Err()
2020-03-21 10:58:16 -05:00
Jack Christensen
ed50e535c7 Update example readme 2020-03-19 20:50:11 -05:00
Bas van Beek
e75d315079 bail early if preloading rows.Next() results in rows.Err() 2020-03-17 19:50:23 +01:00
Jack Christensen
576f99a35e Release v4.5.0 v4.5.0 2020-03-07 13:32:17 -06:00
Jack Christensen
95907c29ce Update pgconn and pull in fix for QueryRow with empty SQL 2020-03-07 13:27:01 -06:00
Jack Christensen
9e495df1d5 Add test for rollback failure 2020-02-29 09:48:16 -06:00
Jack Christensen
710ddf7134
Merge pull request #682 from WGH-/batch-len
Add Len() method to *pgx.Batch
2020-02-22 09:21:21 -06:00
Jack Christensen
edf1229fba
Merge pull request #681 from benjamin-bader/log_batched_queries
Add query logging for individual batch items
2020-02-22 09:19:34 -06:00
WGH
c01721e3ba Add Len() method to *pgx.Batch
This makes the API slightly easier to use when number of calls to
Queue() cannot be trivially computed.

For example, if the program contains the loop like the following,
a separate variable counting the iterations is needed:

    numHeaders := 0
    for _, header := range prepareHeadersForInsert(*res.Headers) {
        headerBatch.Queue("INSERT ...", ...)
        numHeaders++
    }

    headerBatchResult := tx.SendBatch(ctx, headerBatch)

    for i := 0; i < numHeaders; i++ {
        _, err := headerBatchResult.Exec()
        // ...
    }

With method Len(), this extra variable can be eliminated.
2020-02-21 22:28:34 +03:00
Ben Bader
a10b89ebc0 Add query logging for individual batch items 2020-02-18 16:22:29 -08:00
Jack Christensen
542c9a97f1 Release v4.4.1 v4.4.1 2020-02-14 17:59:33 -06:00
Jack Christensen
8848816c13 Update pgconn to v1.3.2 for better default buffer size 2020-02-14 17:58:38 -06:00