Commit Graph

986 Commits

Author SHA1 Message Date
Mahmoud Al-Qudsi
73754bbe24 [docs] Document default busy_timeout/busy_handler
Include a note in the documentation for both `busy_handler()` and
`busy_timeout()` explaining the current default behavior (with a
disclaimer indicating that this behavior should not be relied upon as it
is an implementation detail that may change).
2020-12-02 17:20:50 -06:00
Mahmoud Al-Qudsi
2dab6d8364 [docs] Fix over-long monospacing of SQLITE_BUSY 2020-12-02 17:06:46 -06:00
gwenn
3aeb5d7e08 Remove obsolete doc section
`FromSql` / `ToSql` are now implemented for i64 and usize
2020-11-22 09:37:52 +01:00
gwenn
32ee895b63 Remove some usages of params! / NO_PARAMS 2020-11-22 09:37:00 +01:00
gwenn
6fae5d6641 Add/fix rustdoc links 2020-11-22 09:34:03 +01:00
kud1ing
7beba0c6eb Document that optional() requires import of rusqlite::OptionalExtension
Document that `optional()` requires import of `rusqlite::OptionalExtension`.
2020-11-20 18:09:47 -08:00
gwenn
0649df96ea Fix non-autolinks warnings 2020-11-07 12:32:41 +01:00
gwenn
9ae66e363e
Merge pull request #840 from gwenn/IndexConstraintOp
Remove #[non_exhaustive] attribute on IndexConstraintOp
2020-11-07 12:20:15 +01:00
gwenn
3388fd1683 Remove #[non_exhaustive] attribute on IndexConstraintOp 2020-11-07 12:02:33 +01:00
gwenn
47ec0e1d8f Fix create_collation
The xDestroy callback is not called if the sqlite3_create_collation_v2() function fails.
2020-11-07 11:54:59 +01:00
gwenn
bbd1ff5fb0 Try to fix CI build 2020-11-05 22:24:55 +01:00
gwenn
549ceb59e2 Try to fix CI build 2020-11-05 22:21:02 +01:00
gwenn
da94f8eba6 Make tests return Result 2020-11-05 22:14:00 +01:00
Thom Chiovoloni
65c38bf813 Add #[inline] and #[cold] in far more places 2020-11-04 07:59:23 -08:00
Thom Chiovoloni
7574124233 Format code in doc comments for good measure 2020-11-03 19:09:19 -08:00
Thom Chiovoloni
f0990c38bf Fix stale doc 2020-11-03 19:09:19 -08:00
Thom Chiovoloni
a312582d11 Ensure empty array Params impl can trigger Error::InvalidParameterCount when needed 2020-11-03 19:09:19 -08:00
Thom Chiovoloni
22121772a2 Deprecate NO_PARAMS in favor of passing an empty array 2020-11-03 19:09:19 -08:00
Thom Chiovoloni
2461ebf62f Update documentation 2020-11-03 19:09:19 -08:00
Thom Chiovoloni
032aea73b8 Overhaul query API, removing the need for the _named variants of all functions, and rusqlite::NO_PARAMS 2020-11-03 19:09:19 -08:00
Thom Chiovoloni
c45446ba73 Seal the RowIndex trait (technically breaking, but unlikely to break anybody) 2020-11-03 19:09:19 -08:00
gwenn
b9ccb252ef
Merge pull request #824 from gwenn/progress_handler
Expose query progress information
2020-11-03 18:14:36 +01:00
Thom Chiovoloni
1aeea123dd Silence clippy's complaint about unelided lifetime in session.rs 2020-11-02 19:34:09 -08:00
gwenn
1103febb1e Test Batch iterator 2020-10-31 11:11:12 +01:00
gwenn
f3c2b63836 Get rid of fallible iterator trait 2020-10-31 10:47:44 +01:00
gwenn
73323b6b92 Remove Iterator implementation for Batch
If Batch implements both `Iterator` and `FaillibleIterator`, `next`
method is ambiguous and must be qualified...
2020-10-29 20:06:47 +01:00
gwenn
b73ca079a8 Implement Iterator for Batch 2020-10-29 20:01:46 +01:00
gwenn
5f5943435e Remove lazy_static block where possible 2020-10-29 19:51:51 +01:00
Nick Hynes
749266cae9 Reduce required lifetime in create_scalar_function 2020-10-28 23:33:00 -07:00
gwenn
d1ec46182f Fix Clippy warning 2020-10-28 21:26:36 +01:00
gwenn
b448d95510 Merge remote-tracking branch 'upstream/master' into progress_handler 2020-10-28 21:21:19 +01:00
gwenn
76ad2bf19c Rustfmt 2020-10-28 21:12:29 +01:00
gwenn
5ce81024c8 Introduce Batch fallible iterator 2020-10-28 21:10:13 +01:00
gwenn
e1072b7f75 Reduce required lifetime
Revert lifetime change on table_filter
2020-10-28 20:16:53 +01:00
gwenn
926977846f Reduce required lifetime
Extends #825 to
 - create_collation
 - commit_hook
 - rollback_hook
 - update_hook
 - table_filter
