Commit Graph

310 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
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
Steven Fackler
7b22574aa6 Mangle hidden trait method 2017-07-22 10:27:31 -07:00
Steven Fackler
792d7bf374 Just reexport types module 2017-07-20 22:58:29 -07:00
Steven Fackler
4c6e36e03a Fixes 2017-07-19 21:27:12 -07:00
Steven Fackler
fed246e9fd Error reform for tokio-postgres 2017-07-19 21:22:27 -07:00
Steven Fackler
d684e5edd6 Remove internals traits 2017-07-09 10:25:20 -07:00
Steven Fackler
bec973c776 Make Type an opaque type 2017-07-09 00:02:45 -07:00
Steven Fackler
561b46a7bf Rustfmt 2017-07-08 20:53:15 -07:00
Steven Fackler
01a1529624 Make SqlState into an opaque type rather than enum 2017-07-08 20:52:36 -07:00
Steven Fackler
c4367f1bbe Disable unix socket test 2017-07-08 19:48:29 -07:00
Steven Fackler
47b0db257c Switch CI to CircleCI 2.0 2017-07-08 19:41:24 -07:00
Steven Fackler
6a86f8dd85 Rustfmt 2017-06-30 17:35:17 -10:00
Steven Fackler
3809972907 Fix execute of statements which return rows
Closes #274
2017-06-30 17:33:49 -10:00
Steven Fackler
9628c5b89d Release tokio-postgres v0.2.3 2017-06-11 13:11:19 -07:00
Steven Fackler
9bb59ced69 More doc fixes 2017-05-07 19:19:48 -07:00
Steven Fackler
6b008766bf Use the bytes crate for backend message parsing (#253) 2017-05-06 08:28:07 -07:00
Steven Fackler
413d1db5cd Release tokio-postgres v0.2.2 2017-05-02 08:56:12 -07:00
Steven Fackler
1352f32421 Reexport openssl in tokio-postgres as well 2017-05-01 22:09:50 -07:00
Steven Fackler
23c232cbeb Start using tokio_io 2017-04-23 15:39:07 -07:00
Steven Fackler
9126ec4ef2 Support notifications on tokio-postgres
Closes #242
2017-03-08 10:38:20 +11:00
Steven Fackler
5685dded4e Release tokio-postgres 0.2.1 2017-02-23 20:40:02 -08:00
Steven Fackler
6e2927bf7e Rustfmt 2017-02-23 20:27:29 -08:00
Steven Fackler
68ba14d679 Fix build 2017-02-23 20:20:50 -08:00
Steven Fackler
682a45bb79 Don't depend on tokio-uds on Windows
Closes #236
2017-02-23 19:48:20 -08:00
Steven Fackler
c59799e376 Refactor connectparams 2017-02-15 21:42:27 -08:00
Steven Fackler
4c91a68dcc try! -> ? 2017-02-14 22:46:19 -08:00
Steven Fackler
28b7f05cb6 Fix warnings 2017-02-14 22:16:42 -08:00
Steven Fackler
a8ed34b66e Remove SessionInfo
This was never actually used, and is incompatible with tokio-postgres's
API.
2017-02-14 22:10:58 -08:00
Steven Fackler
814c5797c5 Release tokio-postgres v0.1.1 2017-02-04 15:37:34 -08:00
Steven Fackler
f37b9cfaf7 Manually inline types module
Doc inlining doesn't work with globs.
2017-02-04 15:11:29 -08:00
Steven Fackler
b673d8a727 Make statement IDs globally unique
This avoids weird behavior when using a statement with the wrong
connection
2017-01-07 14:36:40 -08:00
Steven Fackler
6275056953 Set the doc root 2016-12-26 17:38:07 -05:00
Steven Fackler
eb53d51512 Add a doc example 2016-12-26 17:19:43 -05:00
Steven Fackler
5004efb792 Rename crate 2016-12-26 16:41:09 -05:00