It's been a year since the last stable DBD::SQLite was released. Actually, it's been a year and a half since the SQLite library bundled in the last stable DBD::SQLite was released by the upstream. A lot have happened there, and some here. It's time for you to test them all against your applications/modules, at last.

DBD::SQLite 1.55_07 (with SQLite 3.22.0) is a release candidate of the next stable DBD::SQLite. It has various query planner improvements, optimizations, performance enhancements, and bug fixes, especially on LEFT JOIN queries, IN and OR operators, and WITHOUT ROWID tables. It also supports "row values", that means now you can write a query like this:

UPDATE foo SET (id, text) = (SELECT id, text FROM bar WHERE id = 1);

Follow the links in http://www.sqlite.org/chronology.html, or each of the following links, to see full details.

Changes for SQLite 3.14 ~ 3.14.2

Changes for SQLite 3.15.0 ~ 3.15.2

Changes for SQLite 3.16.0 ~ 3.16.2

Changes for SQLite 3.17.0

Changes for SQLite 3.18.0 ~ 3.18.2

Changes for SQLite 3.19.0 ~ 3.19.3

Changes for SQLite 3.20.0 ~ 3.20.1

Changes for SQLite 3.21.0

Changes for SQLite 3.22.0

Please remember: newer versions of SQLite (since 3.14) are known to have broken a test in older versions of DBIx::Class because of some minor change that seems not listed in the release notes of SQLite. This kind of obscure changes might also affect your applications.

Peter "ribasushi" Rabbitson also found a bug in the recent versions of SQLite (between 3.20.0 and 3.22.0) that was only visible if the SQLite library was built with SQLITE_ENABLE_STAT[34] compile-time options, which unfortunately was the case of older versions of DBD::SQLite. This bug has already been fixed in the upstream repository, but the fix is not released yet. To work around this for now, DBD::SQLite 1.55_07 is released with these two compile-time options disabled. I'm not sure how this change may affect the performance of your applications, but if this really affects you and your applications significantly, and DBD::SQLite 1.55_06 (with SQLite 3.19.3 plus these options enabled) works better for you, please let me know. I might make it stable this time, and wait for the next release of SQLite.

See also other (rather minor) changes in DBD::SQLite:

https://metacpan.org/release/ISHIGAKI/DBD-SQLite-1.55_07

I'll wait for a month as always, and release 1.56 at the end of February if there's no blocker nor request to wait more. Thank you for patience.

