You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is a major release which contains some breaking changes, primarily the removal of
long-deprecated functionality. Before upgrading, please make sure to address deprecation warnings
emitted from your application using sqlite3-ruby v1.7.x.
Removed class SQLite3::Translator and all related type translation methods which have been deprecated since v1.3.2. [Remove type translation #470] @tenderlove
If you need to do type translation on values returned from the statement object, please wrap it
with a delegate object. Here is an example of using a delegate class to implement type
translation:
require"sqlite3"require"delegate"db=SQLite3::Database.new(":memory:")return_value=db.execute_batch2<<-EOSQL CREATE TABLE items (id integer PRIMARY KEY AUTOINCREMENT, name string); INSERT INTO items (name) VALUES ("foo"); INSERT INTO items (name) VALUES ("bar");EOSQLclassMyTranslator < DelegateClass(SQLite3::Statement)defsteprow=superreturnifdone?row.map.with_indexdo |item,i|
casetypes[i]when"integer"# turn all integers to floatsitem.to_fwhen"string"# add "hello" to all stringsitem + "hello"endendendenddb.prepare("SELECT * FROM items")do |stmt|
stmt=MyTranslator.new(stmt)whilerow=stmt.stepprowendend
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
2.0.0 / 2024-04-17
This is a major release which contains some breaking changes, primarily the removal of
long-deprecated functionality. Before upgrading, please make sure to address deprecation warnings
emitted from your application using sqlite3-ruby v1.7.x.
Ruby
VersionProxy
, clean up version branching, and drop Ruby 2.7 support #453] @flavorjonesPackaging
Native (precompiled) gems are now available for Linux Musl. [#442] @flavorjones
Here are the platforms for which native gems are shipped:
aarch64-linux-gnu
(requires: glibc >= 2.29)aarch64-linux-musl
arm-linux-gnu
(requires: glibc >= 2.29)arm-linux-musl
arm64-darwin
x64-mingw32
/x64-mingw-ucrt
x86-linux-gnu
(requires: glibc >= 2.17)x86-linux-musl
x86_64-darwin
x86_64-linux-gnu
(requires: glibc >= 2.17)x86_64-linux-musl
⚠ Ruby 3.0 linux users must use Rubygems >= 3.3.22 in order to use these gems.
⚠ Musl linux users should update to Bundler >= 2.5.6 to avoid rubygems/rubygems#7432
See the INSTALLATION doc for more information.
Dependencies
Added
Database#busy_handler_timeout=
introduced as an alternative to#busy_timeout=
that can be used when it's desired to release the GVL between retries. [Add a busy_handler_timeout setter #443, busy_handler_timeout pt2 #456] @fractaledmindSUPER_JOURNAL
flag which is an alias forMASTER_JOURNAL
as of sqlite 3.33.0. [introduce standard formatting and linting #467] @flavorjonesStatement#stat
andStatement#memused
introduced to report statistics. [Implement sqlite3_stmt_status interface #461] @fractaledmindStatement#sql
andStatement#expanded_sql
introduced to retrieve the SQL statement associated with theStatement
object. [Possible to make SQLite3::Statement#to_s more useful? #293, Addsql
andexpanded_sql
methods to the statement object #498] @tenderloveSQLite3.status
introduced to return run-time status and reset high-water marks. SeeSQLite3::Constants::Status
for details. [Add SQLite3.status to call sqlite3_status #520] @wjlroeImproved
ResultSet
hashes. [superfluous work in #ordered_map_for #154, Don't flatten row array before passing to Hash#[] #484, Use a factory method to eliminate "results as hash" check #468] @tenderlovebusy_handler
. [Fix a GC compaction issue withbusy_handler
#466] @byrootResultSet
instance variable. [Remove unused iv #469] @tenderloveChanged
SQLite3::Exception
or subclasses. Previously somePragmas
methods raisedException
, andDatabase#execute_batch2
andDatabase#load_extension
raisedRuntimeError
. [introduce standard formatting and linting #467, useSQLite3::Exception
consistently #490] @flavorjonesDatabase#columns
returns a list of internal frozen strings. [return symbolized keys when using results_as_hash = true #155, Column names should be frozen #474, Intern column names so we always get the same string #486] @tenderloveDatabase#transaction
returns the result of the block when used with a block. [Database#transaction returns block result #508] @alexcwattDatabase#execute_batch
returns the result of the last statement executed. [execute_batch returns result of last statement #512] @alexcwattRemoved
Removed class
SQLite3::Translator
and all related type translation methods which have been deprecated since v1.3.2. [Remove type translation #470] @tenderloveIf you need to do type translation on values returned from the statement object, please wrap it
with a delegate object. Here is an example of using a delegate class to implement type
translation:
Removed
types
andfields
readers on row objects, which have been deprecated sincev1.3.6. [Remove row array wrappers #471] @tenderlove
Deprecated code looks like this:
If you would like to access the "types" associated with a returned query,
use a prepared statement like this:
Removed support for non-Array bind parameters to methods
Database#execute
,#execute_batch
, and#query
, which has been deprecated since v1.3.0. [remove deprecated method signatures (bind params) #511] @flavorjonesDeprecated code looks like this:
For these cases, pass the bind parameters as an array:
Removed class
SQLite3::VersionProxy
which has been deprecated since v1.3.2. [removeVersionProxy
, clean up version branching, and drop Ruby 2.7 support #453] @flavorjonesRemoved methods
SQLite3::Database::FunctionProxy#count
and#set_error
which have been broken since at least v1.3.13. [create_function: impossible to call set_error #164, Remove FunctionProxy#count #509, fix: removeFunctionProxy#set_error
#510] @alexcwatt @flavorjonessha256 checksums:
This discussion was created from the release 2.0.0 / 2024-04-17.
Beta Was this translation helpful? Give feedback.
All reactions