Commit Graph

720 Commits

Author SHA1 Message Date
gwenn
4770060396 Make sure scalar functions and hooks are Sendable 2018-08-15 18:30:18 +02:00
gwenn
ec53f19be1 Backup progress callback can be Fn. 2018-08-15 18:00:58 +02:00
gwenn
0ccf98d214 Merge remote-tracking branch 'jgallagher/master' into vtab 2018-08-11 13:37:56 +02:00
gwenn
c925d1aa97 Rustfmt 2018-08-11 12:48:21 +02:00
gwenn
57df0ac3d5
Merge pull request #378 from gwenn/callback
Fix hooks
2018-08-11 12:02:45 +02:00
gwenn
2a29717c5a Fix hooks 2018-08-11 11:14:17 +02:00
gwenn
4c3fa7bd53 Add binding to sqlite3_expanded_sql 2018-08-10 20:52:11 +02:00
gwenn
31de0187a2 Return an InvalidQuery error when SQL is not read only 2018-08-10 20:48:13 +02:00
gwenn
40ef85c2af Fix array module 2018-08-07 19:58:26 +02:00
gwenn
87a0c3abca Merge remote-tracking branch 'jgallagher/master' into callback 2018-08-05 19:51:16 +02:00
gwenn
e8dc412af1 [ci skip] Make test_array_module fails without sanitizer 2018-08-05 16:56:30 +02:00
gwenn
3aca24792c Merge remote-tracking branch 'jgallagher/master' into vtab 2018-08-05 13:26:45 +02:00
gwenn
cea8e5cea2 [ci skip] Array module is buggy
AddressSanitizer: heap-use-after-free on address
2018-08-05 13:22:04 +02:00
gwenn
15ab96bceb [ci skip] Ignore unstable busy tests by default 2018-08-05 11:39:46 +02:00
gwenn
437f7dab42 Refactor hooks 2018-08-05 10:58:00 +02:00
gwenn
7310cac6f5 Use pub(crate) 2018-07-31 22:17:17 +02:00
gwenn
a5403eb05f Replace PRAGMA call by Rust busy_timeout function 2018-07-28 17:04:10 +02:00
gwenn
73ebce5f98 Add binding to sqlite3_busy_timeout and sqlite3_busy_handler. 2018-07-28 17:04:10 +02:00
gwenn
fc37b324b8 Merge remote-tracking branch 'jgallagher/master' into vtab 2018-07-28 16:56:21 +02:00
gwenn
9ecb1eef55
Merge pull request #369 from gwenn/busy
Add binding to sqlite3_busy_timeout and sqlite3_busy_handler.
2018-07-28 16:39:38 +02:00
gwenn
5e1e805b4f Use sqlite3_get_autocommit instead of our own flag/status 2018-07-28 16:04:42 +02:00
gwenn
18953a8798
Merge pull request #367 from kornelski/master
Roll back uncommitable transactions
2018-07-28 15:39:45 +02:00
Kornel
b075592147 Test transaction recovery from sqlite busy error 2018-07-28 12:58:05 +01:00
gwenn
558104de4d Add binding to sqlite3_busy_timeout and sqlite3_busy_handler. 2018-07-28 12:10:57 +02:00
gwenn
5351d88bc0 Cow<str> now implements ToSql. 2018-07-28 08:01:24 +02:00
Kornel
2487b18db0 Avoid keeping transactions unexpectedly open
If transaction can't be automatically committed, roll it back to prevent transaction staying open past the lifetime of the Transaction object

