Lumosql

Timeline
Login

Timeline

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

50 most recent check-ins

2026-10-08
11:39
Several trivial fixes in tests and documentation leaf check-in: 56d8a9ee56 user: danshearer tags: trunk
11:35
ignore sources/ check-in: e5d3f0e2d8 user: danshearer tags: trunk
11:34
Add new concurrency tests check-in: 4f47b2d550 user: danshearer tags: trunk
11:30
Bugfixes check-in: f8d9e4e524 user: danshearer tags: trunk
11:29
Document new concurrency tests and generally fix test/README check-in: c23bee1a65 user: danshearer tags: trunk
11:17
Add BSD license for libdb check-in: 865e5834a9 user: danshearer tags: trunk
07:24
Add file tests, which can't really be expressed by the SQL level tests. Includes things like what happens when multiple processes attempt DB operations, or a file is missing, etc. There is some per-backend handling here because they all stores things differently at the very bottom layer. check-in: f1ede6337f user: danshearer tags: trunk
07:20
Improve wording, and update for the optional libdb backend's BDB license. check-in: baa579d1d0 user: danshearer tags: trunk
07:13
Error mapping and handling in btree for libdb... Implement the errors for libdb integrity_check. Implement the (many many) libdb transaction errors, and return a single SQLITE_ABORT_ROLLBACK for any of them. check-in: d02c4183e3 user: danshearer tags: trunk
07:10
Implement libdb backup handles, and return SQLite errors for them check-in: 6c15f1d857 user: danshearer tags: trunk
2026-10-07
23:45
Close the session after doing bitflips to test rowsum, so that cache is flushed. For two backends (SQLite btree in WAL mode, and libdb) the next read came from cache, which mean the pre-bitfliped data was read and so the rowsum test failed. check-in: 6e88576be0 user: danshearer tags: trunk
23:42
Remove libdb region files (caches) when a database is closed. Otherwise a fresh open and read gets cache. Picked up by rowsum, proving it works already :) check-in: eb4312258a user: danshearer tags: trunk
22:41
Add the libdb backend check-in: 6fcc6a0857 user: danshearer tags: trunk
22:39
Add new backend libdb check-in: 76d404dd89 user: danshearer tags: trunk
22:35
Add new backend, libdb check-in: b2eb9798cf user: danshearer tags: trunk
22:30
Parameterise backend, because we now have another, non-LMDB backend check-in: 34b13fa5b4 user: danshearer tags: trunk
22:28
Added rpm benchmark script check-in: 8d95f3ba8d user: danshearer tags: trunk
2026-10-06
14:49
Small doc updates: 32-bit status, default hash algorithm etc check-in: efafb409c3 user: danshearer tags: trunk
2026-09-21
12:46
Trivial changes to enforce minimal version of not-forking v0.8. check-in: 384f0e98f6 user: danshearer tags: trunk
10:47
Add comparison between SQLite WAL readers needing write access to the -shm file, and the LMDB write access for read-only operations problem LumoSQL just fixed. It's the same problem. check-in: bf9848623c user: danshearer tags: trunk
10:09
Copy fix for readonly LMDB lockfiles to LMDB Fix comment typo in the same bit of LMDBv1 code check-in: 7929c2366d user: danshearer tags: trunk
10:05
Made read-only lock files safe... another TODO entry dies today check-in: dc810c844d user: danshearer tags: trunk
10:03
Explain the problem with read-only lock files in the README, with workarounds check-in: bb93c9fb42 user: danshearer tags: trunk
09:55
LMDBv1: refuse a read-only open whose lock file is not writable, unless the filesystem is read-only or the caller passes nolock=1. See comment for details. Report refusal in sqlite3_log. check-in: 867631ed1f user: danshearer tags: trunk
09:25
Fix valgrind find of uninitialised variable. Optimise instruction count using this same variable, spotted using callgrind check-in: c8f256f775 user: danshearer tags: trunk
2026-09-18
10:52
update history check-in: 12e7895f07 user: danshearer tags: trunk
10:50
Small libsodium usage improvement: start to use sodium_memzero() properly. In this case, calling it after freeing p->encKey because these are things that should not be left lying around. check-in: a8d93fcdc3 user: danshearer tags: trunk
10:47
Any SQL that does a write transaction causes BeginTrans to be used, and SQLite shows that the write lock needs to be released if there are any failures early in the transaction process. This behaviour is now copied in the LMDB backends, so that the lock is released and SQLITE_CORRUPT/NOMEM/etc is returned. check-in: b0051e4b7a user: danshearer tags: trunk
10:25
SQLite does optimistic transaction upgrades, starting with a read and then if it has to be write then it aborts the read and opens a write. In the LMDB backends we now correctly handle failures in this process. This was detected by an LLM following allocation failure paths, and it did a good job. Actually several LLMs, all suspiciously checking each others work in a harness. check-in: d52f344481 user: danshearer tags: trunk
10:19
LMDB backends: a cursor that failed to open was still in the cursor list, and so it got unlinked and that corrupts the cursor list. check-in: dde5caeb62 user: danshearer tags: trunk
10:16
The RAM-based ephemeral table system now reports allocation failure. Found when testing on Alpine under memory pressure, but I don't think it was anything to do with Alpine's musl. check-in: 9c86b89036 user: danshearer tags: trunk
10:13
This goes back to when we first learned about SAVEPOINT (see doc/context-what-are-savepoints.md ). In the LMDB backends we now do not free a savepoint when a commit fails. check-in: 338feea200 user: danshearer tags: trunk
10:09
This turned up on FreeBSD testing but applies to all platforms: need to close LMDB cursors before their transaction ends. This is about SQLite's cursor tripping, which I don't find obvious at all. Review from an SQLite expert would really help. in this case though, invalidateCursors() left both tripped and writeOnly read cursors open, and LMDB freed them at commit or abort. Any pending SQL statement then freed them again, so that was clearly wrong. check-in: 36271a9261 user: danshearer tags: trunk
10:02
Thanks to an eagle-eyed tester! Fix the following spectacular fail: BEGIN; CREATE TABLE t(a); INSERT INTO t VALUES(1); PRAGMA lmdb_transaction=optimistic; ROLLBACK; The table is still on disk despite the ROLLBACK. Abort message is "double free or corruption", oops. The LMDB-specific pragma was writing into all transactions, not just the ones it had started itself. check-in: 86d9ed8144 user: danshearer tags: trunk
09:57
When a VACUUM operation happens, a copy of the database is made first. I found a failure mode last week where if the VACUUM fails, the copy has already been deleted so the database is cactus. LMDB backends now do the rename/unlink after checking first. check-in: 1b0a9c8cbb user: danshearer tags: trunk
09:52
Finally cleaning up R shiny work from 2022 as I start to develop a new version check-in: ce025b4310 user: danshearer tags: trunk
08:35
Skip unnecessary mdb cursor positioning call for a new cursor because SQLite does it anyway check-in: cc7df4d733 user: danshearer tags: trunk
08:29
callgrind shows snprintf used to make a table name every time cursor moves. Add a helper function to replace snprintf and save quite a lot of instructions. This is real SQLite-style optimisation :) check-in: 2f508b113b user: danshearer tags: trunk
08:24
Improve the comparator overread patch in LMDBv1, it was comparing strings even tho the problem was with integers. I never copied this fix to LMDB, so add the revised patch there. check-in: ecf765dc42 user: danshearer tags: trunk
08:15
Return correct error message in the case of bad tmp space by passing SQLite errors directly. No translation of errors is needed in this case. check-in: d350cfbe96 user: danshearer tags: trunk
08:12
Copy method for choosing tmp directory from SQLite Unix VFS check-in: 694ee7b8b7 user: danshearer tags: trunk
08:09
Fix uninitialised free in the case of unwritable tmp check-in: f44a1fa9d6 user: danshearer tags: trunk
08:07
In rpm example: Pin RPM 6.1.0 so we don't get surprising breakage Add a stock-versus-LumoSQL rpmdb benchmark update docs check-in: 7558c8a2d8 user: danshearer tags: trunk
08:05
improve better-sqlite3 source selection and build preparation check-in: de3e9a10e0 user: danshearer tags: trunk
08:01
Fixes to patch wrapper (hopefully the need for any patches will go away) check-in: 4279f82b8f user: danshearer tags: trunk
07:56
Default fossil tests to use smaller repo than sqlite.org. Make speed test use same durability settings for both backends check-in: b5dc8c06de user: danshearer tags: trunk
00:10
Compare Fossil speed tests against SQLite WAL using equal durability check-in: b99b6e4e0c user: danshearer tags: trunk
00:06
Reject LUMO_ENCRYPT=on when LUMOSQL_TARGET supplied without lmdbv1_encrypt-on. Use normal patch list for shell-warning-to-stderr.patch. check-in: 851f5b2a5d user: danshearer tags: trunk
2026-09-17
23:56
fixes to fossil/README check-in: 5884e0c2b8 user: danshearer tags: trunk
23:32
Brought up to date check-in: 4faed3befd user: danshearer tags: trunk