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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
= New Features
* Dataset#with_* methods have been added as equivalents for a
few Dataset#*= methods, but instead of modifying the receiver, they
return a modified copy, similar to the dataset query methods.
Specific methods added:
with_extend :: Extends clone with given modules
with_row_proc :: Modifies row_proc in clone
with_quote_identifiers :: Modifies quote_identifiers setting in
clone
with_identifier_input_method :: Modifies identifier_input_method
setting in clone
with_identifier_output_method :: Modifies identifier_output_method
setting in clone
Similarly, on Microsoft SQL Server, a with_mssql_unicode_strings
method has been added, which returns a clone with the
mssql_unicode_strings setting modified.
* On DB2, Sequel now supports an :offset_strategy Database option,
which can be set to :limit_offset for "LIMIT X OFFSET Y" or
:offset_fetch for "OFFSET Y FETCH FIRST X ROWS ONLY". Depending
on what version of DB2 is used and how DB2 is configured, it's
possible one of these strategies will work. For backwards
compatibility, the current default is still to emulate offsets
using the ROW_NUMBER window function.
* In the json_serializer plugin, you can now use an
Sequel::SQL::AliasedExpression instance as an association name
value, which allows you to rename the association in the resulting
JSON:
album.to_json(:include=>{Sequel.as(:album, :s)=>{:only=>:name}})
# => '{"id":1,"name":"RF","artist_id":2,"s":{"name":"YJM"}}'
= Other Improvements
* The association dataset methods now correctly handle cases where
one of the keys is nil. Previously, they would incorrectly use an
IS NULL predicate in such cases. Now, they use a false predicate.
* The hook_class_methods plugin handling of commit hooks has been
fixed. The implementation of commit hooks (but not rollback
hooks) was broken in hook_class_methods starting in 4.39.0 due to
changes to avoid keeping references to all model instances until
the transaction was committed or rolled back.
* Using the Fixnum schema method no longer raises a warning on ruby
2.4+, as it now uses the Integer class instead of the Fixnum
constant.
* The ado adapter has been greatly improved. It now avoids memory
leaks, has much better type handling, and passes almost all specs.
Note that the ado adapter's behavior can change depending on the
version of ruby in use, try to use ruby 2.2+ for best compatibility.
* Dataset#graph no longer mutates the receiver. Previously, it set
an empty hash as the :graph option in the receiver, which was
unintentional and not desired.
* Pure java exceptions that don't support the message= method are now
handled properly when reraising the exception on connection errors
in the jdbc adapter.
= Backwards Compatibility
* Support for using the Bignum constant as a generic type has been
removed, as was preannounced in the 4.36.0 release notes. Users
should switch to using the :Bignum constant if they haven't already.
* Users of the ado adapter may need to update their code now that the
ado adapter correctly handles most types.
* The spec_*_w rake tasks in the repository now require ruby 2.4+ and
use the warning library for filtering warnings, instead of trying to
filter warnings with egrep.
|