Commit Graph

108 Commits

Author SHA1 Message Date
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