Changes for version 0.000048 - 2026-06-06
- Fixed a pid-reuse race that could shut down the wrong database server. After a server was stopped, its watcher exited and the OS could recycle the watcher's pid; a later teardown signal (e.g. eliminate() from the watcher object's DESTROY, which Driver::stop triggers as its lexical goes out of scope) would then land on whatever now held that pid -- often a sibling cloned database's postmaster, smart-shutting-down a live server out from under its owner. The watcher now refuses to signal its pid once a stop/eliminate has been initiated, and forgets the pid once the watcher has exited. This was the intermittent FreeBSD/PostgreSQL-9.3 t/Pool/postgresql.t failure where a freshly cloned db was already shut down by the time the test connected to it
- Removed two redundant pid-signalling paths that carried the same pid-reuse hazard: the post-wait() server-pid poll in Driver::stop() (the watcher already reaps the server before it exits, so stop() now just trusts wait()) and the direct server-pid TERM/KILL fallback in Driver::DESTROY()
- Added t/clone_sequence.t, an explicit PostgreSQL regression asserting a clone of a stopped source continues its SERIAL sequence with the exact next id (no SEQ_LOG_VALS +32 jump); the broad Pool test only checks id ordering
Documentation
Modules
Quickly start a db server.
Base class for DBIx::QuickDB drivers.
DuckDB driver for DBIx::QuickDB.
MariaDB MySQL driver for DBIx::QuickDB.
Get ANY MySQL driver for DBIx::QuickDB.
MySQL MySQL driver for DBIx::QuickDB.
Percona MySQL driver for DBIx::QuickDB.
PostgreSQL driver for DBIx::QuickDB.
SQLite driver for DBIx::QuickDB.
Define a pool of databases to clone on demand.
Build hash based classes.
Daemon that sits between main process and the server.
Quickly spin up temporary Database servers for tests.
Provides
in lib/DBIx/QuickDB/Util.pm