Commit Graph

1056 Commits

Author SHA1 Message Date
John Gallagher
efc6c89370 Add RawStatement::column_type. 2016-05-23 21:46:51 -04:00
John Gallagher
dccfd7e801 Refactor: Extract ToSql into its own module. 2016-05-22 20:16:54 -04:00
John Gallagher
0e96e2269c Refactor: Extract FromSql into its own module. 2016-05-22 20:01:03 -04:00
gwenn
cbc479c484 Rustfmt 2016-05-20 18:36:44 +02:00
gwenn
0740620ffe Merge remote-tracking branch 'jgallagher/master' into vtab 2016-05-20 18:31:30 +02:00
John Gallagher
8ce2f5888f Document CachedStatement::discard. 2016-05-19 20:36:41 -05:00
John Gallagher
dc1b0e39ed Re-export DropBehavior and SqliteTransactionBehavior. 2016-05-19 20:35:27 -05:00
John Gallagher
d27ed0de63 Re-export Savepoint. 2016-05-19 20:32:17 -05:00
John Gallagher
c4417bee0e Manual fixes for rustfmt overly long lines. 2016-05-19 20:09:40 -05:00
John Gallagher
71aa41c27a rustfmt 2016-05-19 20:04:33 -05:00
gwenn
ef6fcc8976 Merge remote-tracking branch 'jgallagher/master' into vtab 2016-05-19 22:10:58 +02:00
John Gallagher
57d2ae42cf Fix clippy needless_borrow warning 2016-05-19 15:03:01 -05:00
John Gallagher
6f8f2f3910 Fix clippy match_same_arms warning 2016-05-19 15:02:06 -05:00
John Gallagher
342b00303a Merge pull request #155 from jgallagher/fix-nightly-test-failures
Fix doctest failures on rust nightly.
2016-05-19 14:57:16 -05:00
John Gallagher
cacda916f9 Fix doctest failures on rust nightly.
These should've been failing on stable too as they were all wrong.

Closes #154.
2016-05-19 14:25:39 -05:00
gwenn
1bb177047e Merge remote-tracking branch 'jgallagher/master' into vtab 2016-05-19 21:24:17 +02:00
John Gallagher
d608956bd0 Merge branch 'master' into remove-rows-iterator-impl 2016-05-19 14:06:56 -05:00
John Gallagher
0e6e78e81a Merge branch 'master' into savepoint-improvements 2016-05-19 13:49:02 -05:00
John Gallagher
74b57ee47a Add test and fix for invalid cached column_count.
Issue raised in
https://github.com/jgallagher/rusqlite/pull/113#issuecomment-220122048.
2016-05-18 22:19:04 -05:00
John Gallagher
d5bbbbd763 Add query_map_named and query_and_then_named to Statement. 2016-05-18 22:01:08 -05:00
John Gallagher
703cf22b52 Separate Savepoint out from Transaction.
Replaces `set_commit` and `set_rollback` with `set_drop_behavior`.

Allows specification of savepoint names.

