1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
= New Features
* The subset_conditions plugin now supports where_all and where_any
methods for combining existing subsets. It also adds
*_conditions methods for exclude method calls, in addition to
subset and where method calls:
class Album < Sequel::Model
plugin :subset_conditions
dataset_module do
where :released, Sequel::CURRENT_DATE <= :release_date
exclude :inactive, :active
where_all(:inactive_released, :released, :inactive)
where_any(:inactive_or_released, :released, :inactive)
end
end
Album.inactive_released.sql
# SELECT * FROM albums WHERE ((CURRENT_DATE <= release_date) AND NOT active)
Album.inactive_or_released.sql
# SELECT * FROM albums WHERE ((CURRENT_DATE <= release_date) OR NOT active)
Album.where(Album.inactive_conditions).sql
# => SELECT * FROM albums WHERE NOT active
Album.exclude(Album.inactive_or_released_conditions).sql
# SELECT * FROM albums WHERE ((CURRENT_DATE > release_date) AND active)
In addition to making code simpler, the where_all method improves
performance compared to defining a dataset method that uses a
method chain to call both methods, and the where_any method improves
performances even more significantly as it allows caching where
the alternative approach would not allow for caching.
* The sqlite adapter now supports the :disable_dqs Database option,
to disable treating double quoted values as strings. As described
by the SQLite documentation, treating double quoted values as
strings instead of identifiers is a misfeature. This support
requires SQLite 3.29.0+ and sqlite3 gem version 1.4.3+.
= Other Improvements
* On PostgreSQL, datasets using an SQL::DelayedEvaluation instance
as the table now support returning the primary key for inserts
and imports.
* All jdbc adapters now use Ruby-style module naming instead of
Java-style package naming (e.g. Java::OrgPostgresqlUtil::PGobject
instead of org.postgresql.util.PGobject). This supports loading
the Java packages in separate classloaders.
* The schema_dumper extension now uses colons instead of hashrockets
when using Ruby 3.4+ (following the Hash#inspect change in Ruby
3.4.0-preview2).
= Backwards Compatibility
* The schema_dumper change can break backwards compatibility for
tests that expect the hashrocket format, but only on Ruby 3.4+.
|