Commit Graph

494 Commits

Author SHA1 Message Date
Steven Fackler
e5d2205ce1 Cut out unneeded quotes 2019-10-14 15:13:27 -07:00
Steven Fackler
270371a27a Remove some unused dependencies 2019-10-14 15:07:03 -07:00
Steven Fackler
9e42c67b7b Use the client buffer for cleanup 2019-10-12 18:07:09 -07:00
Steven Fackler
0736382593 Fix tests 2019-10-12 17:47:55 -07:00
Steven Fackler
ffd7245e54 Use BytesMut for messages
Benchmarks indicate that malloc accounts for a significant amount of the
runtime of queries. The message buffer accounts for ~half of that (the
other being channels), and this change should eliminate it.
2019-10-12 16:30:27 -07:00
Steven Fackler
01cc7e4715 Clean up derived code 2019-10-10 16:03:48 -07:00
Steven Fackler
31855141d2 Add query_one 2019-10-09 17:45:53 -07:00
Steven Fackler
8c28f8b363 Overhaul simple_query 2019-10-09 17:04:24 -07:00
Steven Fackler
c7055dc665 Clippy fixes 2019-10-09 15:20:23 -07:00
Steven Fackler
a3f611d609 Overhaul copy_out 2019-10-08 19:01:34 -07:00
Steven Fackler
b8577b45b1 Overhaul query_portal 2019-10-08 17:22:56 -07:00
Steven Fackler
2517100132 Overhaul query
This is the template that we'll use for all other methods taking
parameters. The `foo_raw` variant is the most flexible (but annoying to
use), while `foo` covers the expected common case.
2019-10-08 17:15:41 -07:00
Steven Fackler
0d2d554122 Add a ToStatement trait in tokio-postgres 2019-10-08 19:36:24 -04:00
Steven Fackler
286ecdb5b9 Start on borrow overhaul 2019-10-08 19:34:48 -04:00
Steven Fackler
e0e8c45159 Remove unneeded feature gate 2019-10-08 16:20:30 -07:00
Steven Fackler
3650d4a6de Implement traits for NoTls
Closes #495
2019-10-08 04:25:06 -07:00
Steven Fackler
c92e95dac2 Fix tests 2019-10-07 17:18:00 -07:00
Steven Fackler
4b5bcbb602 Split ToSql/FromSql out to a separate crate
Prep for a `derive` feature.
2019-10-07 17:14:18 -07:00
Steven Fackler
42f1f9675c Update codegen to Postgres 12
They've removed the old header files so some updates were required
2019-10-07 16:37:25 -07:00
Steven Fackler
d8b5412602 Upgrade errcodes to Postgres 12 2019-10-03 18:25:25 -07:00
Steven Fackler
e155af6419 Fix unix socket connection
Closes #491
2019-10-03 18:09:10 -07:00
Steven Fackler
30bd89c524 Upgrade tokio and futures-preview 2019-09-30 18:26:23 -07:00
Steven Fackler
de20f0fcd6 Fix bit-vec-support 2019-09-26 18:31:51 -07:00
Steven Fackler
1c1a939f8a
Merge branch 'master' into master 2019-09-26 21:23:55 -04:00
Steven Fackler
427340d748 Ensure connect future is Send 2019-09-25 18:30:00 -07:00
Steven Fackler
680f7b8ecb Start prepping for futures closing over parameters
Change the slice-consuming methods to requiring &(dyn ToSql + Sync),
which makes the overall value Send. If you have non-Sync values for
whatever reason, you can still use the iterator-based methods.
2019-09-25 18:22:59 -07:00
Steven Fackler
c9469ea826 Simplify logic 2019-09-25 17:59:33 -07:00
Steven Fackler
8079ed6766 Check channel binding requirements when unsupported locally 2019-09-25 17:46:15 -07:00
Steven Fackler
7b230592db Some cleanup 2019-09-25 17:44:45 -07:00
Steven Fackler
6c3a4ab192 Add channel_binding=disable/prefer/require to config
Closes #487
2019-09-24 17:03:37 -07:00
Steven Fackler
e2d305033e Remove vec workaround in tests 2019-09-23 15:57:58 -07:00
Steven Fackler
1fcf026af6 Remove workaround 2019-09-23 15:52:27 -07:00
Steven Fackler
1fa4838717 Upgrade to tokio alpha.5 2019-09-19 14:48:34 -07:00
Steven Fackler
5283ad4a08 Clean up workaround 2019-09-19 14:45:15 -07:00
Steven Fackler
b7fe6bece5 Update to newest nightly 2019-09-11 22:20:22 -04:00
Steven Fackler
08a163c546 Fix doc link 2019-09-08 16:54:57 -07:00
Steven Fackler
42cf855168 Include the Rust type name in WrongType 2019-09-06 04:37:26 -07:00
Jeb Rosen
98fb1173f5 Make prepare() return a Future that satisfies Send. 2019-09-03 18:44:30 -07:00
Steven Fackler
2a2b76d1b8 Upgrade to tokio alpha.4 2019-08-29 18:10:58 -07:00
Steven Fackler
c026644820 async_await is stable on nightly now 2019-08-21 07:48:36 -04:00
Steven Fackler
aa44090fad Update futures-preview/tokio 2019-08-18 09:02:21 -04:00
Steven Fackler
92e3d013eb Update to released tokio 2019-08-10 20:25:12 -07:00
Steven Fackler
3ed4543426 Don't block the reactor on DNS 2019-08-04 19:21:32 -07:00
Steven Fackler
f07ebc7373 Support nested transactions 2019-08-03 18:25:28 -07:00
Steven Fackler
2311ceac41 Cleanup shutdown call 2019-08-03 18:11:22 -07:00
Steven Fackler
f5a8b1de68 Update postgres 2019-08-03 18:09:27 -07:00
Steven Fackler
2a97c20bf2 Clean up old test 2019-08-02 20:31:15 -07:00
Steven Fackler
048e91a57d Use flush combinator 2019-08-02 20:30:36 -07:00
Steven Fackler
26a17ac4ed Support portals 2019-08-01 20:43:13 -07:00
Steven Fackler
e4a1ec23a1 Fix impl ordering 2019-08-01 18:44:38 -07:00
Steven Fackler
760039627a Fix build without the runtime feature 2019-08-01 18:43:38 -07:00
Steven Fackler
785205ffb2 Finish documenting everything 2019-08-01 18:40:14 -07:00
Steven Fackler
5dccb9988a Test notifications 2019-07-31 21:19:56 -07:00
Steven Fackler
e521e3b0a5 Transaction::copy_out 2019-07-31 20:16:07 -07:00
Steven Fackler
9c178ad816 Support copy_out 2019-07-31 20:15:17 -07:00
Steven Fackler
81bc845bcf Simplify logic a bit 2019-07-31 19:44:16 -07:00
Steven Fackler
beb509f3f3 rustfmt 2019-07-30 21:29:18 -07:00
Steven Fackler
f45884711f Support copy_in 2019-07-30 21:25:30 -07:00
Steven Fackler
4afd5235db Transaction support 2019-07-30 19:54:30 -07:00
Steven Fackler
88399a790c Cancel query support 2019-07-29 21:36:07 -07:00
Steven Fackler
9d851f6727 Fix doc examples 2019-07-29 18:55:11 -07:00
Steven Fackler
6fac2186ce
Fix Windows build? 2019-07-29 15:17:45 -07:00
Steven Fackler
00ef0bfd84 Use smoke_test for target_session_attrs_ok 2019-07-28 17:50:46 -07:00
Steven Fackler
dea6c3ebc5 Fix target_session_attrs handling 2019-07-28 17:48:32 -07:00
Steven Fackler
9938ffff1a Test and fix simple_query 2019-07-28 16:34:07 -07:00
Steven Fackler
07e5930ddb Handle target_session_attrs 2019-07-28 16:02:34 -07:00
Steven Fackler
e77b0fd009 Add simple_query and batch_execute 2019-07-28 15:52:46 -07:00
Steven Fackler
51f02c89ee Fully working prepare 2019-07-28 09:26:04 -07:00
Kai Yao
2c43519093 Updated bitvec to 0.6.1, as it supports serde serialization/deserialization. 2019-07-27 21:07:03 -05:00
Steven Fackler
4396f38fcc Setup socket 2019-07-25 07:21:53 -07:00
Steven Fackler
77caff91ef Add query/select 2019-07-24 21:28:52 -07:00
Steven Fackler
90eb58dc8e Some prep for custom type lookup 2019-07-23 20:16:31 -07:00
Steven Fackler
f9e46510ba Implement prepare 2019-07-23 19:54:22 -07:00
Steven Fackler
2480fefd2c Connection IO logic 2019-07-22 21:27:21 -07:00
Steven Fackler
32fe52490e Runtime connect 2019-07-22 20:17:29 -07:00
Steven Fackler
89501f66d9 Start on std::futures rewrite
connect_raw works!
2019-07-21 21:44:43 -07:00
Steven Fackler
d91f9d8407 gut tokio-postgres 2019-07-21 16:09:45 -07:00
Steven Fackler
8192c771c0 Add methods that take iterators of parameters
The existing methods which take slices of parameters work well when
directly passing a temporary slice (e.g. `c.query(s, &[&15, &"hi"])`,
but becomes limiting in other contexts like when programmatically
building up a query. We now offer methods which take iterators, which
are significantly more flexible for these kinds of use cases.

Because of the weird object safety of `ToSql`, we can't be generic over
`Iterator<Item = impl ToSql>`, but instead have to specifically work
with `Iterator<Item = &dyn ToSql>`. This may require a `.map()` or two
but should still work fine.

Closes #265
2019-07-09 19:00:10 -07:00
Steven Fackler
904c951ad6 Release postgres v0.16.0-rc.2 2019-06-29 21:43:50 -07:00
Steven Fackler
310f0ebfc6 Release tokio-postgres v0.4.0-rc.3 2019-06-29 21:18:28 -07:00
Steven Fackler
47d83d57a0 Release postgres-protocol v0.4.1 2019-06-29 21:06:23 -07:00
Steven Fackler
e760d82f64 Drop tokio- prefix from TLS crates
They're way too wordy and used with both tokio-postgres and postgres
anyway.
2019-06-29 16:07:56 -07:00
Steven Fackler
3f264027c9 Fix some typos 2019-06-29 12:32:46 -07:00
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
0c8ecc0240 Release postgres v0.16.0-rc.1 2019-04-06 20:59:01 -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
374fadb816 Release tokio-postgres-openssl v0.1.0-rc.1 2019-03-06 21:05:04 -08:00
Steven Fackler
4f084e7b64 Release tokio-postgres v0.4.0-rc.2 2019-03-05 21:49:54 -08: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
9385bebefc Release postgres-protocol v0.4.0 2019-03-05 19:09:48 -08:00
Steven Fackler
9e4f4d3496 More clippy 2019-03-05 18:26:55 -08:00
Steven Fackler
23b83e5153 Upgrade state-machine-future 2019-03-04 22:24:51 -08:00
Steven Fackler
269197f743 Fix build 2019-03-04 22:22:51 -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
48af741192 Add a simple_query test 2019-01-31 20:47:42 -08:00
Steven Fackler
32e09dbb91 Change batch_execute into simple_query
Closes #413
2019-01-31 20:35:17 -08:00
坚坚冰
5c7ddc9c85 Upgrade geo, rand and base64 2019-01-31 14:48:04 +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
Steven Fackler
272f1a88b9 Fix warning 2018-12-30 20:15:42 -08:00
Steven Fackler
a675b0b50a Accept a limited set of parameters in Config
This matches with libpq's behavior, which doesn't allow arbitrary
parameters. You can still set arbitrary parameters, just through the
`options` field.
2018-12-30 20:07:03 -08:00
Steven Fackler
45444d6c51 Support target_session_attrs
Closes #399
2018-12-30 11:50:15 -08:00
Steven Fackler
38db34eb6a Support TCP keepalive 2018-12-30 09:38:12 -08:00
Steven Fackler
9116147aee Rename Builder to Config 2018-12-29 21:00:58 -08:00
Steven Fackler
6ae93a0634 Add a convenience connect free function 2018-12-29 13:28:38 -08:00
Steven Fackler
23552b44a4 Simplify unix path handling a bit 2018-12-28 14:33:27 -05:00
Steven Fackler
634d24a951 Wrap Builder in an Arc
The builder ends up being cloned a couple of times per connection, so
use Arc::get_mut to make that faster.
2018-12-28 14:16:38 -05:00
Steven Fackler
540bcc5556 Remove unused type 2018-12-28 13:55:09 -05:00
Steven Fackler
635e6381b3 A less stringy builder
This allows us to support things like non-utf8 passwords and unix socket
directories.
2018-12-28 13:51:30 -05:00
Steven Fackler
e80e1fcaaf Don't require passwords to be strings in protocol 2018-12-27 17:36:04 -05:00
Steven Fackler
aa1e587433 Make internal simple query future a stream 2018-12-27 13:51:39 -05:00
Steven Fackler
defe764520 Support connect_timeout 2018-12-25 16:11:33 -05:00
Steven Fackler
d5104bc473 Turn on TCP nodelay in socket 2018-12-25 15:35:33 -05:00
Steven Fackler
be022b537c Fix poll_idle test race 2018-12-24 13:02:48 -05:00
Steven Fackler
760e4a4f3b Guarantee some buffer for messages 2018-12-23 15:50:41 -08:00
Steven Fackler
7eaac1cb1a Sync copy_in support 2018-12-22 21:42:03 -08:00
Steven Fackler
1fdfefbeda Add Client::poll_idle
Closes #403
2018-12-22 17:02:48 -08:00
Steven Fackler
b9e8b4868b Add Client::is_closed 2018-12-21 21:08:26 -08:00
Steven Fackler
26eb27e70d Support one-off queries in sync API
We can't do this in tokio-postgres while borrowing the parameters, but
it's fine in the sync API!
2018-12-21 20:13:15 -08:00
Steven Fackler
7d20064bd0 Rename into_cause to into_source 2018-12-20 20:36:14 -08:00
Steven Fackler
23b0d6e6f3 Support multiple hosts when connecting
cc #399
2018-12-19 20:18:48 -08:00
Steven Fackler
7e7ae968c1 Prep for multi-host support
cc #399
2018-12-18 21:39:05 -08:00
Steven Fackler
56088a9a46 Fix warning 2018-12-17 21:59:14 -08:00
Steven Fackler
919012d0c9 Finish convenience API 2018-12-17 21:25:21 -08:00
Steven Fackler
7df7fc715b Start on runtime API 2018-12-16 22:00:46 -08:00
Steven Fackler
707b87a18e Fix parameter parsing and add test
Our behavior matches libpq's - in particular it allows any escape
sequence and trailing \'s...
2018-12-16 19:24:22 -08:00
Steven Fackler
7297661cef Shift tests down 2018-12-16 16:08:55 -08:00
Steven Fackler
46f4a2911c Deserialize libpq-style connection strings
Just the key/value pair version for now - URLs will come later
2018-12-13 21:03:47 -08:00
Steven Fackler
10a850a527 Hide trait method 2018-12-10 21:15:49 -08:00
Steven Fackler
c23e3e0bda Merge row bits 2018-12-10 20:56:22 -08:00
Steven Fackler
fa8fa1a75b rustfmt 2018-12-09 21:44:59 -08:00
Steven Fackler
04ce4bb7a1 Run clippy 2018-12-09 21:44:07 -08:00
Steven Fackler
8c3338e37d Enforce rustfmt in CI 2018-12-09 18:01:36 -08:00
Steven Fackler
0db96ff62e Add back type tests 2018-12-09 16:19:45 -08:00
Damir Vandic
9f7ccebd8b
Update features for meta data docs.rs 2018-12-09 17:13:14 +01:00
Steven Fackler
12345a73b0 Upgrade uuid and eui48 2018-12-08 18:09:19 -08:00
Steven Fackler
69a016fd85 Rename optional crate imports 2018-12-08 18:07:09 -08:00
Steven Fackler
6ff59acdd2 rustfmt 2018-12-08 17:53:30 -08:00
Steven Fackler
b4ce9c38e5 Upgrade tokio-postgres to 2018 edition 2018-12-08 17:52:20 -08:00
Steven Fackler
4d16fbb906 Get rid of postgres-shared 2018-12-08 17:39:20 -08:00
Kyle Huey
39efb1378a Remove now-gone with-openssl from docs metadata. 2018-12-05 10:59:04 -08:00
Steven Fackler
db771e8bdf Switch copy_in to use Buf 2018-12-02 21:26:10 -08:00
Steven Fackler
43e6598983 Modernize error a bit 2018-12-01 20:27:06 -08:00
Steven Fackler
d58b1815ad Fix up new transaction API 2018-12-01 20:01:46 -08:00
Steven Fackler
a9b01b4807
Merge pull request #384 from DarrenTsung/transaction-builder
Add a TransactionBuilder struct
2018-12-01 19:56:44 -08:00
Steven Fackler
d9d81b53a3 Tweak ChannelBinding API 2018-11-30 08:13:10 -08:00
Steven Fackler
39e2723ccb Remove tls-unique channel binding
This got axed in the stable PostgreSQL 11 stable release.
2018-11-28 20:09:04 -08:00
Steven Fackler
a24b927bbb Fix CopyIn Future bound 2018-11-28 19:44:07 -08:00
Steven Fackler
52dd0b6780 rustfmt 2018-11-28 19:32:29 -08:00
Steven Fackler
08b4020534 Overhaul connection APIs
* `Connection` is now parameterized over the stream type, which can be
    any `AsyncRead + AsyncWrite`.
* The `TlsMode` enum is now a trait, and `NoTls`, `PreferTls`, and
    `RequireTls` are types implementing that trait.
* The `TlsConnect` trait no longer involves trait objects, and returns
    channel binding info alongside the stream type rather than requiring
    the stream to implement an additional trait.
* The `connect` free function and `ConnectParams` type is gone in favor
    of a `Builder` type. It takes a pre-connected stream rather than
    automatically opening a TCP or Unix socket connection.

Notably, we no longer have any dependency on the Tokio runtime. We do
use the `tokio-codec` and `tokio-io` crates, but those don't actually
depend on mio/tokio-reactor/etc. This means we can work with other
futures-based networking stacks.

We will almost certainly add back a convenience API that offers
something akin to the old logic to open a TCP/Unix connection
automatically but that will be worked out in a follow up PR.
2018-11-28 19:20:40 -08:00
Steven Fackler
0e60d80d4b Parameterize Connection over the stream 2018-11-25 08:49:28 -08:00
Darren Tsung
f3777bed76 Add a TransactionBuilder struct
The TransactionBuilder is useful when trying to create a Transaction
around a future which takes ownership of the client. See doc comment
for more details.
2018-11-06 10:14:32 -08:00
Steven Fackler
04bd98e7ed Make TlsConnect Sync and Send
Closes #382
2018-10-27 16:31:51 -07:00
Steven Fackler
16d1a050e7 Tweak docs 2018-10-14 17:50:21 -07:00
Michael Niens
d6fd28d02f Allow to build on Windows
Someone forgot to handle the non unix case for this match which prevented a build on windows.

A similar line already existed here in line 51 to 56.
5ad7850009/tokio-postgres/src/stream.rs
2018-08-26 00:06:42 +02:00
Steven Fackler
4eecb59bf4 Used released tokio-uds 2018-08-19 22:07:01 -07:00
Steven Fackler
5bea375b37 Remove the flush step from connect future
The socket's not buffered, so there's no need to do this.
2018-08-18 13:02:52 -07:00
Steven Fackler
7de5ac85af
Merge pull request #368 from StoriqaTeam/geo-0.10
Support geo 0.10
2018-08-17 10:59:54 -07:00
Artem Vorotnikov
a33edae15b
Upgrade to geo-0.10 2018-08-17 18:18:28 +03:00
Steven Fackler
89f5198261 Add query_portal 2018-08-15 21:00:15 -07:00
Steven Fackler
349f3764a9 Don't bother waiting for a ReadyForQuery
We use it in the connection to track framing but don't need to wait
around for it in the individual futures/streams
2018-08-15 20:24:50 -07:00
Steven Fackler
dcde61c16d Add bind/portal 2018-08-15 19:53:20 -07:00
Steven Fackler
a4bdcb11e4 Overhaul error type 2018-08-15 10:27:34 -07:00
Steven Fackler
a05adff20d Make DbError's fields private 2018-08-14 16:58:10 -07:00
Steven Fackler
1d9ae82198 Move error in-crate
We'll operate under the assumption that postgres will end up being a
wrapper on top of tokio-postgres so postgres-shared goes away.
2018-08-13 13:25:29 -06:00
Steven Fackler
3d22aa323b Make copy_in stream more flexible 2018-08-12 21:23:21 -06:00
Steven Fackler
bfd2c7f436 Fix assert 2018-08-12 20:49:59 -06:00
Steven Fackler
b74f5c80d0 copy in support 2018-08-12 20:19:27 -06:00
Steven Fackler
daeb5389ed log typo 2018-08-10 11:35:14 -07:00
Steven Fackler
7056e3ec24 Copy out support 2018-07-15 19:40:15 -07:00
Steven Fackler
9e399aa93f Basic transaction support 2018-07-14 14:59:37 -07:00
Steven Fackler
bf0633681b Fix pipelined preparation
We can end up double-preparing the typeinfo queries if we're pipelining
preparation, so pick a unique name for them.
2018-07-08 16:06:53 -07:00
Steven Fackler
53657b828a Implement batch_execute 2018-07-07 22:42:04 -07:00
Steven Fackler
3955d26c20 Don't hold strong references in statements
There's no need for the connection to stay open until statements drop -
they'll be cleaned up anyway once the connection dies.
2018-07-07 16:43:07 -07:00
Steven Fackler
1788a03baa notification/notice support 2018-07-07 10:11:16 -07:00
Steven Fackler
997b5e01a4 Set TCP_NODELAY for tokio-postgres 2018-07-05 21:36:50 -07:00
Steven Fackler
a237a471c9 Support custom types 2018-07-05 20:48:08 -07:00
Steven Fackler
be2ca03fa9 tokio-postgres query cancellation 2018-06-27 22:37:43 -07:00
Steven Fackler
c2fb9c6de0 Move TLS logic to connect future
This way we can reuse it for query cancellation
2018-06-26 22:04:15 -07:00
Steven Fackler
6edab70b0e Channel binding support in tokio-postgres 2018-06-26 21:17:04 -07:00
Steven Fackler
70758bcd93 tokio-postgres TLS setup 2018-06-25 21:16:18 -07:00
Steven Fackler
5fbe20fd25 Auth tests 2018-06-21 22:38:42 -04:00
Steven Fackler
24d216cd7f simplify test a bit 2018-06-20 21:08:08 -04:00
Steven Fackler
e86091a268 Working select/execute 2018-06-20 20:06:11 -04:00
Steven Fackler
cb805d6057 Add execute 2018-06-19 22:10:07 -04:00
Steven Fackler
aa0fca4929 tag futures as must use 2018-06-19 19:54:29 -04:00
Steven Fackler
e9db2bf284 Defer message sends until first poll
This matches up generally with the "futures do nothing until polled"
model.
2018-06-19 19:51:30 -04:00
Steven Fackler
9d5a36e173 Only flush if necessary
If poll_write was blocked trying to write a request out to the socket,
it's because the write triggered a flush and the socket wasn't ready. We
don't want to try to flush again, since it's at best a waste of time and
at worst can cause a deadlock if the socket becomes available after the
poll_write and before the poll_flush. If that happens, we should be in
poll_write again writing more data but that wouldn't happen.
2018-06-18 22:49:53 -04:00
Steven Fackler
13fcea7ae2 Working statement preparation 2018-06-18 22:34:25 -04:00
Steven Fackler
0d0435fc2e Start on prepare 2018-06-18 08:18:04 -04:00
Steven Fackler
8c3770bd57 Start on tokio-postgres rewrite 2018-06-16 21:29:27 -07:00
Steven Fackler
11ffcac087 Support SCRAM channel binding for Postgres 11 2018-06-01 23:07:33 -07:00
Kyle Huey
e9c773c317 Derive Debug on Notifications. 2018-05-02 09:28:09 -07:00
Steven Fackler
15b6cd57f5 Upgrade type crate versions
Also add the version number to the feature name. This both makes it more
obvious when using them and opens the window for support of multiple
versions simultaneously in the future.
2018-04-29 13:12:58 -07:00
Steven Fackler
2777703ef3 Make constants associated 2018-04-22 15:01:55 -07:00
Steven Fackler
fcbed9175b Allow FromSql to borrow from the buffer
This allows for in-place deserialization of text and bytea values in
particular.

Row::get_bytes is removed since it previously existed for this use case.

Closes #281
2018-04-22 13:16:34 -07:00
Steven Fackler
b210624800 Fix minimum tokio-core version 2018-04-15 14:38:58 -07:00
Steven Fackler
06bcde2da1 Keepalive support in tokio-postgres 2018-04-15 14:38:01 -07:00
Kyle Huey
b9b3f47151 Change Handshake trait to not consume itself on use. 2018-01-29 04:16:32 -08:00
Kyle Huey
b171da35f5 Add an is_desynchronized on tokio_postgres::Connection. 2018-01-29 03:05:16 -08:00
Steven Fackler
bb3ebbf943 Fix some warnings 2018-01-09 21:15:35 -08:00
Quentin Laveau
3e4186a316 Correct build error on non-unix targets for tokio-postgres 2017-10-09 09:24:43 +02:00
Steven Fackler
762a7aef7f Release v0.3.0 2017-09-30 16:14:46 -07:00
Steven Fackler
24abd2e319 Remove more deprecated use 2017-09-30 15:22:33 -07:00
Steven Fackler
a24704e998 Fix doctest 2017-09-30 15:16:45 -07:00
Steven Fackler
6780d41225 Stop using deprecated stuff 2017-09-30 15:14:02 -07:00
Steven Fackler
9373d2fa55 Update futures-state-stream 2017-09-30 14:56:15 -07:00
Steven Fackler
d0db938f82 Forward macros 2017-07-23 15:43:05 -07:00