Savepoint::rollback() does not consume the savepoint;
Transaction::rollback() does consume the transaction.
2016-05-18 16:38:09 -05:00
John Gallagher
678b301494 Make rollback take (&mut self) instead of (self) 2016-05-18 14:25:57 -05:00
gwenn
42d95f042f Fix tests and improve InvalidColumnType error message. 2016-05-18 21:25:13 +02:00
John Gallagher
30733a3688 Modify Rows::next to tie its lifetime to the returned Row.
This means Rows no longer implements Iterator, but it is no longer
possible to misuse it by accessing a stale Row handle.
2016-05-18 11:41:22 -05:00
John Gallagher
437a06fca3 Merge branch 'master' into gwenn-stmt-cache 2016-05-17 20:52:52 -05:00
John Gallagher
599bf5acfe Add test and fix for nested savepoint rollbacks.
This requires giving savepoints distinct names.
2016-05-17 20:19:44 -05:00
John Gallagher
92834951e3 Make the creation of transactions and savepoints take &mut self.
Transactions in SQLite are nested, but the previous API allowed rusqlite
transaction wrappers to be created as "siblings". This resulted in
unexpected (and usually wrong) behavior.
2016-05-17 19:53:53 -05:00
John Gallagher
e71c3c5207 Add Connection::set_prepared_statement_cache_capacity. 2016-05-17 14:20:56 -05:00
John Gallagher
d923d8c670 Use a real LruCache instead of a VecDeque. 2016-05-17 13:35:23 -05:00
John Gallagher
20b93bdb96 rustfmt 2016-05-17 13:35:23 -05:00
John Gallagher
bd81b727f0 Simplify CachedStatement lifetimes 2016-05-17 13:35:21 -05:00
John Gallagher
3c15eb0218 Add Connection::prepare_cached. 2016-05-17 13:34:54 -05:00
John Gallagher
ed72da92ef Remove cache feature 2016-05-17 12:01:55 -05:00
John Gallagher
0ab9421e6a Detach StatementCache from Connection so we can embed it (coming later) 2016-05-17 11:59:54 -05:00
John Gallagher
1978568d01 Make StatementCache hold RawStatements instead of Statements. 2016-05-17 11:55:10 -05:00
John Gallagher
f6aba80f4b Extract RawStatement wrapper around *mut sqlite3_stmt. 2016-05-17 11:27:29 -05:00
John Gallagher
b76196ae1a Merge branch 'master' into gwenn-stmt-cache 2016-05-17 08:54:47 -05:00
gwenn
29373e7d0d Merge remote-tracking branch 'jgallagher/master' into vtab 2016-05-16 22:30:58 +02:00
John Gallagher
63e5570ca9 Merge pull request #149 from jgallagher/gwenn-reset
Reset statements ASAP.
2016-05-16 15:19:03 -05:00
John Gallagher
1262d3bb17 Call sqlite3_reset on a statement ASAP inside Rows's Iterator impl. 2016-05-16 14:39:14 -05:00
John Gallagher
8e1ce5cf9c Fuse a Rows iterator once it fetches the final row. 2016-05-16 14:11:44 -05:00
John Gallagher
4a6c7b5329 Reset in Rows's drop impl instead of waiting for the next query 2016-05-16 14:02:39 -05:00
gwenn
3a52dd65f0 Rustfmt 2016-05-16 19:52:17 +02:00
gwenn
9fefa372db Reset as soon as possible. 2016-05-16 19:51:31 +02:00
John Gallagher
ba7b1ea45e Merge pull request #147 from jgallagher/update-to-latest-bitflags
Update to latest bitflags crate.
2016-05-16 12:20:26 -05:00
gwenn
94b4b7595c Merge remote-tracking branch 'jgallagher/master' into vtab 2016-05-16 18:58:56 +02:00
gwenn
f1e0e10138 Merge remote-tracking branch 'jgallagher/master' into vtab 2016-05-16 18:38:15 +02:00
John Gallagher
f77ae8816d Update to latest bitflags crate.
Closes #139.
2016-05-16 11:36:48 -05:00
John Gallagher
757a1f40dc rustfmt 2016-05-16 11:18:38 -05:00
John Gallagher
493446e6d1 Implement exists using query instead of FFI. 2016-05-16 11:18:15 -05:00
John Gallagher
7b174c97f8 Add sanity check for insert that does not do an insertion 2016-05-16 11:15:07 -05:00
John Gallagher
504b16dc98 Merge branch 'master' into gwenn-convenient 2016-05-16 11:02:56 -05:00
John Gallagher
8124953882 rustfmt 2016-05-16 10:17:25 -05:00
John Gallagher
b47b644246 Merge branch 'master' into gwenn-json 2016-05-16 10:14:09 -05:00
John Gallagher
68256a54ad Merge pull request #144 from jgallagher/gwenn-chrono
From/ToSql for chrono types.
2016-05-16 10:13:42 -05:00
John Gallagher
4924c0b38b rustfmt 2016-05-16 10:02:07 -05:00
John Gallagher
6a4abff462 Restore support for full RFC3339 timestamps with a space seperator 2016-05-16 09:27:50 -05:00
John Gallagher
6d9b268776 Add tests confirming DateTime works with " " seperator instead of "T" 2016-05-16 09:13:45 -05:00
John Gallagher
34d5e2db24 Always store DateTimes in UTC 2016-05-16 09:08:31 -05:00
John Gallagher
b87d4b44a6 Minor code cleanup/refactoring. No functional changes. 2016-05-15 22:51:04 -05:00
John Gallagher
5038e2a705 Remove unnecessary column_has_valid_sqlite_type impl 2016-05-15 22:46:50 -05:00
John Gallagher
b68e9e8a6f Merge branch 'gwenn-chrono' into json 2016-05-15 22:41:06 -05:00
John Gallagher
88fb175b40 Limit Timespec representation to strings. 2016-05-15 22:30:11 -05:00
John Gallagher
07801ca370 Greatly reduce implementation of chrono types.
Limit ToSql/FromSql to string representations, and limit allowed string
representations to RFC3339 (if a timezone is expected) and SQLite's
`datetime()` format (if not).
2016-05-15 22:23:02 -05:00
John Gallagher
42bc173009 Only use strings for NaiveDate's ToSql/FromSql impl 2016-05-15 19:58:06 -05:00
John Gallagher
350dc59bb9 Remove unnecessary column_has_valid_sqlite_type impls 2016-05-15 15:32:59 -04:00
gwenn
b20168fe9c Use String::from_utf8_lossy for error/trace.
Try to use the original message even if there are invalid
characters.
2016-05-07 12:08:57 +02:00
gwenn
8e92ef6cf3 SQLite Modules cannot be destroyed. 2016-05-07 12:04:16 +02:00
gwenn
79376a4ca9 Partially fix the bug reported by @iwinux.
If microseconds are specified but no timezone indicator, parsing
fails...
2016-05-04 21:57:16 +02:00
gwenn
6fb549420b Rustfmt 2016-05-03 21:00:59 +02:00
gwenn
1cf68d2184 Julian/Unix times are ambiguous when converted to DateTime. 2016-04-15 21:02:08 +02:00
gwenn
59872a1850 Fix clippy warnings 2016-04-02 17:16:17 +02:00
gwenn
57b492ffb2 Merge branch 'chrono' of https://github.com/gwenn/rusqlite into json 2016-04-02 16:50:00 +02:00
gwenn
87844c688e Fix clippy warning 2016-04-02 16:48:33 +02:00
gwenn
94f181f359 Merge branch 'chrono' of https://github.com/gwenn/rusqlite into json 2016-04-02 14:02:28 +02:00
gwenn
3769d085ae Fix clippy warnings. 2016-04-02 13:57:55 +02:00
gwenn
b802230d56 Fix warnings 2016-03-30 18:28:03 +02:00
gwenn
5541cb06fe Merge remote-tracking branch 'jgallagher/master' into vtab 2016-03-30 18:26:26 +02:00
gwenn
73bd4a29f2 Merge remote-tracking branch 'jgallagher/master' into chrono 2016-03-30 18:02:48 +02:00
gwenn
3a7c87b896 Merge remote-tracking branch 'jgallagher/master' into json 2016-03-30 17:58:36 +02:00
John Gallagher
09dfa6afab Move clippy allowance behind a cfg_attr 2016-03-29 16:36:00 -04:00
John Gallagher
c0b8be99e8 Fix crash due to 0-sized function type change in nightly 2016-03-29 16:14:12 -04:00
John Gallagher
41fe698cec Address additional clippy warnings 2016-03-29 14:18:56 -04:00
John Gallagher
2bd54578f5 Update clippy version and address new warnings 2016-03-29 11:54:02 -04:00
gwenn
3c1ce6428a Implement FromSql/ToSql for serde_json Value 2016-02-25 19:06:37 +01:00
gwenn
ecac52dc4c Make FromSql impl for TimeSpec support double/int. 2016-02-25 18:44:53 +01:00
gwenn
08d4d9aadf Comment out TZ sensitive tests. 2016-02-23 18:34:08 +01:00
gwenn
33bc6edb4a Test From/ToSQL for chrono types. 2016-02-23 18:18:56 +01:00
gwenn
bdb9823b07 Add From/ToSql impl. for chrono types. 2016-02-22 20:36:49 +01:00
gwenn
aea2f876d5 Try to fix regression with Rust stable. 2016-02-14 16:24:35 +01:00
gwenn
0fe1990d34 Fix clippy warnings 2016-02-14 16:11:59 +01:00
gwenn
d5e4fdfa52 Try to fix Travis build. 2016-02-13 17:28:37 +01:00
gwenn
a9fa2baa3e Ensure there is one csv reader by cursor. 2016-02-12 20:17:42 +01:00
gwenn
8b5f871386 Add some missing doc 2016-02-11 21:47:47 +01:00
gwenn
1dd5c49937 Fix escape_double_quote 2016-02-11 21:19:18 +01:00
gwenn
38209ffef3 First minimalist test for csvtab implementation. 2016-02-11 19:16:05 +01:00
gwenn
3fbeccdf55 Fix CSVTab::next method. 2016-02-10 20:48:30 +01:00
gwenn
ed5637f513 Fix CSVTab::create method. 2016-02-10 20:30:08 +01:00
gwenn
1e6e8115bb Introduce VTab and VTabCursor traits. 2016-02-10 18:15:46 +01:00
gwenn
30d1464e93 Improve error handling. 2016-02-10 18:07:58 +01:00
gwenn
933000b57a Partial CSV virtual table implementation. 2016-02-08 18:06:11 +01:00
gwenn
2dc4230223 Split vtab module in two.
A part specific to int array module.
And a generic part.
2016-02-03 20:11:34 +01:00
gwenn
effbf1e395 Merge remote-tracking branch 'jgallagher/master' into vtab 2016-02-03 18:10:58 +01:00
gwenn
f261e8f7eb Introduce init_module! macro to create sqlite_module 2016-02-02 21:16:10 +01:00
gwenn
f749d24ac1 Merge remote-tracking branch 'jgallagher/master' into vtab 2016-02-02 19:18:19 +01:00
gwenn
24d5093ab8 Merge remote-tracking branch 'jgallagher/master' into rustfmt 2016-02-02 19:15:35 +01:00
gwenn
f529d130b9 Rustfmt 2016-02-02 19:12:00 +01:00
gwenn
82f1467a9f Add declaration for convenient module 2016-02-02 18:57:25 +01:00
John Gallagher
9a4095365f Merge branch 'master' into gwenn-stmt-cache 2016-02-02 10:39:22 -05:00
John Gallagher
350fd11fed Add a handle() method to unsafely get the underlying SQLite connection.
Doc comments suggest opening issues on rusqlite for any uses of
`handle()`, as uses indicate areas where rusqlite insufficiently wraps
SQLite.
2016-02-01 15:21:03 -05:00
gwenn
03bc69f815 Introduce exists and insert convenient methods 2016-02-01 20:42:50 +01:00
gwenn
eab16402be Merge remote-tracking branch 'jgallagher/master' into vtab 2016-02-01 20:35:30 +01:00
John Gallagher
a793f8c8c5 Remove scary lifetime-of-rows-may-panic from README.
Closes #119.
2016-02-01 14:30:51 -05:00
John Gallagher
55dde134e1 Merge pull request #122 from gwenn/zeroblob
Introduce ZeroBlob struct.
2016-02-01 14:14:14 -05:00
gwenn
43613a0020 Moves ZeroBlob from types to blob module. 2016-02-01 18:13:07 +01:00
John Gallagher
f4c3ba0fa2 rustfmt 2016-02-01 10:48:30 -05:00
gwenn
f488277373 Introduce ZeoBlob struct. 2016-01-31 18:17:28 +01:00
gwenn
ea14115d6c Ensure there is no allocation in final aggregation step. 2016-01-28 18:12:23 +01:00
gwenn
e17678b173 IntArray virtual table. 2016-01-24 12:18:21 +01:00
gwenn
2d6705b03e First, try to implement a simple virtual table. 2016-01-23 18:34:09 +01:00
gwenn
5b62e2dd5f Virtual Table: WIP 2016-01-10 20:56:04 +01:00
John Gallagher
0afdc111d1 Merge branch 'master' into gwenn-stmt-cache 2016-01-07 15:53:23 -05:00
John Gallagher
ca761d7697 Avoid creating an aggregation context unnecessarily if the function is
called against 0 rows.
2016-01-07 15:14:24 -05:00
John Gallagher
199dfc455b Internal refactor - extract common error handling code 2016-01-07 12:39:16 -05:00
John Gallagher
b189f6ba66 Change how Aggregate works when called on no rows.
Before this commit, if the aggregate function was called on 0 rows, it
would always return NULL (and never call Aggregate::init() or
finalize()). Now, init() and finalize() are always called to get the
result of the function, even if step() is never called.
2016-01-07 12:35:27 -05:00
John Gallagher
e4819b6adc Give Aggregate::finalize ownership of the context it created 2016-01-07 11:42:39 -05:00
John Gallagher
ab262a55de Merge branch 'aggregate' of https://github.com/gwenn/rusqlite into gwenn-aggregate 2016-01-07 11:40:40 -05:00
John Gallagher
726bd59932 Fix typo "rowss" in docs. 2016-01-07 11:36:01 -05:00
John Gallagher
0a371b7145 Rename StatementCache::release -> cache_stmt 2016-01-07 11:30:51 -05:00
John Gallagher
7b29277d6f Use discard() instead of cacheable = false to avoid prevent cached
statements from returning to the cache.
2016-01-07 11:24:20 -05:00
John Gallagher
ed0923bba9 Update for RowIndex change 2016-01-07 11:20:42 -05:00
John Gallagher
a9a953e6b7 Merge branch 'stmt-cache' of https://github.com/gwenn/rusqlite into gwenn-stmt-cache 2016-01-07 11:19:59 -05:00
John Gallagher
f290c15d0d Merge branch 'dynamic' of https://github.com/gwenn/rusqlite into gwenn-dynamic 2016-01-07 11:12:05 -05:00
gwenn
12f26e78b3 Introduce RowIndex trait (like in rust-postgres) 2016-01-02 12:13:37 +01:00
gwenn
9db82e74db Make possible to execute dynamic queries.
Queries with dynamic column count/type.
2016-01-02 10:28:00 +01:00
gwenn
987b06cf79 Add some documentation 2015-12-20 19:27:28 +01:00
gwenn
83b9fd0aba Test a user-defined aggregate function: my_sum. 2015-12-20 12:23:51 +01:00
gwenn
68b4943a39 Add some doc 2015-12-19 17:14:06 +01:00
gwenn
5876be3d48 Add test with cacheable set to false 2015-12-19 17:01:06 +01:00
gwenn
cb1951c21a Fix borrowing 2015-12-19 16:56:41 +01:00
gwenn
7bdf80ccdb Introduce two distinct lifetime parameters. 2015-12-19 16:49:11 +01:00
gwenn
468ded3e08 Merge branch 'master' of https://github.com/jgallagher/rusqlite into aggregate 2015-12-18 20:39:08 +01:00
Gwenael Treguier
86ffc24bb9 Merge branch 'master' of https://github.com/jgallagher/rusqlite into stmt-cache 2015-12-18 20:25:52 +01:00
Gwenael Treguier
30c8910d19 Still some lifetime problem... 2015-12-18 20:18:46 +01:00
Gwenael Treguier
85fb89b280 Fail to create a new CachedStatement. 2015-12-17 20:33:34 +01:00
Gwenael Treguier
109c26fea4 Replace LruCache by VecDeque. 2015-12-17 20:02:49 +01:00
John Gallagher
b241f98920 Add test and check for SQLite being in single-threaded mode 2015-12-16 23:56:21 -05:00
John Gallagher
2e082d7f94 Document new Error enum. 2015-12-16 23:51:24 -05:00
John Gallagher
7920dbc5ff Only check for SQLITE_CONSTRAINT_NOTNULL on new enough versions of SQLite. 2015-12-16 20:30:27 -05:00
John Gallagher
2129cdb0f2 Add Send and Sync bounds to boxed errors to be comaptible with io::Error. 2015-12-16 20:30:27 -05:00
John Gallagher
047861b928 Move Error into its own module (internal organization only - public API remains). 2015-12-16 20:30:27 -05:00
John Gallagher
aac4d59fcc Change Error from a struct to an enum (BREAKING CHANGE).
This allows us to separate out the underlying SQLite error codes from
errors that occur on the Rust side.
2015-12-16 20:30:27 -05:00
John Gallagher
bf859a8008 Attempt to enable extended result codes for all connections 2015-12-16 20:30:27 -05:00
Gwenael Treguier
ff02213b53 Introduce a RefCell in CachedStatement. 2015-12-16 20:10:31 +01:00
Gwenael Treguier
9257987b37 Try to introduce a CachedStatement struct. 2015-12-16 19:42:03 +01:00
Gwenael Treguier
880a78ae83 Partial fix following John suggestions. 2015-12-15 21:49:59 +01:00
Gwenael Treguier
108b6b6fcd Merge branch 'master' of https://github.com/jgallagher/rusqlite into stmt-cache 2015-12-15 21:03:31 +01:00
Gwenael Treguier
13c93e0f8b Rustfmt 2015-12-15 20:57:32 +01:00
Gwenael Treguier
0b42e3c78c Merge branch 'master' of https://github.com/jgallagher/rusqlite into aggregate 2015-12-15 20:55:46 +01:00
Gwenael Treguier
458951e2d5 First draft to support user defined aggregate functions. 2015-12-15 20:54:23 +01:00
John Gallagher
c63238108c Add comment to write recommending write_all. 2015-12-15 14:24:05 -05:00
John Gallagher
3482e1c453 Add unit test confirming write_all to a Blob fails if given too much data. 2015-12-15 13:39:47 -05:00
John Gallagher
d24968db15 Expand comments. 2015-12-14 16:21:38 -05:00
John Gallagher
900c241c4e Fix logic in seek to disallow seeking past the end 2015-12-14 16:11:07 -05:00
John Gallagher
af9b45851a Truncate instead of erroring if asked to read/write too much data from a Blob. 2015-12-14 16:06:53 -05:00
John Gallagher
c15a8dba79 More extensive unit tests for Blob. 2015-12-14 15:03:29 -05:00
John Gallagher
a43da3ef73 rustfmt 2015-12-14 14:13:14 -05:00
John Gallagher
7a7d13f520 Move Blob's seek to an impl of std::io::Seek. 2015-12-14 14:12:11 -05:00
John Gallagher
439f8583e7 Move Blob's write to an impl of std::io::Write. 2015-12-14 13:50:18 -05:00
John Gallagher
f290ce11ab Move Blob's read to an impl of std::io::Read. 2015-12-14 13:45:44 -05:00
John Gallagher
5ac5f3e9b5 Make blob_open take a DatabaseName instead of a str. 2015-12-14 13:38:36 -05:00
John Gallagher
73611d45d5 Merge branch 'blob' of https://github.com/gwenn/rusqlite into gwenn-blob 2015-12-14 13:35:05 -05:00
John Gallagher
4b512212d2 Inline decode_result_with_errmsg to fix dead code warning 2015-12-13 14:59:47 -05:00
John Gallagher
bf96a15bcf Merge remote-tracking branch 'origin/master' into bindgen-update 2015-12-13 08:45:59 -05:00
John Gallagher
b883ab651d Update unsafety of C function pointers for new bindgen 2015-12-13 08:40:51 -05:00
Gwenael Treguier
1c4ca000cf Simplify execute_batch implementation. 2015-12-13 14:15:56 +01:00
Gwenael Treguier
d5faf2fab3 Merge branch 'master' of https://github.com/jgallagher/rusqlite into stmt-cache 2015-12-13 11:23:54 +01:00
Gwenael Treguier
888dce0d8f Rustfmt 2015-12-13 11:05:11 +01:00
Gwenael Treguier
6f0f121d61 Merge remote-tracking branch 'remotes/jgallagher/master' into blob 2015-12-13 10:53:29 +01:00
John Gallagher
6bcc3edccd BREAKING CHANGE: Remove common prefix on TransactionBehavior case names. 2015-12-12 14:22:50 -05:00
John Gallagher
b1cde705be Rename SqliteLoadExtensionGuard -> LoadExtensionGuard. 2015-12-12 14:20:11 -05:00
John Gallagher
3d15a8a15c Rename SqliteTransaction* -> Transaction*. 2015-12-12 14:17:43 -05:00
John Gallagher
9cac56d6a2 Rename SqliteOpenFlags -> OpenFlags. 2015-12-12 14:13:29 -05:00
John Gallagher
ea5cb41bbf Rename SqliteRow -> Row. 2015-12-12 14:11:24 -05:00
John Gallagher
b932640181 Rename SqliteRows -> Rows. 2015-12-12 14:09:37 -05:00
John Gallagher
ec654352d9 Rename SqliteStatement -> Statement. 2015-12-12 14:08:04 -05:00
John Gallagher
eb60bb3111 Rename SqliteResult -> Result. 2015-12-12 14:06:03 -05:00
John Gallagher
f0b6bf9152 Rename SqliteError -> Error. 2015-12-12 13:53:58 -05:00
John Gallagher
4327a84edb Rename SqliteConnection -> Connection.
Leave old name in as a (deprecated) typealias.
2015-12-12 13:53:34 -05:00
John Gallagher
4830b0a648 Add unit test for function with variable number of arguments 2015-12-12 10:44:08 -05:00
John Gallagher
5039e57637 Merge branch 'master' into gwenn-functions
Conflicts:
	Changelog.md
