Commit graph

733 commits

Author SHA1 Message Date
Tom Dohrmann
a600b5b856 add tests for postgres struct field encoding 2020-03-16 22:58:31 -07:00
Tom Dohrmann
6baddae9fd fix error messages 2020-03-16 22:58:31 -07:00
Tom Dohrmann
a2ba26dc7e add explanation for size_hint 2020-03-16 22:58:31 -07:00
Tom Dohrmann
7185f1ff25 switch from vecs to iterator chains 2020-03-16 22:58:31 -07:00
Tom Dohrmann
4cd179d42b move decode_struct_field and encode_struct_field to sqlx-core 2020-03-16 22:58:31 -07:00
freax13
e603f5fcf6 split derives into different files 2020-03-16 22:58:25 -07:00
Tom Dohrmann
9c96bc92ee move feature guard from strong_enum to struct 2020-03-16 22:58:25 -07:00
Tom Dohrmann
d3cb84b893 fix db type 2020-03-16 22:58:25 -07:00
Tom Dohrmann
e166f062be format 2020-03-16 22:58:25 -07:00
Tom Dohrmann
c3aeb275c2 add derive macros for weak & strong enums and structs 2020-03-16 22:58:25 -07:00
Ryan Leckey
ada57fa566 postgres depends on Sink from futures 2020-03-16 22:55:25 -07:00
Ryan Leckey
e0ca521889 cursor: for now, add #[doc(hidden)] to from_connection and from_pool as we look for ways to remove them 2020-03-16 22:51:55 -07:00
Ryan Leckey
d8f3953d9d depend on std feature in futures-channel 2020-03-16 20:32:36 -07:00
Ryan Leckey
4869f48f84 sqlite: don't leak on connection failure 2020-03-16 20:30:28 -07:00
Ryan Leckey
48714e8ea9 Remove unused import in postgres/listen.rs 2020-03-16 20:00:36 -07:00
Ryan Leckey
c44084dd11 move around re-exports 2020-03-16 19:54:46 -07:00
Ryan Leckey
0e3eb7ce39 postgres: listen: go back to Vec<String> for channels 2020-03-16 19:54:38 -07:00
Ryan Leckey
57d414f15c sqlite: fix impl of DatabaseError 2020-03-16 19:54:24 -07:00
Ryan Leckey
e99e80cf94 listen: merge PgListener and PgPoolListener; allow PgListener to be used as an Executor; allow channels to be adjusted at run-time 2020-03-16 18:35:37 -07:00
Ryan Leckey
ed9d6c3b62 pool: handle reconnects during "boot" 2020-03-16 18:34:09 -07:00
Ryan Leckey
f677748a3b postgres: Add lifetime to NotificationResponse 2020-03-16 18:31:09 -07:00
Ryan Leckey
b80080a95b postgres: Stream::read -> Stream::receive and extract "just reading" to Stream::read 2020-03-16 18:30:45 -07:00
Ryan Leckey
0ecacfaf1d io: forward lifetime properly in Buf trait 2020-03-16 18:29:54 -07:00
Ryan Leckey
1d0100b35d Add DatabaseError::code 2020-03-16 18:29:41 -07:00
Ryan Leckey
5cb0d9d9cc connection: remove unused import for MaybeOwned 2020-03-16 18:27:22 -07:00
Ryan Leckey
dc8e36c707 listen: prefix example with sqlx-example- 2020-03-16 18:27:04 -07:00
Ryan Leckey
12e250b52c Inline MaybeOwned in ConnectionSource and add another variant to store owned or ref connections 2020-03-15 02:58:41 -07:00
Ryan Leckey
4419aea619 update postgres/listen.rs for internal changes 2020-03-15 02:17:14 -07:00
Anthony Dodd
3db54dd724 Remove the Drop impl for PgPoolListener.
This is being removed as it was causing undesired behavior under some
contexts.
2020-03-15 02:17:14 -07:00
Anthony Dodd
82923a1aaa Update stream impls.
The basic PgListener stream impl now yields `Result<PgNotification>`
elements without an `Option` in the result. The option condition
originally represented the closure of the underlying connection. Now
such conditions will terminate the stream, as one would expect. The
`PgListener.recv()` method signature has not been changed.