Fixes #366
2018-07-27 17:18:47 +01:00
Kornel
1e29cf4a0f Mark self.committed only after command succeeds
Fixes #366
2018-07-27 17:18:39 +01:00
gwenn
ce9d325ba0 Remove Table associated type in VTabCursor trait 2018-07-22 10:02:59 +02:00
gwenn
b82a155429 Introduces CreateVTab for non-eponymous VTab 2018-07-22 09:51:06 +02:00
gwenn
b93b005604 Add some TODOs 2018-07-17 21:06:08 +02:00
gwenn
669663304e Refactoring
Introduce VTab::destroy.
Let implementation specify the iVersion.
Rename simple_module into read_only_module.
2018-07-16 20:17:53 +02:00
gwenn
849dbda5e8 Remove direct dependency on libsqlite3_sys 2018-07-15 16:15:55 +02:00
gwenn
fe64d51422 Doc 2018-07-15 10:19:18 +02:00
gwenn
45624dc60b Clean up 2018-07-14 19:27:45 +02:00
gwenn
ed1bdc0e68 Rustfmt 2018-07-14 19:21:03 +02:00
gwenn
0c371834aa Remove vtab() function from VTabCursor trait 2018-07-14 19:10:28 +02:00
gwenn
e2df03f474 Remove macros 2018-07-14 18:47:52 +02:00
gwenn
823f3c96aa Ensure Virtual tables can be declared outside rusqlite crate
Not sure it is the way to go.
2018-07-14 11:01:19 +02:00
gwenn
ce39b9a3c0 Introduce VTabConnection and OrderBy 2018-07-09 18:53:52 +02:00
gwenn
ce0c9a6344 Fix clippy warnings 2018-06-28 21:07:05 +02:00
gwenn
3b0423353d Merge remote-tracking branch 'jgallagher/master' into vtab 2018-06-28 21:01:53 +02:00
gwenn
bb6fa61e68 Merge remote-tracking branch 'jgallagher/master' into vtab 2018-06-28 20:54:32 +02:00
gwenn
2ea17d0b54 Fix clippy warnings
Calling OpenFlags::default() is more clear than this expression
2018-06-28 20:46:28 +02:00
gwenn
6463db906d Make connect/create return a tuple 2018-06-22 17:20:47 +02:00
gwenn
861e8edb96 Move declare_vtab into Module trait 2018-06-20 20:29:55 +02:00
gwenn
eaee342025 Make connect/create/declare_vtab safe 2018-06-20 20:21:26 +02:00
gwenn
afeb5d4d47 Introduce Module trait to make create_module type safe 2018-06-20 20:01:38 +02:00
gwenn
2a684384fd Fix clippy warning 2018-06-20 19:12:02 +02:00
gwenn
9c7a5583b9 Fix some clippy warnings
* Rows cannot implement iterator
* DatabaseName is passed by value => Copy ?
2018-06-20 19:07:23 +02:00
gwenn
b135c6d871 Minalist check that there is no memory leak. 2018-06-11 21:39:08 +02:00
gwenn
e040dc9e1f Remove int_array module
Replaced by array module.
2018-06-11 21:33:54 +02:00
gwenn
1a1d41b4e4 Carray module ported to Rust 2018-06-11 21:30:55 +02:00
gwenn
9a96e3a494 Reduce visibility of unsafe methods 2018-06-11 19:51:13 +02:00
gwenn
b8594a0f83 Fix regressions 2018-06-10 19:21:55 +02:00
gwenn
d72c4582d9 Merge remote-tracking branch 'jgallagher/master' into vtab 2018-06-10 19:16:20 +02:00
gwenn
e1ba89c310 Merge remote-tracking branch 'jgallagher/master' into vtab 2018-06-10 18:49:40 +02:00
gwenn
fa64a4d0bf Draft for carray module in Rust
Incomplete support for sqlite3_bind_pointer.
Make Context::set_result return a Result.
Add Values::get_array.
2018-06-10 18:29:38 +02:00
gwenn
0d0a7bf81f Replace row changes/count type (i32) with usize
Breaking change
2018-05-23 21:23:28 +02:00
gwenn
c6f4ae632a Replace column index/count type (i32) with usize
Breaking change
2018-05-23 21:04:13 +02:00
gwenn
5c44ed79d3 Fix tests 2018-05-23 20:18:18 +02:00
gwenn
b89b574f81 csvtab: use columns when specified 2018-05-14 19:23:17 +02:00
gwenn
b60ffe1940 Sync series with original impl 2018-05-13 19:49:11 +02:00
gwenn
88a7ed5812 Fix clippy warnings 2018-05-13 19:16:12 +02:00
gwenn
370740b17f Oops 2018-05-13 13:03:05 +02:00
gwenn
33b1b19d92 Upgrade to csv 1.0 2018-05-13 12:21:58 +02:00
gwenn
6cbeb6ef59 Introduce context module
To make `set_result` and `report_error` in functions module
visible to vtab module.
2018-05-13 11:44:31 +02:00
gwenn
6855b5052d
Ensure connection can be safely returned to a pool (#353)
* Add binding to sqlite3_get_autocommit.
* Add binding to sqlite3_stmt_busy.
* Disable test_is_busy by default
2018-05-12 18:35:08 +02:00
gwenn
f4beb18904 Merge remote-tracking branch 'jgallagher/master' into vtab 2018-05-12 15:31:16 +02:00
gwenn
89f38b4098
Merge pull request #352 from jgallagher/fix-coherence-issue
merge coherence issue fix
2018-05-12 10:30:57 +02:00
gwenn
58b8b4c95d Introduce Aux associated type 2018-05-06 18:05:02 +02:00
gwenn
2e2b5c41f4 Rustfmt 2018-05-06 17:21:36 +02:00
gwenn
8e6ea05efa Use associated types instead of generics 2018-05-06 17:19:19 +02:00
gwenn
10ba0514e6 Change arguments parsing of CSV module 2018-05-06 12:41:42 +02:00
gwenn
5fa3810a4b Fix Clippy warnings 2018-05-06 08:45:56 +02:00
gwenn
1e3dc542a4 Merge remote-tracking branch 'jgallagher/master' into vtab 2018-05-06 08:00:12 +02:00
gwenn
702e58f744 Fix non-eponymous virtual table declaration
Ensure that xCreate is different from xConnect for non-eponymous
virtual tables (even when the implementation is the same).
2018-05-05 10:33:05 +02:00
gwenn
88f2f3e4bd
Merge pull request #350 from jgallagher/clippy
Fix clippy warnings
2018-05-04 20:44:34 +02:00
gwenn
994d40da26 Fix clippy warnings 2018-05-04 19:55:55 +02:00
gwenn
403e840c4a Fix clippy warnings 2018-05-04 19:05:48 +02:00
gwenn
b0e22fc372 Wait in a loop 2018-05-04 18:07:11 +02:00
gwenn
fee4bfcc86 Merge remote-tracking branch 'jgallagher/master' into unlock-notify 2018-05-04 18:06:41 +02:00
gwenn
30e23cf0a0 Fix features dependencies 2018-04-30 22:09:41 +02:00
gwenn
9c5c9e3c7e Merge remote-tracking branch 'jgallagher/master' into vtab 2018-04-30 22:02:14 +02:00
gwenn
83775ee62d Remove second field from RawStatement
Use sqlite3_db_handle instead
2018-04-03 20:18:51 +02:00
gwenn
7f6d7f3346
Merge pull request #319 from traviscross/fix/datetime-format-rfc3339
Fix date/time format for SQLite, use RFC 3339
2018-04-03 19:45:44 +02:00
gwenn
a0151f9073 Introduce is_locked 2018-03-31 10:22:19 +02:00
gwenn
cccdf9735f Factorize check on code returned by prepare/step. 2018-03-27 21:49:09 +02:00
gwenn
78511d6257
Merge pull request #334 from gwenn/stmt-cache
Fix statement cache
2018-03-27 21:26:42 +02:00
gwenn
50d379b564 Make Statement::column_index case insensitive
Fix #330
2018-03-27 20:07:46 +02:00
gwenn
83c8db2d21 Fix Connection::open documentation (#332) 2018-03-24 10:58:42 +01:00
gwenn
d962ebab55
Merge pull request #325 from rnewman/rnewman/panic
Add DropBehavior::Panic to enforce intentional commit or rollback.
2018-03-24 10:29:02 +01:00
gwenn
c612a44207 Fix errors relative to OpenFlags
Also handle extended error codes.
2018-03-24 10:15:10 +01:00
gwenn
5fd76aa54b Unlock notification
Test added
2018-03-24 08:06:30 +01:00
gwenn
154a70d41b WIP: Unlock Notification
To be tested
2018-03-24 08:06:30 +01:00
gwenn
455e7d4060 WIP: Unlock Notification
To do: unlock_notify_cb
2018-03-24 08:06:30 +01:00
gwenn
5d91fb088f Unlock notification 2018-03-24 08:03:21 +01:00
gwenn
0b85c5a1f2
Merge pull request #266 from gwenn/hooks
Implementation of sqlite3_update_hook #260
2018-03-24 07:33:29 +01:00
gwenn
718b985d86
Merge pull request #338 from gwenn/future-compatibility
Fix tyvar_behind_raw_pointer warnings
2018-03-24 03:14:16 +01:00
gwenn
3b5e224f82 Fix tyvar_behind_raw_pointer warnings 2018-03-10 18:07:30 +01:00
gwenn
db87de4086 Inline csv dependency 2018-03-10 17:05:22 +01:00
gwenn
96e5cf2239 Fix statement cache
SQLite ignores the SQL tail (whitespaces, comments).
We can easily ignore whitespaces by trimming the SQL.
2018-02-17 10:28:20 +01:00
gwenn
4357471197 Fix build errors related to bitflags 2018-01-27 10:32:58 +01:00
gwenn
3aaab1e36f Merge remote-tracking branch 'remotes/jgallagher/master' into vtab 2018-01-20 12:29:07 +01:00
gwenn
96103b0662 Merge remote-tracking branch 'jgallagher/master' into hooks 2018-01-20 10:08:40 +01:00
Richard Newman
2a03c1ad4d Add DropBehavior::Panic to enforce intentional commit or rollback. 2018-01-11 16:52:32 -08:00
Travis Cross
7e280d4e64 Add comment to justify &mut Connection in Transaction
The `Transaction` implementation never actually mutates the
`Connection` reference we give it.  In fact, the `Transaction`
structure itself only requires an immutable connection.  So it can be
surprising to readers that the constructor requires a `&mut
Connection`.  We do this so as to prevent at compile-time nested or
concurrent transactions on the same connection as these are not
allowed by SQLite.

In this commit, we add a comment explaining this nuance.
2017-12-31 10:30:23 +00:00
Travis Cross
5d8a840b5d Fix date/time format for SQLite, use RFC 3339
We implement `ToSql` and `FromSql` for `time::Timespec` values.  Our
documentation indicates that we store the value in the same format
used by SQLite's built-in date/time functions, but this was not
correct.

We were using the format:

    %Y-%m-%d %H:%M:%S:%f %Z

This format cannot be interpreted at all by SQLite's built-in
date/time functions.  There are three reasons for this:

- SQLite supports only two timezone formats: `[+-]HH:MM` and the
  literal character `Z` (indicating UTC)

- SQLite does not support a space before the timezone indicator

- SQLite supports a period (`.`) between the seconds field and the
  fractional seconds field, but not a colon (`:`)

SQLite does support the RFC 3339 date/time format, which is standard
in many other places.  As we're always storing a UTC value, we'll
simply use a trailing `Z` to indicate the timezone, as allowed by RFC
3339.  The new format is:

    %Y-%m-%dT%H:%M:%S.%fZ

To avoid breaking applications using databases with values in the old
format, we'll continue to support it as a fallback for `FromSql`.

[1] https://www.sqlite.org/lang_datefunc.html
[2] https://tools.ietf.org/html/rfc3339
2017-12-24 22:15:31 +00:00
John Gallagher
aa64e2fb33 Remove potentially conflicting impl of ToSqlOutput.
Replace with manual implementations of all the types we provided impls
for before.
2017-12-05 19:40:09 -05:00
John Gallagher
4bfbb5f1fe Fix handful of clippy warnings. 2017-11-17 11:37:23 -07:00
John Gallagher
5f800eb285
Merge pull request #306 from jgallagher/twistedfall-master
Export RowIndex trait to allow external code to be generic over what can index be
2017-11-13 11:33:12 -07:00
John Gallagher
ccf9e6fe6c Merge branch 'master' of https://github.com/twistedfall/rusqlite into twistedfall-master 2017-11-13 08:30:29 -07:00
John Gallagher
6b81979eea Merge branch 'master' of https://github.com/lgarczyn/rusqlite into lgarczyn-master 2017-11-13 08:27:33 -07:00
John Gallagher
217e12fcee
Merge pull request #304 from jgallagher/gwenn-clippy
Fix some clippy warnings
2017-11-13 08:23:52 -07:00
John Gallagher
498faac4db Merge branch 'clippy' of https://github.com/gwenn/rusqlite into gwenn-clippy 2017-11-12 16:27:42 -07:00
John Gallagher
d000aa52d7 Merge branch 'flush_prepared_cached' of https://github.com/edelangh/rusqlite into edelangh-flush_prepared_cached 2017-11-12 16:23:59 -07:00
John Gallagher
4852d826c8 Merge branch 'update-deps' of https://github.com/oherrala/rusqlite into oherrala-update-deps 2017-11-12 15:07:31 -07:00
John Gallagher
08228ec7c6
Merge pull request #283 from king6cong/master
code indent
2017-11-12 15:03:31 -07:00
John Gallagher
b5f57c14c5
Merge pull request #276 from cactorium/master
Add Other variant for the Error type
2017-11-12 15:02:41 -07:00
Ossi Herrala
28d58529b7 Update dependencies
* Gcc crate has been renamed to cc.
* Chrono::UTC has been renamed to Chrono::Utc.
* bitflags 1.0 uses associated constants. So prefix OpenFlags.
2017-10-09 23:25:40 +03:00
Pro
c08ee8be82 Export RowIndex trait to allow external code to be generic over what can index be 2017-09-20 15:34:06 +02:00
gwenn
c842e789bd Merge remote-tracking branch 'jgallagher/master' into vtab 2017-09-11 19:45:22 +02:00
edelangh
ab643c90ce review panic in InnerConnection.drop 2017-09-06 16:50:21 +02:00
gwenn
148dc0baf0 Fix more clippy warnings 2017-08-18 21:26:44 +02:00
edelangh
0d1907887e add cfg for test 2017-07-20 16:40:24 +02:00
gwenn
f7c1a8e7b8 Fix some clippy warnings 2017-07-19 21:26:39 +02:00
edelangh
bdd4f9a1a9 Added drop for Connection to prevent fd leak
Added call to flush_prepared_statement_cache
otherwise InnerConnection receives DatabaseBusy on sqlite3_close
2017-07-19 12:22:31 +02:00
louis
301634add7 fixed timezone issue 2017-07-18 09:56:02 -06:00
louis
6188a6a97c added more tests 2017-07-18 17:46:49 +02:00
louis
8bc97972f8 fixed %F instead of %F:%s 2017-07-18 17:43:25 +02:00
louis
0a114c4436 Fixed loss of time information during string conversion 2017-07-11 17:15:07 +02:00
louis
0d001583b2 Fixed loss of time information during string conversion 2017-07-11 17:01:25 +02:00
king6cong
13a32e4004 code indent 2017-06-02 17:19:39 +08:00
Kelvin Ly
dde762bf0e Rename Error::Other to Error::ToSqlConversionFailure 2017-05-30 19:22:14 -04:00
John Gallagher
20de96083a Merge pull request #280 from jgallagher/to-sql-str-u8
Add ToSql impls for str and [u8].
2017-05-29 13:39:35 -04:00
John Gallagher
3827a835ef Add ToSql impls for str and [u8]. 2017-05-29 11:20:52 -04:00
John Gallagher
4623064f4d Update to bitflags 0.9. 2017-05-29 10:52:19 -04:00
John Gallagher
6b360a11c2 Merge pull request #258 from gwenn/constants
Constants
2017-05-29 10:37:26 -04:00
Kelvin Ly
022f1e8671 Add Other variant for the Error type 2017-05-19 23:48:06 -04:00
gwenn
94670c0119 Rustfmt 2017-05-12 19:18:42 +02:00
gwenn
dfdd42fd09 Bind sqlite3_commit_hook and sqlite3_rollback_hook 2017-05-12 19:14:34 +02:00
gwenn
466b8aab2f Rename row parameter to row_id 2017-05-12 19:12:10 +02:00
gwenn
3e6fffaf94 Due to rust monophormisation, there is no need for double indirection 2017-04-27 18:05:12 +02:00
gwenn
63a444a95f Fix memory leak and add test 2017-04-26 20:12:48 +02:00
gwenn
6eb98afd67 SQLITE_RECURSIVE is not available with SQLite 3.6.8 2017-04-25 21:08:41 +02:00
gwenn
3b575c3b4a Implementation of sqlite3_update_hook #260
First draft (no tested and a memory leak)
2017-04-25 20:58:22 +02:00
gwenn
197d1161c3 Field estimatedRows is not available with SQLite 3.7.7 2017-04-21 21:50:38 +02:00
gwenn
1d684ae653 Merge remote-tracking branch 'jgallagher/master' into vtab 2017-04-21 20:01:04 +02:00
gwenn
9ea48db46f Some open flags are not available in 3.6.8 2017-04-20 20:59:07 +02:00
Aidan Hobson Sayers
7bd969b8fd Fix functions for empty blobs
Expands fix from #175
2017-04-16 16:49:28 +01:00
gwenn
08f96a678e Rustfmt 2017-04-07 19:43:24 +02:00