Commit Graph

220 Commits

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