Commit Graph

179 Commits

Author SHA1 Message Date
Steven Fackler
2d2a5dea81 Send response messages in blocks
Our codec implementation originally just parsed single messages out of
the stream buffer. However, if a query returns a bunch of rows, we're
spending a ton of time shipping those individual messages from the
connection back to the Query stream. Instead, collect blocks of unparsed
messages that are as large as possible and send those back.

This cuts the processing time of the following query in half, from ~10
seconds to ~5:
`SELECT s.n, 'name' || s.n FROM generate_series(0, 9999999) AS s(n)`

At this point, almost all of the remainder of the time is spent parsing
the rows.

cc #450
2019-06-27 21:47:13 -07:00
Steven Fackler
9dbeb849f8 rustfmt 2019-06-25 19:20:59 -07:00
Steven Fackler
db462eb018 Avoid copies in copy_in
copy_in data was previously copied ~3 times - once into the copy_in
buffer, once more to frame it into a CopyData frame, and once to write
that into the stream.

Our Codec is now a bit more interesting. Rather than just writing out
pre-encoded data, we can also send along unencoded CopyData so they can
be framed directly into the stream output buffer. In the future we can
extend this to e.g. avoid allocating for simple commands like Sync.

This also allows us to directly pass large copy_in input directly
through without rebuffering it.
2019-06-25 18:54:17 -07:00
Steven Fackler
4a5d30b4c6 Buffer copy_in messages
Otherwise there's a ton of overhead passing tons of tiny messages over
channels.
2019-06-22 21:22:03 -07:00
Steven Fackler
d8842982b0 Include the parameter/column index in type conversion errors
Closes #442
2019-05-20 19:05:54 -07:00
Steven Fackler
1270524df2 Fix new clippy warnings 2019-04-11 19:51:42 -07:00
Steven Fackler
956ba12b54 Conversions from INET to IpAddr
We ignore the netmask when deserializing and use /32 or /128 when
serializing.

Closes #430
2019-04-03 21:30:49 -07:00
Steven Fackler
6c0ec6a6bf TLS docs for tokio-postgres 2019-04-01 21:56:25 -07:00
Steven Fackler
1cbf9a1b8d Fix build 2019-03-10 16:39:10 -07:00
Steven Fackler
3b31551f73 Upgrade fallible-iterator 2019-03-10 16:32:28 -07:00
Steven Fackler
e549f8d635 Fix features 2019-03-05 21:47:34 -08:00
Steven Fackler
4174eeeecb Release tokio-postgres v0.4.0-rc.1 2019-03-05 21:35:46 -08:00
Steven Fackler
9e4f4d3496 More clippy 2019-03-05 18:26:55 -08:00
Steven Fackler
1f80b78f07 Adjust API layout 2019-03-04 21:51:44 -08:00
Steven Fackler
31534b5734 Fix serde docs 2019-03-04 21:51:44 -08:00
Steven Fackler
1d3c540dd9 Fix serde docs 2019-03-04 21:26:10 -08:00
Steven Fackler
07c7ffdac6 Finish docs for tokio-postgres 2019-03-04 21:22:50 -08:00
Steven Fackler
d35139dac9 Fix ToSql/FromSql docs 2019-03-04 20:30:57 -08:00
TheSandwichMakr
5dd9bb5eab
move Debug from Inner to Config, use Formatter::debug_struct 2019-02-20 03:03:25 +00:00
TheSandwichMakr
4bde7d2e3c
Omit passwords from debug output 2019-02-19 23:23:42 +00:00
Steven Fackler
fb6e19ae60 Use geo-types rather than geo
Closes #418
2019-02-17 12:34:17 -08:00
Steven Fackler
7e0f10de0b Cleanups 2019-02-01 20:45:25 -08:00
Steven Fackler
fa3241e6b5 Fix geo feature 2019-01-31 21:28:04 -08:00
Steven Fackler
756121ed62 cleanup 2019-01-31 20:59:33 -08:00
Steven Fackler
32e09dbb91 Change batch_execute into simple_query
Closes #413
2019-01-31 20:35:17 -08:00
坚坚冰
0f8943952d fix missing '#[cfg(unix)]' 2019-01-31 12:30:45 +08:00
Steven Fackler
e3a25ad6c8 Skip DNS lookup for IP addrs 2019-01-19 13:38:51 -08:00
Steven Fackler
d2723f5382 Don't conditionally compile config bits 2019-01-18 21:29:13 -08:00
Steven Fackler
9e06d6b35e Document impls module 2019-01-17 21:16:50 -08:00
Steven Fackler
725b7153b6 Move futures/streams to a submodule 2019-01-17 21:14:09 -08:00
Steven Fackler
0ca084d676 Add ordering note 2019-01-17 20:45:51 -08:00
Steven Fackler
b3fdf168e5 Add a warning about transaction semantics 2019-01-17 20:35:12 -08:00
Steven Fackler
41243ae04f Little doc cleanup 2019-01-14 22:08:13 -08:00
Steven Fackler
07078871d9 Get rid of StringRow
It's not exposed by any methods, and the API isn't great.
2019-01-14 21:44:59 -08:00
Steven Fackler
2d3b9bb1c6 Move the TLS mode into config 2019-01-13 15:07:20 -08:00
Steven Fackler
dfc614bed1 Doc fixes 2019-01-08 13:45:54 -08:00
Steven Fackler
5b045940f4 Rename handshake to connect_raw 2019-01-07 21:45:09 -08:00
Steven Fackler
3a01c8c3a3 Finish config documentation 2019-01-07 21:27:52 -08:00
Steven Fackler
364a19b0b3 Fix test 2019-01-07 21:19:09 -08:00
Steven Fackler
03d1a5aed3 Fix build 2019-01-07 21:10:15 -08:00
Steven Fackler
e372cdc6f9 Docs 2019-01-07 20:44:26 -08:00
Steven Fackler
1f6d9ddc06 Overhaul query cancellation
Multi-host support means we can't simply take the old approach - we need
to know which of the hosts we actually connected to. It's also nice to
move this from the connection to the client since that's what you'd
normally have access to.
2019-01-06 18:03:51 -08:00
Steven Fackler
a6535b4310 Internal connect refactoring 2019-01-06 15:20:28 -08:00
Steven Fackler
e0d113791c Rename raw cancel query 2019-01-06 11:33:22 -08:00
Steven Fackler
940cbb8d4b Remove future from MakeTlsMode
It's unlikely to be useful in practice, and just introduces more
complexity.
2019-01-05 22:07:20 -08:00
Steven Fackler
0ae7670e05 tokio-postgres crate root docs 2019-01-05 21:39:08 -08:00
Steven Fackler
b55c2ea3c4 Regenerate phf map for new release 2019-01-04 16:57:15 -08:00
Steven Fackler
b2f1d51451 cleanup 2019-01-03 21:14:34 -08:00
Steven Fackler
9e25e47fe0 cleanup 2019-01-01 12:20:41 -08:00
Steven Fackler
8dcad81224 Support URL-style configuration strings 2019-01-01 12:11:30 -08:00