2015-12-11 19:21:39 -05:00
John Gallagher
5fdb2e1fda Allow named parameters to be omitted.
If the parameters have never been bound, they default to `NULL`. If they
have previously been bound, they keep the existing value.
2015-12-11 16:36:49 -05:00
John Gallagher
3bcde498bd Expand comments. 2015-12-11 16:27:39 -05:00
John Gallagher
ecef092303 Add remove_function to clear a user-defined function. 2015-12-11 15:47:52 -05:00
John Gallagher
3baf7b10f8 Add unit test demonstrating a closure-based UDF. 2015-12-11 15:35:59 -05:00
John Gallagher
3913e89f94 Allow user scalar functions to return results.
This removes the need for scalar functions to have direct access to the
context (in order to set the return value).
2015-12-11 15:08:40 -05:00
John Gallagher
81ec7fe7cd Add get to function::Context.
This allows user-defined functions to now only accept a `Context`, as it
embeds the arguments inside itself.
2015-12-11 14:46:28 -05:00
John Gallagher
94d40c41c7 Introduce Context wrapper for user-defined functions.
This commit adds get/set auxilliary data for arguments; more to come.
2015-12-11 13:54:08 -05:00
John Gallagher
29494f46f6 Let create_scalar_function take an FnMut instead of a extern "C" fn. 2015-12-11 12:01:05 -05:00
John Gallagher
aae431760e rustfmt - no code changes 2015-12-11 11:41:40 -05:00
John Gallagher
0c3575e845 Fix segfault in regexp user function test 2015-12-11 11:40:53 -05:00
John Gallagher
9f5f4ac385 Merge branch 'functions' of https://github.com/gwenn/rusqlite into gwenn-functions
Conflicts:
	Cargo.toml
	src/lib.rs
