Damien Elmes
6b9378fb41
add (unused) add_card, and move sql to separate files
2020-03-27 14:48:25 +10:00
Damien Elmes
82ed288dc5
add benchmark for vec cache
...
test storage::sqlite::bench::bench_hash_cache ... bench: 399 ns/iter (+/- 27)
test storage::sqlite::bench::bench_no_cache ... bench: 4,854 ns/iter (+/- 499)
test storage::sqlite::bench::bench_vec_cache ... bench: 0 ns/iter (+/- 0)
2020-03-27 09:59:48 +10:00
Damien Elmes
2f4e35d566
store cached statements in a vec instead of separate optionals
2020-03-27 09:51:19 +10:00
Damien Elmes
369d2d89d9
update card in transaction
2020-03-27 07:58:25 +10:00
Damien Elmes
7f16f436c3
handle mtime/usn bump in backend, and tweak integer sizes
2020-03-26 20:55:04 +10:00
Damien Elmes
47504245dc
update_card()
2020-03-26 18:54:20 +10:00
Damien Elmes
7ddaf93f7a
use backend to get card
2020-03-26 17:47:43 +10:00
Damien Elmes
8abba00496
DeckID, CardID
2020-03-26 15:10:40 +10:00
Damien Elmes
f52e775354
NoteTypeID
2020-03-26 15:00:24 +10:00
Damien Elmes
39f916a23e
usn newtype
2020-03-26 13:06:02 +10:00
Damien Elmes
eb89a2db3f
use newtypes for distinguishing between second and millisecond stamps
2020-03-26 12:59:51 +10:00
Damien Elmes
289bdde20c
handle fields with embedded nuls
2020-03-24 14:53:33 +10:00
Damien Elmes
4e2e0d1b84
fix setting of wal
2020-03-23 13:52:57 +10:00
Damien Elmes
69d8cdd9ed
use backend for v1 and v2 cutoff calculations
...
this should also fix the CI failures, which were happening because
the datetime module wasn't matching the shifted time.time()
2020-03-22 14:28:26 +10:00
Damien Elmes
51a379de23
add search that ignores combining chars
...
On a test of a ~40k card collection, the 'ignore accents' add-on
takes about 1150ms, and this code takes about 70ms.
2020-03-21 15:15:59 +10:00
Damien Elmes
4ff17d31b3
add unicase collation
...
sqlite's like is hard-coded to use ASCII comparisons, so we can't
take advantage of this yet
2020-03-21 12:40:20 +10:00
Damien Elmes
2dc1b5c982
add regexp() to sqlite
2020-03-21 10:23:11 +10:00
Damien Elmes
00d0447ecb
support sorting on note type, card template and decks
2020-03-20 21:15:23 +10:00
Damien Elmes
425a9d04ca
fix decks
2020-03-20 21:15:23 +10:00
Damien Elmes
9752de5aaa
finish the remaining searches
...
Searches that require multiple deck or note type lookups won't perform
very well at the moment - it either needs caching or to be split up
at the DB level.
Nothing tested yet.
2020-03-20 21:15:23 +10:00
Damien Elmes
2beccd377b
add v1 and v2 legacy timing code
2020-03-20 21:15:23 +10:00
Damien Elmes
9f3cc0982d
deck searching
...
A bit more complicated than it needs to be, as we don't have the
full deck manager infrastructure yet.
2020-03-20 21:15:23 +10:00
Damien Elmes
7eab504126
add field_at_index() sql func
2020-03-20 21:15:23 +10:00
Damien Elmes
47c142a74c
move note code into notes.rs, add ability to rollback when unchanged
2020-03-20 21:15:23 +10:00
Damien Elmes
ae06b9e446
add Collection struct, and get media check working again
...
- media check no longer needs collection to be closed
- use savepoints for operations initiated by Rust, so they are
atomic without forcing a commit
2020-03-20 21:15:23 +10:00
Damien Elmes
2cd7885ec0
add begin/commit/rollback, and support creating collections
...
all but one unit test is now passing
2020-03-20 21:15:23 +10:00
Damien Elmes
b876d97770
use (or)json for DB bridge
...
Some initial testing with orjson indicates performance varies from
slightly better than pysqlite to about 2x slower depending on the type
of query.
Performance could be improved by building the Python list in rspy
instead of sending back json that needs to be decoded, but it may make
more sense to rewrite the hotspots in Rust instead. More testing is
required in any case.
2020-03-20 21:15:23 +10:00
Damien Elmes
04ca8ec038
initial work on DB handling in Rust
...
committing the Protobuf implementation for posterity, but will replace
it with json, as Protobuf measures about 6x slower for some workloads
like 'select * from notes'
2020-03-20 21:15:23 +10:00