Lumosql

Timeline
Login

Timeline

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

50 most recent check-ins

2026-10-21
15:18
When libcap is missing, pass -DWITH_CAP=OFF to the rpm example leaf check-in: 1657888758 user: danshearer tags: trunk
15:12
Detect SystemV semaphore problems on NetBSD. check-in: 6bcc8f5f1a user: danshearer tags: trunk
15:12
Improve the platform-specific instructions, add some NetBSD details check-in: eb650b569b user: danshearer tags: trunk
15:03
Apply =latest so every build matrix includes SQLite tip by default, unless something else is specified. check-in: a480ef2add user: danshearer tags: trunk
2026-10-20
17:17
top-level Makefile realclean target now recursively calls make realclean for each example. deleted a realclean line that intended to delete the benchmarks database (but used the wrong variable anyway). Terrible idea. check-in: 80bcae0ddb user: danshearer tags: trunk
17:11
Better explanation of LMDBv1.0 differences check-in: 0ec479e974 user: danshearer tags: trunk
2026-10-19
05:58
update libdb version number in all example lines relating to libdb check-in: df4375346c user: danshearer tags: trunk
05:57
Fossil example Fix path for NetBSD CA cert bundles check-in: c41cdef1ed user: danshearer tags: trunk
04:08
Build system build and bench now continue after a failed target in a given matrix. Needed for large multiplatform runs where every platform has a matrix. check-in: 0984df1e56 user: danshearer tags: trunk
2026-10-18
16:45
Follow trunk tip for libdb, because its quite fast-moving. Unlikely to break the tree because core capabilities aren't changing much, this is about bug fixes and bringing an ancient codebase somewhat into the modern age. check-in: 454cda7c6d user: danshearer tags: trunk
10:23
maintain TODO check-in: 857e81c8ea user: danshearer tags: trunk
10:22
Fossil example Imporove the DIY FOSSIL-ON-LUMOSQL.md for those don't use the one-shot makefile check-in: d6331fc894 user: danshearer tags: trunk
10:21
Fossil README describe tools/build-fossil.sh. check-in: 90da210148 user: danshearer tags: trunk
10:20
Fossil example build with one much smaller and simpler script. tools/build-fossil.sh does the prep steps in order and then calls Fossil make. LumoSQL's make build improved to decide whether the target needs rebuilding instead of just checking files exist. shell-warning-to-stderr.patch error eliminated so no need for patch. check-in: 7c6ef909df user: danshearer tags: trunk
00:30
Fossil example Don't let "fossil sql" attach to the global configuration database with an empty lumo_key check-in: 043377782f user: danshearer tags: trunk
00:29
Fossil example keep Fossil's own shell.c and remove the diskused stub. check-in: ee208b37e2 user: danshearer tags: trunk
00:28
Fossil example Discard the changes made to git tree before git pull, so we build from an existing latest pristine Fossil tree. check-in: 440b4c5ec4 user: danshearer tags: trunk
00:27
Raise version_from_branch to 3.55.0 check-in: 8522fe024e user: danshearer tags: trunk
2026-10-17
21:56
not-fork.d/sqlite3/upstream.conf Raise version_from_branch to 3.55.0 (required by fossil anyway) closed check-in: 1025f62bcd user: danshearer tags: mistake
21:55
lmdb, lmdbv1, libdb: Spurious SQLITE_CORRUPT was logged on certain lookups which store only the nKeyField ordering columns, and a full-key search such as OP_Found compared past the end of the stored key. Stopping after nKeyField fields stops the error via new lumoStoredKeyCompare. PRAGMA integrity_check no longer logs corruption. check-in: c5fdd693e9 user: danshearer tags: trunk
19:10
Delete fixed TODOs check-in: 45e6989e00 user: danshearer tags: trunk
19:09
Assorted libdb fixes: Keep destination commit counter when doing a VACUUM RowCountEst counts the entries properly Removed ephMinNode unused code Restore nDrop during SAVEPOINT rollback check-in: 10f6c7e13b user: danshearer tags: trunk
12:23
Make PRAGMA data_version work (ie be updated) for all backends. This is a strong hint the database has changed, maintained via SQLITE_FCNTL_DATA_VERSION whihc is what we are updating now. check-in: ea3edcf4c0 user: danshearer tags: trunk
12:19
Add fsync on the non-encrypted VACUUUM check-in: 606950d5fe user: danshearer tags: trunk
12:17
lmdbv1 - copy the VACUUM scratch with mdb_env_copy2 instead file copy loop Much better to use LMDBs internal functions, less code, more efficient. Had to add an fsync after the call. check-in: 02ca471849 user: danshearer tags: trunk
09:00
Invalidate incremental blob handles when their row changes In the lmdb, lmdbv1 and libdb backends a blob handle stayed valid after its row was replaced, updated or deleted, or its table cleared. A write through it then landed in another row, inside another column, or, in libdb, restored the old row; a libdb write after DELETE failed and rolled the DELETE back. check-in: 49bde2cf95 user: danshearer tags: trunk
03:46
Stray comment fix check-in: 654902f5d6 user: danshearer tags: trunk
2026-10-16
23:12
Remove dead code in the lmdb and lmdbv1 btree, and fix two pager constants. check-in: 5fb4baf0c4 user: danshearer tags: trunk
22:47
Correct the comments in the lmdb, lmdbv1 and libdb backends. This comment cleanup marks a milestone. These comments evolved from years ago when we knew nothing about how LumoSQL would work or even if it is was possible. There were comments that contradicted the code, SQLite, LMDB or libdb, upstream SQLite headers that did not describe this code, history in place of present behaviour, unclear references and unsourced claims. ` 29 files, 1412 lines added and 2390 removed. No code changes. check-in: 7721bbb9d2 user: danshearer tags: trunk
21:49
Four small code changes that became obvious during the prep for the giant comment commit that's been in preparation for weeks. check-in: e8761c151f user: danshearer tags: trunk
20:17
Fix two ephemeral-table defects in the three non-native backends: lmdb, lmdbv1 and libdb. WITH m(z) AS MATERIALIZED (SELECT zeroblob(5)) SELECT hex(z) FROM m; failed with "database disk image is malformed". The stored row now includes the pX->nZero zero bytes. check-in: 171ba1a20b user: danshearer tags: trunk
17:52
Updated crypto todo items check-in: ba2fff8d82 user: danshearer tags: trunk
17:45
Add three substantial items to TODO check-in: a967afaf52 user: danshearer tags: trunk
17:44
The lazy dirty-list patches allocated each environment's write scratch before acquiring me_wmutex. Concurrent first write attempts could both allocate it and leak one allocation. Now we serialise: acquire the writer mutex first, release it on allocation failure. MDB_NOLOCK is a special case. check-in: 29d0d5fc1c user: danshearer tags: trunk
17:33
Make LMDB backups safe with active readers and copy failures. LMDB ties read transactions to threads unless MDB_NOTLS is set. Open both backend environments with MDB_NOTLS. check-in: 356a3d0853 user: danshearer tags: trunk
17:10
Preserve non-WAL checkpoint result counters: SQLite initialises the sqlite3_wal_checkpoint_v2() output counters to -1 and documents that value for databases outside WAL mode. Retain those values in the LMDB, LMDBv1 and libdb checkpoint hooks so callers can distinguish a database outside WAL mode from a WAL containing zero frames. check-in: a624d976ce user: danshearer tags: trunk
17:00
Identical no-op build time fix for libdb as previous commit for LMDB backends; forgot to include it. check-in: af1f7d9a65 user: danshearer tags: trunk
16:58
SQLite has shared-cache mode, sharing the BtShared object and applies SQLite's schema and table locking rules, requiring SQLite to be threadsafe. Of LumoSQL backends, only the SQLite native is threadsafe in this sense and can support shared-cache mode. One layer down, libdb already does cached connection sharing, and the LMDBs *could* do it via environment pooling (which would be a good idea.) But this requires plumbing to connect the lower-level connection pooling with the SQLite shared-cache mode, which is a fairly complex project. At compile time, each LumoSQL replacement backend implements the btree.h contract selected by SQLITE_THREADSAFE and SQLITE_OMIT_SHARED_CACHE. Because the current LMDB, LMDBv1 and libdb backends do not expose SQLite shared-cache mode, their Enter and Leave functions are no-ops. check-in: 0de6aac9f8 user: danshearer tags: trunk
16:29
Map LMDBv1 address and DBI errors correctly check-in: 6761329852 user: danshearer tags: trunk
14:48
Delete obsolete comment, because AVL tree of in-memory databases is now pretty well tested. check-in: e3a42dfb31 user: danshearer tags: trunk
14:30
An LMDBv1 page-checksum Lumo build checksums every database except temp and memdb databases. VACUUM builds its rebuilt copy in a temp database (which therefore has no checksums) and sqlite3BtreeCopyFile then copies the temp database byte for byte over the live file. The copy therefore had no checksums, and VACUUM failed with "database disk image is malformed". Fix sqlite3BtreeOpen so it now sets up checksums and MDB_REMAP_CHUNKS for a temp database opened while DBFLAG_Vacuum is set. check-in: bc26356cb1 user: danshearer tags: trunk
14:20
Change test/sql/lmdbv1-encrypt.test to create its databases under $TMPDIR to avoid conflicts check-in: 1c32c4b24e user: danshearer tags: trunk
14:12
Remove unreachable/unused code found by static analysis. Shuffle comments accordingly. check-in: 27cd7be44d user: danshearer tags: trunk
13:01
Make LMDB backend comments match reality for page size change requests check-in: 59a38334ca user: danshearer tags: trunk
09:42
PRAGMA data_version indicates if a database is modified by maintaining a counter when operations have happened. In alternative backends (currently 3 of them) we now track a commit counter local to each connection. This also means we now correctly release the process lock after a full rollback. Found by doing an audit of commit semantics for the new (in fact, ancient) libdb backend. check-in: 08217f08dc user: danshearer tags: trunk
09:36
On both LMDB backends, compare rows in WITH ROWID tables as signed int, expose EBUSY as SQLITE_BUSY, and bounds-check rowid values. check-in: 32bdc434f6 user: danshearer tags: trunk
09:32
Make the text of SQL test failures visible at the build layer check-in: c821450d04 user: danshearer tags: trunk
09:29
Following some UBSan errors on rowsum (significantly helped by testing on Alpine and FreeBSD with their differently less tolerant libcs) did a full audit of all the different physical kinds of records we can have in LumoSQL. Turns out there are 5, and 5 conditions under which these can be read. That lead to a very tricky bit of validation work. We now have reliable rowsum (or MAC, or whatever encryption we add in the future) for all 10 record types. Added the record and handling types to the docs. check-in: 8850565b91 user: danshearer tags: trunk
09:11
Require valid salt for encrypted database opens check-in: bb3011ae77 user: danshearer tags: trunk
2026-10-15
20:52
Add macOS build notes check-in: d17538539b user: danshearer tags: trunk