2015-12-11 11:31:25 -05:00
John Gallagher
599e30f372 Rename bind_named_parameters -> bind_parameters_named. 2015-12-10 20:49:47 -05:00
John Gallagher
0051ff47a6 Refactor: Extract match to get an expected row into its own method. 2015-12-10 20:48:38 -05:00
John Gallagher
b7468b2c4b Make parameter_index return a Result<Option<_>> instead of squashing
string conversion errors into None.
2015-12-10 20:41:31 -05:00
John Gallagher
186cb5893b Rename query_named_row -> query_row_named.
I think this is more consistent with Rust's tendency to group similar
methods like `iter`, `iter_mut` by appending the difference as a suffix.
2015-12-10 20:31:07 -05:00
John Gallagher
8d4b3e6a31 Remove commented-out code 2015-12-10 20:30:43 -05:00
John Gallagher
21528452d7 Clean up comments on named parameter methods 2015-12-10 20:30:05 -05:00
John Gallagher
7338f23d4b Add extra assertions around binding named parameters 2015-12-10 20:27:09 -05:00
John Gallagher
2f220161a5 Add extra check to named-parameter insertion unit test 2015-12-10 20:16:46 -05:00
John Gallagher
ab6ab3b2e9 Run rustfmt on named_params.rs 2015-12-10 17:01:19 -05:00
John Gallagher
53979407c5 Merge branch 'named-param' of https://github.com/gwenn/rusqlite into gwenn-named-param
Conflicts:
	Cargo.toml
	src/lib.rs
