Commit Graph

31 Commits

Author SHA1 Message Date
Joshua Nelson
61f6e3e5c4 Add newline before DETAIL and HINT 2020-08-01 11:12:22 -04:00
Joshua Nelson
ce7ce310b9 Give a more helpful message on error
Before:

```
database error: ERROR: insert or update on table "owner_rels" violates foreign key constraint "owner_rels_cid_fkey"
```

After:

```
database error: ERROR: insert or update on table "owner_rels" violates foreign key constraint "owner_rels_cid_fkey"
DETAIL:  Key (cid)=(4) is not present in table "releases".
```
2020-07-31 20:59:57 -04:00
Steven Fackler
3e67dbb773 Fix clippy 2020-06-10 16:54:07 -07:00
Steven Fackler
a22f63b5bb Fix sqlstate generation 2019-12-02 17:55:08 -08:00
Steven Fackler
e5e03b0064 Change the copy_in interface
Rather than taking in a Stream and advancing it internally, return a
Sink that can be advanced by the calling code. This significantly
simplifies encoding logic for things like tokio-postgres-binary-copy.

Similarly, the blocking interface returns a Writer.

Closes #489
2019-11-30 11:04:59 -05:00
Steven Fackler
cff1189cda Include column ID in error
Closes #514
2019-11-17 09:17:02 -08:00
Steven Fackler
31855141d2 Add query_one 2019-10-09 17:45:53 -07:00
Steven Fackler
d8b5412602 Upgrade errcodes to Postgres 12 2019-10-03 18:25:25 -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
9e4f4d3496 More clippy 2019-03-05 18:26:55 -08:00
Steven Fackler
32e09dbb91 Change batch_execute into simple_query
Closes #413
2019-01-31 20:35:17 -08:00
Steven Fackler
b55c2ea3c4 Regenerate phf map for new release 2019-01-04 16:57:15 -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
defe764520 Support connect_timeout 2018-12-25 16:11:33 -05: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
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
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
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
b4ce9c38e5 Upgrade tokio-postgres to 2018 edition 2018-12-08 17:52:20 -08:00
Steven Fackler
43e6598983 Modernize error a bit 2018-12-01 20:27:06 -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
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