I'm happy to announce the release of DBD::SQLite 1.27, the first production release since the original sprint in March/April.
This is a massive release for the DBD::SQLite team. Since the last release, we've seen around 150-200 commits and 7 developer releases. All of the changes in this release can be credited to (in commit quantity order) ISHIGAKI, DAMI, DUNCAND, VLYON, and a larger cast of bug submitters and patch submitters, and myself merely acting as release manager and resident devil's advocate.
Major features include:
- SQLite release upgraded to 3.6.20
- Hugely improved test suite, and a major increase in reliability (as measured by CPAN Testers). This should allow DBD::SQLite to finally escape it's shameful position in the FAIL 100 list.
- Foreign key constraints are now supported and enforceable. In line with SQLite itself, we have them disabled by default. A pragma (detailed in the SQLite documentation) is used to turn them on.
- Huge refactoring of the internals to match DBI's preferred style, the func calls are now deprecated, replaced by first class sqlite_* methods.
- Online Backup support, allowing the copying of SQLite databases while they are live.
- SQLite includes syntactic support for an infix operator 'REGEXP'. This is now implemented using Perl regular expressions.
- Support for loading external sqlite3 extensions
- Support for fine-grained query security via sqlite_set_authorizer hooks.
- Support for commit, rollback and update hooks
While we've tried to keep compatibility wherever possible, if you do some more unusual things with SQLite you may see problems or regressions.
For example, my Xtract tool was using the column_info method to discover types in SQLite interfaces. The column_info method now requires an explicit schema, which broke my code.
In most cases, we hope that any changes you will need to make are minor and will be more correct (i.e. closer to the standard DBI usage).
This release is recommended for all users, and (pending a unexpected late bug) is expected to be the stable release for some time (probably until the next SQLite release they define as a recommended upgrade).