2015-12-10 16:53:43 -05:00
John Gallagher
a1f1480b18 Run rustfmt on all crate files 2015-12-10 16:48:09 -05:00
John Gallagher
49951ca3be Add backup and restore methods to SqliteConnection (behind backup Cargo feature) 2015-12-10 16:20:46 -05:00
John Gallagher
3781b8f47f rustfmt backup.rs 2015-12-10 16:20:46 -05:00
John Gallagher
8c2e0a0da7 Rename BackupName -> DatabaseName 2015-12-10 16:20:45 -05:00
John Gallagher
5ebbf5a1a2 Use &str instead of String inside BackupName 2015-12-09 00:48:40 -05:00
John Gallagher
e2f8e73635 Initial implementation of the online backup API. 2015-12-09 00:19:59 -05:00
John Gallagher
51a542c0f7 Fix broken load_extension feature 2015-12-08 21:15:23 -05:00
Gwenael Treguier
fe6afe2a94 Merge branch 'master' of https://github.com/jgallagher/rusqlite into functions 2015-12-06 21:33:21 +01:00
Gwenael Treguier
7ab79d6de6 Add Failure documentation. 2015-12-06 19:57:20 +01:00
Gwenael Treguier
da69584b9f Add Example and Failure documentation 2015-12-05 13:43:03 +01:00
Gwenael Treguier
5b86871d76 Merge branch 'master' of https://github.com/jgallagher/rusqlite into named-param 2015-12-05 12:32:16 +01:00
Gwenael Treguier
fa03bcd564 Fix use declaration. 2015-12-05 12:28:12 +01:00
Gwenael Treguier
18ff9cf4ca Merge branch 'master' of https://github.com/jgallagher/rusqlite into stmt-cache 2015-12-05 11:58:06 +01:00
Gwenael Treguier
2cf0455f8d Add Failure documentation 2015-12-05 11:28:33 +01:00
Gwenael Treguier
cef1d3285e Merge branch 'master' of https://github.com/jgallagher/rusqlite into blob 2015-12-05 11:11:23 +01:00
John Gallagher
ac08a18c43 Merge pull request #86 from jgallagher/gwenn-trace_extension
Add Rust interface to SQLite's logging, tracing, and profiling hooks
2015-12-01 13:19:43 -05:00
John Gallagher
3d654aeed1 Add more documentation for failure modes of functions that return s 2015-12-01 12:05:29 -05:00
John Gallagher
1af3fcd053 Fix error messages when failing to convert paths and strings to C-compatible versions 2015-12-01 11:47:55 -05:00
John Gallagher
49cb1efe62 Merge branch 'master' into gwenn-trace_extension 2015-12-01 11:13:23 -05:00
John Gallagher
635616842c Remove 'static requirement on output of closure given to query_map and query_and_then.
The 'static bound was there to prevent callers from being able to save
off the `SqliteRow` handles passed into the closure. This PR changes the
closure to take `&SqliteRow`s instead, which provides the same feature
without restricting the output of the closure.
2015-12-01 10:58:32 -05:00
John Gallagher
e6fef5107d Change profile() to take a Rust fn instead of an extern "C" fn. 2015-12-01 10:34:18 -05:00
John Gallagher
ace5b1ebdc Change trace() to take a Rust fn instead of an extern "C" fn. 2015-11-30 21:08:39 -05:00
John Gallagher
dbfa6ca31f Change config_log to take a Rust fn instead of an extern "C" fn.
Moves the unit test for config_log out of #[ignore] and into its own
test file since it affects the entire process.
2015-11-30 21:08:39 -05:00
John Gallagher
eaf080261b Merge branch 'trace_extension' of https://github.com/gwenn/rusqlite into gwenn-trace_extension 2015-11-30 13:13:43 -05:00
Gwenael Treguier
0729e195c3 Use debug_struct for formatting. 2015-11-30 12:16:09 -05:00
Gwenael Treguier
20c1213482 Remove feature duration. 2015-11-11 15:03:07 +01:00
Gwenael Treguier
a2327fb048 Revert "Remove usage of unstable library feature 'duration'"
This reverts commit 9c415f9c9e.
2015-11-11 15:00:39 +01:00
Gwenael Treguier
4d2d8b43e6 Clean use statement. 2015-11-11 14:45:25 +01:00
Gwenael Treguier
e052053a79 Merge remote-tracking branch 'jgallagher/master' into stmt-cache 2015-11-11 14:42:08 +01:00
Gwenael Treguier
ddd976c158 Cleanup use statements. 2015-11-11 14:39:54 +01:00
Gwenael Treguier
db7345624f Merge remote-tracking branch 'jgallagher/master' into named-param 2015-11-11 14:39:15 +01:00
Gwenael Treguier
50bfba1e1d Ignore test_log. 2015-11-11 14:29:40 +01:00
Gwenael Treguier
8bff40b6d6 Merge remote-tracking branch 'jgallagher/master' into trace_extension 2015-11-11 14:28:21 +01:00
John Gallagher
420c4d4d9f Address RFC 1214 warning 2015-11-03 11:27:52 -05:00
John Gallagher
b1350c4c14 Merge branch 'master' into gwenn-reset_asap 2015-09-22 10:16:52 -07:00
John Gallagher
d23667870e Merge pull request #70 from jgallagher/pfernie-master
Replace get_opt with get_checked. Add query_and_then and query_row_and_then.
2015-09-21 10:38:07 -04:00
John Gallagher
7ee69fe103 Remove get_opt (superceded by get_checked). 2015-09-21 10:31:11 -04:00
John Gallagher
1918dc14d0 Add tests for query_row_and_then(). 2015-09-20 21:30:40 -04:00
John Gallagher
072a336b33 Refactor: Reduce duplication across query_and_then tests. 2015-09-20 21:28:50 -04:00
John Gallagher
0cbb2743e3 Merge branch 'master' of https://github.com/pfernie/rusqlite into pfernie-master 2015-09-20 21:07:39 -04:00
John Gallagher
59a3b0ddb5 Merge pull request #62 from gwenn/too-big
Check Rust str length before binding.
2015-09-20 20:57:28 -04:00
John Gallagher
d07c7ec8a6 Add basic unit test of statement debug including SQL 2015-09-20 20:44:51 -04:00
gwenn
05669082a3 Debug db path and stmt sql. 2015-09-20 20:41:13 -04:00
John Gallagher
43b0c1c98a Merge branch 'reset_asap' of https://github.com/gwenn/rusqlite into gwenn-reset_asap 2015-09-20 20:30:59 -04:00
John Gallagher
36f577aea6 Merge pull request #53 from gwenn/exec_check
Extra check in SqliteStatement.execute
2015-09-20 20:29:12 -04:00
Huon Wilson
b7efb37b35 Relax uses of P: AsRef<...> from &P to P.
This means that one can pass `AsRef` types directly, without having to
insert a `&`, e.g. `SqliteConnection::open("foo.db")` (new)
vs. `SqliteConnection::open(&"foo.db")` (old).