2020-10-28 19:20:05 +01:00
Tim Hutt
b0ade73f43 Add ToSql implementations for u64 and usize 2020-10-26 23:28:25 -07:00
gwenn
9c954b8cb5 Rustfmt 2020-10-25 12:28:03 +01:00
gwenn
49325296a9 Expose query progress information
Add unit tests
2020-10-25 12:20:15 +01:00
gwenn
f5c83af863 Expose query progress information 2020-10-25 11:58:47 +01:00
Tim Hutt
8841187717 Silence clippy 2020-10-24 09:52:05 -07:00
Tim Hutt
f264873999 Cargo format 2020-10-24 09:52:05 -07:00
Tim Hutt
ebcec59969 Implement From/ToSql for more types
This implements `FromSql` for `u64`, `usize` and `f32`, and `ToSql` for `f32`.

I also updated the documentation to describe how it currently works, and changed the implementation to use `try_from` for integral casts rather rather than custom code.

Test added.
2020-10-24 09:52:05 -07:00
gwenn
6ae9802fa3 Feature ptr_offset_from #41079 available in 1.47 2020-10-08 21:12:46 +02:00
Thom Chiovoloni
084d1f535d Replace lru-cache with hashlink 2020-10-06 00:10:22 -07:00
Thom Chiovoloni
587fdeb185 Add write_all_at for compatibility with FileExt, improve docs a little 2020-10-04 15:48:10 -07:00
Thom Chiovoloni
d61fe36237 Improve pos io test coverage 2020-10-04 15:48:10 -07:00
Thom Chiovoloni
67ee5a0586 Add test coverage for positional blob io 2020-10-04 15:48:10 -07:00
Thom Chiovoloni
7cd909fc14 Add positional blob i/o and adjust blob i/o example docs 2020-10-04 15:48:10 -07:00
gwenn
799b5d3f7b Rustfmt 2020-10-04 07:39:35 +02:00
gwenn
d2dcc2d987 Fix clippy warning 2020-10-04 07:38:52 +02:00
Michael Sproul
d7e0536b41
Add must_use attribute to iterators 2020-09-02 16:15:25 +10:00
gwenn
2a7b11320f Fix clippy warnings 2020-08-17 20:07:56 +02:00
gwenn
a4691db6d0 pragma_update fails with ExecuteReturnedResults
Ideally, while executing a batch, we should fail if it contains a SELECT
statement. But currently there is no way to make the distinction between
a SELECT and a PRAGMA which both updates and returns a row.
So we fail only when `extra_check` feature is activated.
2020-08-17 19:30:24 +02:00
Nikhil Benesch
b83d22e2b7 Upgrade to time v0.2 and put it behind a feature flag
This also removes the usage of time in the crate's top-level
documentation example, as was done for the README in #625.

Fix #653.
2020-07-24 11:28:19 -07:00
Tim
83c038107d Fix order of parameters in InvalidParameterCount message
This prints a message like `Error: Wrong number of parameters passed to query. Got 7, needed 8`, but the numbers were the wrong way around - i.e. it should have printed `Got 8, needed 7` in this case.
2020-07-01 08:38:50 -07:00
Thom Chiovoloni
f79a9ca3ef Publically expose Map 2020-06-29 09:36:13 -07:00
gwenn
024e2e6bf0
Merge pull request #773 from gwenn/execute_batch
Implement our own sqlite3_exec
2020-06-28 06:18:56 +02:00
gwenn
dd886578d2 Implement our own sqlite3_exec
Should fix issue related to unlock notify: #767
Caveat: many CString allocated.
2020-06-26 19:35:14 +02:00
gwenn
4114c94585 Clippy 2020-06-26 19:22:20 +02:00
gwenn
57db338537 Rustfmt 2020-06-25 09:45:49 -07:00
gwenn
f37519ad51 Replace execute_batch usages by execute
Because execute_batch does not support unlock_notify
2020-06-25 09:45:49 -07:00
Thom Chiovoloni
1c9e381a21 Clippy fixes 2020-06-07 19:18:46 -07:00
Thom Chiovoloni
f7a573e44a Don't implement Into<RawStatement> for Statement 2020-06-07 19:18:46 -07:00
gwenn
7b08dc9ad5 Try to explain why we need a map function
To tranform the fallible streaming iterator.
2020-06-02 19:05:09 +02:00
gwenn
c577a9d801 Lifetime elision 2020-06-01 18:44:02 +02:00
gwenn
52a80f95f7
Merge pull request #754 from gwenn/phantom_data
Fix some PhantomData declarations
2020-06-01 11:48:02 +02:00
gwenn
265020e589 Fix some PhantomData declarations
Specify the expected type instead of () even if only the lifetime
matters
2020-06-01 10:11:34 +02:00
gwenn
2af75d1f13 VTabCursor lifetime should be bound to VTab lifetime
```c
struct sqlite3_vtab_cursor {
  sqlite3_vtab *pVtab;      /* Virtual table of this cursor */
```
It seems that we need to introduce a lifetime on `VTab` trait
to express such constraint:
https://users.rust-lang.org/t/associated-type-with-lifetime-bound/7256
But there may be another/new way to do it.
2020-06-01 09:48:49 +02:00
Evgeniy A. Dushistov
d16748ac9f adding ability to work with sqlite compiled with -DSQLITE_OMIT_DECLTYPE
fix #751
2020-06-01 06:31:27 +03:00
gwenn
8cb5b2e585 Document Rows::map and FallibleStreamingIterator impl
See
https://www.reddit.com/r/rust/comments/gov817/rusqlite_only_getting_ok_entries_from_query_map/
```
let mut stmt = self
    .db
    .prepare("SELECT tag FROM tags WHERE tags.entry_id = ?1")?;

let tags = stmt.query(params![id])?;

tags
    .map(|res| res.get(0))
    .collect()
```
2020-05-24 20:53:52 +02:00
gwenn
e664f82630 Add still missing docs in session module 2020-05-21 00:48:06 -07:00
gwenn
5ebba26a7e Add missing docs in session module 2020-05-21 00:48:06 -07:00
gwenn
76fc22c653 Fix missing docs 2020-05-21 00:48:06 -07:00
Martin Habovstiak
8a08dff115 Clippy reports redundant closures even in cases in which removing the
closure is impossible. See
https://github.com/rust-lang/rust-clippy/issues/5594

