Skip to content

2.10.0

Latest

Choose a tag to compare

@flavorjones flavorjones released this 13 Oct 22:57
07186c3

2.10.0 / 2026-10-13

Dependencies

  • Vendored sqlite is updated to v3.54.0 (from v3.53.2). #750 @flavorjones

    Notable changes in this version include:

    • ALTER TABLE now raises an error when adding, renaming, or dropping a column named ROWID, _ROWID_, or OID.
    • The authorizer callback is now invoked for SQL functions in the DEFAULT clauses of CREATE TABLE statements.
    • SQLite no longer supports Windows XP or earlier. On Windows, the precompiled gem and any installation that compiles the vendored sqlite now require Windows Vista or later.

Added

  • ResultSet#each and #each_hash return an Enumerator when called without a block. Previously they raised LocalJumpError. #656 @kch
  • Introduce Database#serialize, which returns a database as a binary string, and Database#deserialize, which replaces a database with the contents of such a string. These wrap sqlite3_serialize() and sqlite3_deserialize(). Both methods are defined only when SQLite was compiled without SQLITE_OMIT_DESERIALIZE, and Database#deserialize also requires that the loaded SQLite is v3.54.0 or later. An image of a database in WAL mode cannot be queried after deserializing; see the Database#deserialize documentation. #685 @Maaarcocr

Fixed

  • Fix Database#statement_timeout= interrupting statements almost immediately instead of after the timeout elapsed, including re-executed prepared statements and calls to Database#execute_batch2. #737 @palkan @flavorjones

Improved

  • On CRuby, Statement#types allocates fewer strings. Each declared type is downcased and interned in C, instead of allocating two strings per column. #743 @jhawthorn

Changed

  • ResultSet#each and #each_hash return the result set when called with a block. As a consequence, Database#execute and #execute2 called with a block return the closed ResultSet instead of nil. #656 @kch
  • Statement#columns and Statement#types return frozen arrays, and the strings in Statement#types are frozen. Code that mutates them now raises FrozenError. #743 @jhawthorn
  • Statement#column_decltype and Statement#types return UTF-8 strings. Previously they returned ASCII-8BIT strings. #743 @jhawthorn

sha256 checksums

dafeea94182af2eb53a10797be359fa6ec4270532bd45255d1c2beb69f2eb743  gems/sqlite3-2.10.0-aarch64-linux-gnu.gem
ec4ffedded0bd8579629e14d0647cfee9092c0af0009c05d6404d90857b1cb8b  gems/sqlite3-2.10.0-aarch64-linux-musl.gem
bcf2e165f27fd28f46ba34eeba3503d557ea7f76f9dd40434ce719f2ba0d5cda  gems/sqlite3-2.10.0-arm-linux-gnu.gem
338510e64876c7d02d91733eeaee384806c58b3835d8a688d1bfdbf7e468c497  gems/sqlite3-2.10.0-arm-linux-musl.gem
f619f33adfd01a1827e8764a3da92b289c1a99d93707d021a242dccba6909c4e  gems/sqlite3-2.10.0-arm64-darwin.gem
ec284ace2bca873737d0e8818f8eb31e5b84936b694f95933514872929b945d0  gems/sqlite3-2.10.0-x64-mingw-ucrt.gem
a3ac204853c8c6b3f2f6f94ebaa52cba26cfd48df82537b1b154a28fc687f057  gems/sqlite3-2.10.0-x86-linux-gnu.gem
96508597fc5e54bfc1a12f94eb2d9f8e0517a8a377bdbfd6cc824215c4530adb  gems/sqlite3-2.10.0-x86-linux-musl.gem
67306588548e62095855a511285daf33389d7f4311c1c33a1addd23e2b90cec5  gems/sqlite3-2.10.0-x86_64-darwin.gem
295f48b240ba663efa2e3b6f38cbc0f19f5c8a2823a71fda3bf15531be5dd0e8  gems/sqlite3-2.10.0-x86_64-linux-gnu.gem
876dd86a15c7828075ff7612e3d0ab0eb2eba0d8485b13fd4000e8a335f86bc5  gems/sqlite3-2.10.0-x86_64-linux-musl.gem
3fc6c4ac2249b1c54099e7b80e57afdd678e648c1f54de8ad3b4c775195c661a  gems/sqlite3-2.10.0.gem