v0.2.6 — savepoints route true
Verified on Linux x86-64, macOS/Apple Silicon and Windows x86-64 — tests, clippy and the crash harnesses green on all three. Prebuilt binaries attached (CLI for all three platforms + the sqlite3 drop-in shim; sha256sums below).
The one root cause behind the remaining test failures (N1)
With v0.2.5, the Django 4.2 project driving this series ran its full migrate natively and deleted every workaround — and ~all remaining test failures traced to one defect: the Python module's transaction interception matched statements on the head word, so ROLLBACK TO SAVEPOINT s executed as a bare ROLLBACK — the whole transaction silently discarded (writes before the savepoint lost), the paired RELEASE then found no transaction, and SAVEPOINT in autocommit was refused instead of starting one. Django's TestCase puts the class fixture in an outer transaction and each test in a savepoint, so the first rollback ate the fixture and every subsequent test in the class died.
All three shapes now match the stdlib, pinned end to end including Django's fixture-plus-savepoint-per-test cycle. The engine's savepoint machinery was correct all along — the fix is pure statement routing.
Also from the report: connect() now sweeps shared-memory stores left behind by crashed processes (SIGKILL skips atexit), so /dev/shm no longer accumulates orphaned 64 MiB files.
Known issue (tracked, fix in progress)
On the plain :memory: backing only: a savepoint taken as the first statement of a transaction, on a connection with previously committed transactions, can roll back nothing. A deterministic reproduction is in the repo and the mechanism is under adversarial review. File-backed databases — including the shared-memory databases Django's test runner uses — are unaffected.
Attached binaries
| file | contents |
|---|---|
mpedb-0.2.6-linux-x86_64.tar.gz |
mpedb CLI, Linux x86-64 |
mpedb-0.2.6-macos-arm64.tar.gz |
mpedb CLI, macOS Apple Silicon |
mpedb-0.2.6-windows-x86_64.zip |
mpedb.exe, Windows x86-64 |
libmpedb_sqlite3-0.2.6-linux-x86_64.tar.gz |
sqlite3 drop-in shim, Linux |
libmpedb_sqlite3-0.2.6-macos-arm64.tar.gz |
sqlite3 drop-in shim, macOS |
SHA256SUMS |
checksums for everything above |