57 Commits

Author SHA1 Message Date
Ryan Leckey
7db850da71
feat(mysql): thread E: Execute through the executor
+ handle normal errors separate from unexpected errors, an unexpected
   error causes the connection to close (in which case, if this was
   behind a pool, the pool would not allow this connection to be
   acquired again)
2021-02-18 23:46:07 -08:00
Ryan Leckey
60cf88c38f
feat(mysql): implement the prepare phase for statements 2021-02-18 23:46:07 -08:00
Ryan Leckey
080fa46126
wip(mysql): add MySqlOutput, unsure on exact API 2021-02-18 23:46:07 -08:00
Ryan Leckey
924340c5b4
feat(mysql): handle conversions from other integer types in u8 2021-02-18 23:46:07 -08:00
Ryan Leckey
9d448c8d8e
feat(mysql): expand MySqlRow to handle the binary format from prepared queries 2021-02-18 23:46:07 -08:00
Ryan Leckey
f348a8f2ac
feat(mysql): expand MySqlTypeInfo, MySqlTypeId 2021-02-18 23:46:06 -08:00
Ryan Leckey
d143a790af
feat(mysql): expand protocol definitions for prepared queries, ColumnFlags, Execute, Prepare, PrepareOk 2021-02-18 23:46:06 -08:00
Ryan Leckey
42c3340f60
feat(mysql): add TypeInfo to MySqlRawValue 2021-02-18 23:46:06 -08:00
Ryan Leckey
5d1cadd47c
feat(mysql): expand MySqlColumn, add various helper methods 2021-02-18 23:46:06 -08:00
Ryan Leckey
7f036dfb4a
style: remove unused imports 2021-02-18 23:46:05 -08:00
Ryan Leckey
5a75655bdf
feat(mysql): impl Decode for str and String 2021-02-18 23:46:05 -08:00
Ryan Leckey
3415ce947c
feat(mysql): add inherent impls for try_get and try_get_raw to Row 2021-02-18 23:46:05 -08:00
Ryan Leckey
a637e69d19
refactor: add Connect::connect_with(&Options) and reduce complexity of facade
- remove as much as possible from the DbConnectOptions facade with From and Deref

 - add From, Deref, and DerefMut to DbConnection facade
2021-02-18 23:46:05 -08:00
Ryan Leckey
8203410e3f
reactor(core): remove Rt param from Database trait and remove Connection associated type
- significantly cleans up the sqlx/ zero-prelude wrapping
2021-02-18 23:46:05 -08:00
Ryan Leckey
0ce4a6a418
feat(mysql): MySqlTypeId, MySqlTypeInfo, and Decode/Encode impl for bool, u8 2021-02-18 23:46:04 -08:00
Ryan Leckey
6dfc91daf7
feat(mysql): add MySqlRawValue
- renamed from MySqlValue (from master)
2021-02-18 23:46:04 -08:00
Ryan Leckey
8925d2be0a
feat(core): add Encode and Decode 2021-02-18 23:46:04 -08:00
Ryan Leckey
b7cf04d9cf
feat(mysql): impl command state tracking, fetch_all, and fetch_optional
before each command, any dirty state is flushed
2021-02-18 23:46:04 -08:00
Ryan Leckey
4a1087db6c
refactor(mysql): create ResultPacket (OK or ERR), make Row parsing lazy, and move ERR handling to the Packet type 2021-02-18 23:46:04 -08:00
Ryan Leckey
c5bd3988d9
refactor(mysql): merge and cleanup recv_columns! 2021-02-18 23:46:04 -08:00
Ryan Leckey
93dc33adc0
refactor(mysql): break up execute() into executor/columns and executor/execute 2021-02-18 23:46:04 -08:00
Ryan Leckey
d04dc77b4f
chore(mysql): provide a trivial conversion from EOF to OK 2021-02-18 23:46:03 -08:00
Ryan Leckey
5926dcaa69
fix(mysql): handle Changed and Warnings in OK info parser 2021-02-18 23:46:03 -08:00
Ryan Leckey
ad6d4b5740
perf(mysql): guarantee no allocation if no columns are passed to Row::deserialize_with 2021-02-18 23:46:03 -08:00
Ryan Leckey
4cbdac6884
feat(mysql): minimally implement Row and Column 2021-02-18 23:46:03 -08:00
Ryan Leckey
499bc33e41
test(mysql): some test fixes in connect mocks 2021-01-27 19:55:33 -08:00
Ryan Leckey
a0d68e726c
feat(mysql): add MySqlQueryResult 2021-01-27 19:31:21 -08:00
Ryan Leckey
5836e1eb63
wip(mysql): impl Executor 2021-01-26 01:18:54 -08:00
Ryan Leckey
ce2fba7b8d
refactor(mysql): split off MySqlStream from MySqlConnection 2021-01-26 01:17:54 -08:00
Ryan Leckey
d279c6b978
feat(mysql): implement more protocol types: QueryResponse, Query, QueryStep, ColumnDef, Row 2021-01-26 01:17:54 -08:00
Ryan Leckey
ecec956f67
fix(sqlx): minor blocking fixes 2021-01-20 19:48:41 -08:00
Ryan Leckey
a0ce421989
refactor: remove preludes and provide inherent methods on wrapped types
- sqlx::mysql::MySqlConnection is a tuple struct of sqlx_mysql::MySqlConnection

 - sqlx::mysql::MySqlConnection provides both connect() and connect().await
   using crate-local specialization from negative trait bound inference
