This release brings a set of focused exception types that let you catch specific database failure modes (deadlocks, lock timeouts, check constraint violations, lost connections) instead of wrestling with generic driver errors. ActiveRow and Selection now expose getExplorer() for direct access to the underlying Explorer, and the reflection layer has been refactored for more consistent metadata across drivers.
✨ New Features
- getExplorer() –
ActiveRowandSelectionnow expose the underlyingExplorerinstance, no more jumping through hoops to get back to it - DeadlockException – catch deadlocks and serialization failures distinctly from other driver errors, so retry logic can stay surgical
- LockTimeoutException – a dedicated exception for lock wait timeouts
- CheckConstraintViolationException – check constraint violations now get their own class instead of being lumped with generic constraint errors
- ConnectionLostException – distinguish dropped connections from other driver failures, making reconnect strategies much cleaner
- Docker Compose setup – a ready-to-run Compose configuration for spinning up test databases locally
♻️ Code Refactoring
- Drivers reflection output – unified FK row shape across drivers, simplified MsSql
getIndexesSQL, parameterized SQLite PRAGMA queries, andForeignKey::$nameis now a non-nullable string
📦 Maintenance
- Improved PHPDoc descriptions, phpDoc types, and native type declarations across the codebase