Commit Graph

27 Commits

Author SHA1 Message Date
link2xt
5eebc05dc3 sqlite: use Arc instead of Copy-able StatementHandle
This guarantees that StatementHandle is never used after calling
`sqlite3_finalize`. Now `sqlite3_finalize` is only called when
StatementHandle is dropped.
2021-04-23 00:00:00 +00:00
Alexander Krotov
78656eb469 fix(sqlite): reset the statement when fetch_many() stream is dropped
Unlike `Executor.fetch_optional()`, `Executor.fetch_many()` does not
have a single exit.  The stream can be dropped at any time.  To catch
this event, we create a `StatementResetter` structure inside the stream
loop and reset the statement when it is dropped.

A test case `it_resets_prepared_statement_after_fetch_many` is
similar to `it_resets_prepared_statement_after_fetch_one` which tests
`Executor.fetch_optional()`.
2021-04-09 00:23:17 -07:00
Ryan Leckey
d5e0f1b92b refactor: rename DbOutcome to DbQueryResult 2021-01-20 21:57:26 -08:00
Jonas Platte
08a76f45ae Rename DbDone to DbOutcome 2021-01-12 14:45:01 +01:00
Marcin Kaźmierczak
7f1bff406d fix clipyy warnings 2020-11-24 16:15:22 -08:00
Marcin Kaźmierczak
70fa667063 fix fetch_optional for sqlite 2020-11-24 16:01:52 -08:00
Jakob Truelsen
9d71a7f372 Allow configuring the log level of query logging 2020-11-12 07:06:34 -08:00
Patryk Wychowaniec
ca07158949 sqlite: Fix #616 2020-10-13 09:54:50 -07:00
Ryan Leckey
7bc3133f70 feat: add an optional query logger (using log) 2020-07-26 23:55:36 -07:00
Ryan Leckey
e575501a39 feat: add Executor::prepare, a hook into the automatic statement preparation life-cycle 2020-07-24 07:24:23 -07:00
Julius de Bruijn
e8a4c54ac7 Allow setting caching per-query 2020-07-24 07:24:23 -07:00
Julius de Bruijn
590f97df4a Caching describe 2020-07-24 07:24:23 -07:00
Ryan Leckey
25b8fc7c04 fix(sqlite): support column types changing per row 2020-07-15 02:05:00 -07:00
Ryan Leckey
00137d4a04 feat: add sqlx::Done and return from Executor::execute()
+ Done::rows_affected()

 + Done::last_insert_id()
2020-07-14 04:31:25 -07:00
Ryan Leckey
8d188c5f1a feat: expose column information on Row
- add database-specific Column types: MySqlColumn, PgColumn, etc.
 - add Row::columns() -> &[DB::Column]
 - add Row::column(I) and Row::try_column(I)
2020-07-05 03:48:36 -07:00
Ryan Leckey
d112c4d807 feat(sqlite): support expressions and multiple no-data statements in the macros 2020-07-04 04:06:43 -07:00
Ryan Leckey
991c0ba155 fix(sqlite): double negative in sqlite connection prepare 2020-06-25 05:34:14 -07:00
Ryan Leckey
8d1368f163 fix(sqlite): with caching disabled force persistent to false
additionally, set persistent to true for a cached statement and
correctly only reset the statement when its being reused
2020-06-25 03:44:26 -07:00
Julius de Bruijn
363dbfb81e No need to reset the statement when dropping. 2020-06-25 12:38:20 +02:00
Julius de Bruijn
eba82e3fc1 LRU caching for SQLite 2020-06-24 19:46:32 +02:00
Ryan Leckey
6cfe5ac811 refactor: tweak type name display to use TypeInfo::name 2020-06-21 03:55:31 -07:00
Ryan Leckey
ec1cfc11e6 refactor(core): rename try_stream2 to try_stream (after removal of conflicting async-stream package) 2020-06-09 23:15:54 -07:00
Ryan Leckey
e1d22a1840 fix(core): async-stream crate seems to lose the stream if the stream owns the object we are streaming
hand-rolled a copy of the idea behind AsyncStream and things seem to work
2020-06-09 02:16:47 -07:00
Ryan Leckey
3fcd4cd80e style(core): apply more clippy suggestions 2020-05-30 18:28:55 -07:00
Ryan Leckey
bb3b571a57 fix: tweak lifetimes in Executor to limit the scope for the borrow on the query to the single execution 2020-05-30 17:51:55 -07:00
Ryan Leckey
9d2a0141cb feat: introduce IntoArguments, query_with, query_as_with, and query_scalar_with 2020-05-30 17:51:55 -07:00
Ryan Leckey
37a69e0ac3 refactor(sqlite): adapt to the 0.4.x core refactor
* massive (~20x) performance improvement
2020-05-30 16:09:50 -07:00