Allow this lint until the issue is resolved in clippy or the compiler.
2020-05-21 00:47:52 -07:00
Martin Habovstiak
c5b2efc099 impl TryFrom<&Row<'_>> for (...)
This change implements `TryFrom<&Row>` for tuples up to 16 fields. This
is a convenience function that can be used to map rows more easily.

The change includes tests for 1-tuple, 2-tuple and 16-tuple.
2020-05-21 00:47:52 -07:00
gwenn
5565ae5629
Merge pull request #735 from gwenn/extended_result_codes
Activate extended result codes asap
2020-05-17 09:53:25 +02:00
gwenn
0060ff8a44 Activate extended result codes asap 2020-05-16 11:01:30 +02:00
gwenn
ceb9f11de8 Replace pub(crate) by pub(super) visibilty 2020-05-16 10:18:25 +02:00
Thom Chiovoloni
12cb228c9c Fix SqliteMallocString::from_str on arm32 2020-04-23 13:58:50 -07:00
Thom Chiovoloni
d88fe1c1b1 Remove parameter count caching -- should be cheap (if statically linked at least...) 2020-04-16 12:05:56 -07:00
Thom Chiovoloni
a776f460e8 Cache param count and make statement cache more effective 2020-04-16 12:05:56 -07:00
Thom Chiovoloni
6485b324d7 Name fields of RawStatement 2020-04-16 12:05:56 -07:00
Thom Chiovoloni
1207a7cc06 Make clippy behave slightly more reasonably 2020-04-16 08:21:43 -07:00
Thom Chiovoloni
418ef10af2 Add a wrapper for strings allocated on sqlite heap 2020-04-16 08:21:43 -07:00
Thom Chiovoloni
9322b0e881 Update links & copyright statement 2020-04-15 21:37:39 -07:00
Thom Chiovoloni
45fd77ee43 UnlockNotification should hold mutex when calling condvar 2020-04-15 13:52:19 -07:00
Thom Chiovoloni
c9ef5bd63c Make VTab / VTabCursor unsafe trait as implmenting them on the wrong type is unsound 2020-04-15 10:33:04 -07:00
Thom Chiovoloni
3c6b57fe1b Fix vtab::Module lifetime 2020-04-15 10:33:04 -07:00
Thom Chiovoloni
2327d3b774 Fix format string error in rusqlite::trace::log 2020-04-14 12:23:15 -07:00
Thom Chiovoloni
abbab7216a Better docs and cleaner SmallCString 2020-04-14 10:26:41 -07:00
Thom Chiovoloni
ac30e169ae Use SmallCString in most places 2020-04-14 10:26:41 -07:00
Thom Chiovoloni
552416039e Optimize named params via caching and use of smallvec 2020-04-14 10:26:41 -07:00
Thom Chiovoloni
cf9b6e9ae2 Avoid relying on sqlite to justify str::from_utf8_unchecked 2020-04-14 09:31:29 -07:00
Thom Chiovoloni
1b27ce0541 Docs for new aux api 2020-04-14 08:06:37 -07:00
Thom Chiovoloni
2ef3628dac Actually fix auxdata api... 2020-04-14 08:06:37 -07:00
Thom Chiovoloni
71b2f5187b Ensure type use for auxdata is repr(C) 2020-04-14 08:06:37 -07:00
Thom Chiovoloni
38aea89809 Remove implementations of std::error::Error::description 2020-04-12 12:06:53 -07:00
Thom Chiovoloni
5a8108bd86 Implement source and not cause for FromSqlError 2020-04-12 12:06:53 -07:00
gwenn
611c8e8b02 Rustfmt 2020-04-11 22:18:22 -07:00
gwenn
4dbfdc85fe Fix ValueRef::from_value
Handle text with internal nuls (#657)
2020-04-11 22:18:22 -07:00