This should be backwards compatible, since there is an impl in the
standard library:

    impl<'a, T, U> AsRef<U> for &'a T where U: ?Sized, T: AsRef<U> + ?Sized

I.e. the old `&P` satisfies the new bound still. (Taking `P` directly is
what the standard library does with similar functions, like
`File::open`.)
2015-09-08 18:11:50 +10:00
Patrick Fernie
e4eda2041e Implement SqliteConnection::query_row_and_then() 2015-08-27 14:47:48 -04:00
Patrick Fernie
29072e585b Implement SqliteStatement::query_and_then()
Allows for more ergonomic unification of error types
2015-08-27 13:43:43 -04:00
Patrick Fernie
e1532f5edf Correct idx-checking behavior for SqliteRow::get_checked() 2015-08-27 10:44:24 -04:00
Gwenael Treguier
b9ab3350ea Add regexp() function implementation 2015-08-09 13:06:23 +02:00
Gwenael Treguier
0a454eed79 Add support to user defined scalar functions 2015-08-09 09:52:53 +02:00
Gwenael Treguier
a470499dcb Improve documentation 2015-08-08 16:33:08 +02:00
Gwenael Treguier
eb7f670ce1 Make named_params module private 2015-08-08 16:19:05 +02:00
Gwenael Treguier
3b830b4bce Add documentation 2015-08-08 16:11:31 +02:00
Gwenael Treguier
59a4c5593a Improve documentation. 2015-08-08 09:57:07 +02:00
Gwenael Treguier
d1f5ce2435 Check when buffer is too long. 2015-08-08 09:39:35 +02:00
Gwenael Treguier
6bc1a8bb59 Check when statement is too long. 2015-08-08 09:30:50 +02:00
Gwenael Treguier
3b673a74b2 Add SqliteConnection.execute_named,query_named_row. 2015-08-07 02:19:57 +02:00
Gwenael Treguier
9c63b9f37a Check Rust blob length before binding. 2015-08-06 21:45:54 +02:00
Gwenael Treguier
7b8051dc7e Check Rust str length before binding. 2015-08-06 21:15:30 +02:00
Gwenael Treguier
7ff9d4056b Add SqliteStatement.named_query. 2015-08-05 22:07:49 +02:00
Gwenael Treguier
e81757e86d Add Stmt::named_execute and Stmt::parameter_index. 2015-08-04 21:48:54 +02:00
Gwenael Treguier
8bb624cccc Factorize code 2015-08-04 18:52:57 +02:00
Gwenael Treguier
9c415f9c9e Remove usage of unstable library feature 'duration' 2015-08-02 12:16:01 +02:00
Gwenael Treguier
25de884720 LRU statement cache 2015-08-02 12:07:49 +02:00
gwenn
ef254fdca0 Rename feature to 'trace' 2015-08-01 18:58:04 +02:00
gwenn
1bf12f8150 Feature blob IO. 2015-08-01 18:51:02 +02:00
gwenn
4a7e83f0af Feature sqlite3_{log,trace,profile}. 2015-08-01 17:21:41 +02:00
gwenn
4fa6d3c020 Reset as soon as possible. 2015-08-01 10:18:06 +02:00
gwenn
f91db1b350 Cache column_count (I am not sure it's worth it) 2015-08-01 10:08:28 +02:00
gwenn
c31c68d5e3 Only check column count when DONE. 2015-08-01 09:11:31 +02:00
gwenn
1dc144c8c1 Add test_execute_select. 2015-08-01 08:09:59 +02:00
John Gallagher
e7eb6454d9 Merge pull request #51 from Yuhta/colnames
Add column_names to SqliteStatement
2015-07-26 13:55:15 -04:00
John Gallagher
4d1063348e Use sqlite3_destructor_type from bindgen'd header 2015-07-26 13:43:43 -04:00
Jimmy Lu
22968be4fc Add column_names to SqliteStatement 2015-07-24 22:16:20 -04:00
gwenn
fd36d98c85 Make SqliteOpenFlags implement Default.
Activate URI and NO_MUTEX by default.
2015-07-06 20:24:27 +02:00
John Gallagher
ad3e805357 Merge pull request #39 from jgallagher/add-get-checked
Add get_checked to SqliteRow.
2015-05-11 20:17:18 -04:00
Marcus Klaas
51f6c15c6c Slightly adjust the signature of query_map 2015-05-11 16:46:28 -04:00
John Gallagher
ea911fbdbd Give MappedRows a SqliteRows instead of a SqliteStatement. 2015-05-11 16:46:28 -04:00
John Gallagher
3f75300844 Use boxed closures to allow query_map to take f: F instead of f: &F 2015-05-11 16:46:28 -04:00
Marcus Klaas
95f511d437 Add initial implementation for query_map 2015-05-11 16:46:26 -04:00
Marcus Klaas
f591b82cb0 Remove uses of query_row_safe in tests 2015-05-07 15:41:02 +02:00
John Gallagher
37cfcf470b Add SqliteRow::get_checked, which performs basic SQLite column type checking. 2015-05-04 21:50:36 -04:00
John Gallagher
03be8e0cd6 Make query_row a synonym for query_row_safe.
This is a breaking change for anyone using `query_row`. To update code
that used the old `query_row`, you must now `.unwrap()` the returned
result.
2015-05-04 20:12:18 -04:00
John Gallagher
120f0cbb65 Add messages to all our assertions. 2015-05-04 20:02:33 -04:00
John Gallagher
98e7994251 Merge pull request #35 from marcusklaas/as-path
Change path parameter type to &AsRef<Path>
2015-05-04 19:55:19 -04:00
John Gallagher
55c173a465 Merge branch 'stable' into 'master' 2015-05-04 19:52:10 -04:00
Marcus Klaas
debb717aa4 Change path parameter type to &AsRef<Path> 2015-05-04 21:22:11 +02:00
John Gallagher
b393348ab0 Remove stable #![allow(unstable)] tags from docs 2015-05-03 21:49:27 -04:00
John Gallagher
038d30e2c8 Remove unstable features for Rust-1.0-beta 2015-04-03 14:48:35 -05:00
John Gallagher
5e04b98840 Updates to track rustc nightly 2015-04-03 08:32:11 -05:00
Huon Wilson
57ca5f3b51 Use std::ptr::Unique to ensure SqliteConnection is Send.
Semantically the C resource is owned by the SqliteConnection, so Unique
is correct. Being Send is safe because sqlite3 can only possibly be
thread unsafe in cases when there is simultaneous access from multiple
threads, but transferring ownership between threads doesn't allow that
to occur.
2015-03-29 21:27:13 +11:00
John Gallagher
4b085b9103 Bump version and use libc from crates.io 2015-03-28 23:09:21 -04:00
John Gallagher
c8fbe48f15 Remove unneeded #![feature(core)] 2015-03-28 23:03:45 -04:00
John Gallagher
2461654861 Use new hyphen-less extern crate name 2015-03-26 15:49:13 -04:00
John Gallagher
89e20146e3 Use bitflags crate instead of rustc_bitflags 2015-03-17 00:56:55 -04:00
John Gallagher
632d87de2f Remove most uses of #[feature(core)] 2015-03-17 00:55:28 -04:00
John Gallagher
b3d949b3bb Remove unneeded #[feature]s 2015-03-17 00:44:37 -04:00
John Gallagher
736b62e0ce Reexport sqlite3_stmt from libsqlite3-sys for easier ToSql impl'ing 2015-03-12 16:40:07 -04:00
John Gallagher
30db1905d3 Cleanup - if let to match 2015-03-10 16:07:38 -04:00
John Gallagher
d7909c086b rustup - remove now-unused feature 2015-03-10 15:52:30 -04:00
John Gallagher
f971d57396 Merge branch 'master' into path-reform 2015-02-23 21:44:29 -05:00
John Gallagher
ee89f8db59 Fix warnings from latest rustc 2015-02-23 20:37:55 -05:00
John Gallagher
31d629070e Add scoped guard for enabling extension loading 2015-02-23 20:37:55 -05:00
John Gallagher
348f94e109 Add public API for loading extensions 2015-02-23 20:37:55 -05:00
John Gallagher
03f368c4f4 Build raw sqlite interface as libsqlite3-sys
Use pkg-config to find it.
2015-02-23 20:37:55 -05:00
John Gallagher
7a430c0fde Use existing message instead of ffi::code_to_str in Error trait 2015-02-13 15:48:11 -05:00
John Gallagher
21e0a5493d Merge branch 'jshs-std-error' into v0.0.9 2015-02-13 15:45:53 -05:00
John Gallagher
937eedbe61 Fix for latest rustc changes 2015-02-13 15:44:24 -05:00
John Gallagher
1dc78b66da SqliteConnection::open takes a std::path.
Add new constructors, `open_in_memory` and `open_in_memory_with_flags`,
for opening in-memory databases.

Closes #13.
2015-02-06 20:07:23 -05:00
Joshua Schneider
6d795caaed Implement standard Error trait for SqliteError 2015-02-04 21:33:11 +01:00
John Gallagher
a89ceeef01 Add feature(test) for testing 2015-02-04 10:53:28 -05:00
Patrick Fernie
ec65bc4978 add feature attributes for unstable APIs 2015-02-03 19:01:24 -05:00
Patrick Fernie
58fa5bde2a update to use fmt::{Display,Debug} instead of fmt::{String,Show} 2015-02-03 18:59:58 -05:00
Marcus Klaas
954a99d64b import crate for bitflags macro 2015-01-19 21:13:51 +01:00
John Gallagher
8617cde6b6 Add query_row_safe.
This is a `SqliteResult`-returning variant of `query_row`, which panics
if the query fails or does not return at least one row.
2015-01-10 21:17:49 -06:00
John Gallagher
b57322e2ca Allow use of unstable APIs 2015-01-10 20:58:55 -06:00
John Gallagher
680056b351 Implement fmt::String for SqliteError 2015-01-10 20:58:55 -06:00
John Gallagher
8843d15a07 Use new Show interpolation 2015-01-10 20:58:55 -06:00
John Gallagher
cc8a68ca83 Update for int/uint -> isize/usize 2015-01-10 20:58:54 -06:00
John Gallagher
830758c8f8 Update for new directive name 2015-01-07 14:06:21 -05:00
John Gallagher
e02442c531 Update for rust's std::c_str -> std::ffi 2015-01-07 14:05:36 -05:00
John Gallagher
b69e3d083d Remove now-unneeded directives 2015-01-07 11:24:48 -05:00
John Gallagher
d427ddd7a5 Use new closure syntax 2015-01-07 09:18:14 -05:00
John Gallagher
f2a1a8076f Use associated type for Iterator 2015-01-05 11:15:24 -05:00
John Gallagher
a52fedad36 Use ToCStr trait 2015-01-05 11:15:15 -05:00
John Gallagher
5902b9106c sed -i -s 's/#\[deriving(/#\[derive(/g' **/*.rs 2015-01-05 10:59:55 -05:00
John Gallagher
05b03ae2ce Set default busy timeout to 5 seconds 2014-12-23 12:26:57 -05:00
John Gallagher
ba1f648679 Use semicolons on macros 2014-12-23 12:22:16 -05:00
John Gallagher
678fd0f3a3 Add #[deriving(Copy)] as appropriate 2014-12-23 12:22:05 -05:00
John Gallagher
13fc87fe11 Update bindgen output, mainly to include #[deriving(Copy)] 2014-12-23 12:21:42 -05:00
John Gallagher
d0dfb27007 Use Vec::from_raw_buf instead of vec::raw::from_buf 2014-12-04 10:47:19 -05:00
John Gallagher
f2c6389601 Track changes in rust-nightly 2014-11-19 10:48:40 -05:00
John Gallagher
8fa377b36c Remove "semi-safe" term.
Based on comments from [this reddit
thread](http://www.reddit.com/r/rust/comments/2lapta/rusqlite_ergonomic_semisafe_bindings_to_sqlite/).
2014-11-10 12:56:32 -05:00
John Gallagher
75dd753fbb Track changes in rust-nightly 2014-11-10 11:58:46 -05:00
John Gallagher
66d5502308 Fix failing travis build 2014-11-04 12:26:08 -05:00
John Gallagher
bc85835566 Add warning about stale rows to SqliteRows docs 2014-11-04 10:55:07 -05:00
John Gallagher
b34f255aac Add documentation 2014-11-03 17:11:00 -05:00
John Gallagher
949260046c Change query_row to unwrap the SqliteResult 2014-10-28 15:14:52 -04:00
John Gallagher
68e9d81283 Rename transaction mode to behavior to match SQLite docs 2014-10-23 17:57:02 -04:00
John Gallagher
c8af7e4eb5 Add ToSql/FromSql for time::Timespec.
Uses SQLite's default format string for `datetime()`.
2014-10-22 22:16:00 -04:00
John Gallagher
1fa4c2098e Make FromSql return a SqliteResult 2014-10-20 21:07:52 -04:00
John Gallagher
56846dc0bd Make mod ffi public 2014-10-20 21:07:27 -04:00
John Gallagher
ca3a0f0580 Initial commit 2014-10-19 19:56:41 -04:00