PgPoolListener has also been updated. The interfaces on this struct will
never yield an inner `Option` as it will instead acquire a new
connection and continue its work. Both the stream impl & the `recv`
method have received an update to their signatures.
2020-03-15 02:17:14 -07:00
Anthony Dodd
608556f91a Impl Drop for PgPoolListener & add to exports. 2020-03-15 02:17:14 -07:00
Anthony Dodd
75a76395c6 Rename new example to match current nomenclature. 2020-03-15 02:17:14 -07:00
Anthony Dodd
ae7e15cbe3 Added demo program to show use of LISTEN/NOTIFY. 2020-03-15 02:17:14 -07:00
Anthony Dodd
a0da99e128 A good bit of refactoring.
Broke up PgListener into two types. PgListener for basic one-off
connections, and PgPoolListener for the listener created from the
PgPool.

The API is a bit more clear now with this change in terms of reconnect
behavior and the like.

Update `fn stream` to be `fn into_stream`, as that nomenclature is a bit
more normative in the Rust ecosystem.
2020-03-15 02:17:14 -07:00
Anthony Dodd
f83180861b Impl a few features & refactor some code based on design discussion.
Extension traits are now being used for PgConnection, PgPoolConnection &
PgPool for listen/notify functionality. Only two extension traits were
introduced.

Only a single trait method is present on the extension traits and it
works for single or multi channel listening setups.

Automatic reconnect behavior is implemented for PgPool based listeners.
All logic has been cut over to the `recv` impls for the PgListener
variants.

Use async-stream for a nice Stream interface.
2020-03-15 02:17:14 -07:00
Anthony Dodd
cb186e6a13 Updates from review and from testing. 2020-03-15 02:17:14 -07:00
Anthony Dodd
a52f36468b Implement Postgres LISTEN interface.
This changeset introduces an interface for using PostgreSQL's LISTEN
functionality from within sqlx.

The listen interface is implemented over the PgConnection, PgPool & the
PgPoolConnection types for ease of use. In the case of PgPool, a new
connection is acquired, and is then used for LISTEN functionality.

Closes #87
2020-03-15 02:17:14 -07:00
Ryan Leckey
ab20db14a2 Remove Sqlite prefix from SqliteStatement as it is an internal API 2020-03-15 02:16:31 -07:00
Ryan Leckey
68d4a0d258 sqlite: produce connection specific errors
postgres, mysql: use derive for Debug for error types
2020-03-15 02:14:23 -07:00
Ryan Leckey
f667910cbf sqlite: SqliteResultValue -> SqliteValue to match other drivers 2020-03-15 01:54:43 -07:00
Ryan Leckey
426361f361 sqlite: make SqliteConnection and Statement !Sync 2020-03-15 01:48:51 -07:00
Ryan Leckey
69b1d7feaa sqlite: add even more notes about Send/Sync 2020-03-15 00:34:13 -07:00
Ryan Leckey
97b50b95c0 sqlite: ensure that we additionally clear the bindings when resetting the statement 2020-03-14 23:48:00 -07:00
Ryan Leckey
2abc451655 sqlite: re-order Executor methods 2020-03-14 23:45:14 -07:00
Ryan Leckey
21097e1436 sqlite: clarlify Sync guarantee 2020-03-14 23:45:03 -07:00
Ryan Leckey
68853adc31 Add SQLite to CI 2020-03-14 20:17:59 -07:00
Ryan Leckey
dd99fc351c suppress unused warnings 2020-03-14 19:54:19 -07:00
Ryan Leckey
cddaf1b34e remove unused import for spawn_blocking 2020-03-14 19:47:36 -07:00
Ryan Leckey
c661fdde19 sqlite: macros: initial support for the query macros 2020-03-14 19:45:28 -07:00
Ryan Leckey
69ea41de1e sqlite: make the implementation far less naive
* WAL
 * sync = NORMAL, thought on this for awhile, all signs point to this being a very good default for WAL usage
 * separate worker thread per SQLite connection
2020-03-14 19:45:01 -07:00