2021-01-20 19:39:25 -08:00
Ryan Leckey
e719f698f4
polish: collapse a couple async/blocking groups 2021-01-14 19:01:39 -08:00
Ryan Leckey
d07eabd201
feat(core): add IoStream::shutdown and IoStream::shutdown_async 2021-01-11 00:45:11 -08:00
Ryan Leckey
d81ec4a57f
fix(mysql): reset sequence ID on a new command 2021-01-11 00:12:20 -08:00
Ryan Leckey
6c8d68e9d0
refactor: marker traits for non-blocking <Async> vs <runtime::Blocking>
- enforce compile-time errors if you try to block on an async-only runtime
   or await a blocking runtime

 - remove viral HRTB for Streams

 - support UNIX streams
2021-01-10 19:23:04 -08:00
Ryan Leckey
cbf280b240
docs: polish, add some information on supported databases and runtimes 2021-01-10 13:02:57 -08:00
Ryan Leckey
d3cfa6fccd
fix(mock): re-enable mock feature 2021-01-10 11:51:01 -08:00
Ryan Leckey
7144ebc8a0
style: clippy 2021-01-10 11:33:55 -08:00
Ryan Leckey
769e8aa461
refactor: introduce io::Stream (blocking::io::Stream) to encapsulate needed IO methods
- rename sqlx::AsyncRuntime to sqlx::Async
 - don't set default runtime in traits
2021-01-10 10:45:29 -08:00
Ryan Leckey
d2b31950cf
refactor: split <Connection> into <Connect>, <Close>, <Acquire>, and <Connection> 2021-01-09 16:37:36 -08:00
Ryan Leckey
e0e5b76f79
fix(mysql): flush after write Quit 2021-01-08 19:25:56 -08:00
Ryan Leckey
02f11b81c3
feat(mysql): impl close, ping 2021-01-08 17:46:06 -08:00
Ryan Leckey
2024136c9e
style(mysql): compile-in more code without a selected runtime 2021-01-08 16:42:42 -08:00
Ryan Leckey
16077216df
style: clippy 2021-01-08 16:39:12 -08:00
Ryan Leckey
2557557935
feat(mysql): impl full connect phase for MySQL with support for:
- mysql_native_password
 - caching_sha2_password
 - sha256_password
 - non-default auth plugin (new)
2021-01-08 15:28:26 -08:00
Ryan Leckey
86576106e8 wip(mysql): impl native auth scramble 2021-01-03 18:23:51 -08:00
Ryan Leckey
7750168b80
wip(mysql): connect phase 2021-01-02 10:47:15 -08:00
Ryan Leckey
2195472e3e
feat(core): add DatabaseError 2021-01-02 10:46:51 -08:00
Ryan Leckey
4d63978da1
chore(mysql): add get_str_eof_unchecked 2021-01-02 10:46:25 -08:00