Repository navigation
2.10.2 / 2026-10-26
Security / Stability
- Raise
RangeErrorwhen a SQL string, a bound String or Blob value, or a String or Blob returned from a custom function or aggregate is longer thanINT_MAXbytes. Previously the length was truncated to 32 bits, so SQLite could read only part of the string and drop trailing clauses from a query. See GHSA-4fqr-96q8-xrfx for more information. #762 @flavorjones - Fix a crash when a custom aggregate's
finalizereturns a value that can't be converted to a SQLite result. The exception is now raised from the query and the connection remains usable. #762 @flavorjones - Fix a use-after-free when the hash returned by
Database#collationsis cleared, modified or frozen. GC could free a comparator that SQLite still called. When that hash is frozen,Database#collationstill raisesFrozenError, but the new comparator stays registered and in use. #764 @flavorjones - Fix a deadlock when a collation comparator,
traceblock,busy_handlerblock or authorizer raises, or when an interrupt such asThread#raisearrives while an aggregate's handler is being created. Another thread that used the connection blocked forever. The exception is now raised from the query and the connection remains usable. See "Changed" below for what SQLite does before the exception is raised. #764 @flavorjones - Fix a crash when a custom function or aggregate uses
throw. The throw now unwinds to itscatch. #764 @flavorjones
Changed
- When a callback raises or throws, SQLite now finishes its current call before the exception is raised, instead of being unwound in the middle of it. #764 @flavorjones
- When a
traceblock raises, SQLite runs the statement up to its first row, or to completion, before the exception is raised. Previously the statement stopped where the block raised. For example, anINSERTwhosetraceblock raises now inserts its row. - The other callbacks in that SQLite call skip their Ruby code: collation comparators return 0, functions and aggregates report an error to SQLite, the busy handler stops retrying and the authorizer denies.
Database#execute_batch2now raises the exception from a custom function, instead ofSQLite3::SQLException"Ruby Exception occurred".- An exception from a callback that SQLite runs during
Statement#reset!orDatabase#closeis discarded.
- When a
- The extension keeps per-fiber state in
Thread.current[:__sqlite3_callback_frames__]. A query raisesFrozenErroron aThreadthat was frozen before its first query. #764 @flavorjones - When SQLite can't allocate an aggregate's context, the query raises
SQLite3::MemoryExceptioninstead of aborting the process. #764 @flavorjones
Improved
Statement#stepno longer allocates and discards an array when the statement has no more rows. This saves one object per statement execution. #758 @thomasklemmObjectSpace.dumpand heap profilers now reportSQLite3::DatabaseandSQLite3::Statementobjects under their own type names, instead ofSQLite3::Backup. #764 @flavorjones
Documentation
- Document that parameters bound by
Statement#execute,#execute!,#bind_paramand#bind_paramsstay bound across executions, and thatStatement#clear_bindings!clears them. #751 @flavorjones
sha256 checksums
e9aea2c2b3476fc875dd8a89313a9a2862818519c0186bfb5b56d6f57bb08d98 gems/sqlite3-2.10.2-aarch64-linux-gnu.gem
4986fc40cdf21342362b72a941df28e95cfe0e644f3ad2532d948b157c39dbee gems/sqlite3-2.10.2-aarch64-linux-musl.gem
762f609ef891463226b472d3df66aea84d5466ff4376d3ccf4a059718c4ce9c9 gems/sqlite3-2.10.2-arm-linux-gnu.gem
833623eaf1157b1b85d1c0830e3e8f9beb3bb95a9bec3d252f20557a50e9803a gems/sqlite3-2.10.2-arm-linux-musl.gem
5b0d235ea037e6dcd1b8387a19d73be571917db9f93044d35741cf933a21a37d gems/sqlite3-2.10.2-arm64-darwin.gem
7fe1bf1adfca4fffeaec27371e0a20c1162d9d985681ec9560971a44fc41d198 gems/sqlite3-2.10.2-x64-mingw-ucrt.gem
46a02a29e9ae452824082388be5c24fd26f133b14bdd268610c6aa9a8d924c44 gems/sqlite3-2.10.2-x86-linux-gnu.gem
38980cf01eb2e4ac1c0755964d60b3d743ccf00686798a626bab852ff4cd3d1e gems/sqlite3-2.10.2-x86-linux-musl.gem
fd2c67b49d313031af112e172c83ab321681a2b4996bf882eefac50be7bea08f gems/sqlite3-2.10.2-x86_64-darwin.gem
ca92731ab464df9cae503fa1a439a549e2724f6953c8c05a7769b59366e38f15 gems/sqlite3-2.10.2-x86_64-linux-gnu.gem
b9f8fc62f3e0eb8966b41de251b492b4c8e9d1b23559beb6e150ad7f8d590941 gems/sqlite3-2.10.2-x86_64-linux-musl.gem
f1ea68cd3287f8a49f39a088ac9e4bd0ef4e7f394c3d4a60dd4c7e44b0566964 gems/sqlite3-2.10.2.gem