Add test file lsm3.test, which should have been added a few days ago.
Change the BLOCK_SIZE, AUTOFLUSH and AUTOCHECKPOINT lsm_config() options to work in KB instead of bytes. This matches the user guide.
Fixes to lsm_work() to bring it into line with documentation: (a) third argument is a number of KB, not a number of db pages, and (b) passing -1 as the third argument means "do as much work as possible".
Fix lsm_checkpoint() and some lsm_info() calls to match documented behaviour.
Fix bug to do with block redirection.
Add a field to the database header to identify the compression scheme in use.
Add API to register a compression-factory method with an lsm handle.
Add the INFO_COMPRESSION_ID request. And the factory method for providing compression/encryption functions.
Merge compression-id branch with trunk.
Changes to lsm_unix.c to build on android: (a) do not use fdatasync() on android and (b) account for the fact that usleep() returns void on android.
Avoid extending the database file when truncating it to the minimum number of blocks required during system shutdown.
Make LARGEST_UINT64 unsigned. This was causing adjustExponent to fail when compiled with msvc.
Create sqlite4_num_isnan.
Prevent reading out of bounds in sqlite4_num_from_text. Parsing 'in' (prefix of 'inf') with byte count 2 triggered the bug.
Create sqlite4_num_from_int64.
Make sqlite4_num's exponent signed.
Fix sqlite4_num_from_text in 0.000(many zeros)00123 case.
Create sqlite4_num_isinf
Have worker clients and writers that discard an old in-memory tree update a read-lock slot before concluding their work or write transaction. This is required for read-only clients - which cannot set the value of their own read-lock slot.
Add definitions for the extra locks required for read-only clients to detect whether or not a database is live.