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 78 79 80
|
= New Features
* An index_caching extension has been added, which makes
Database#indexes use a cache similar to Database#schema, and also
offers methods for saving and loading the cache from a file, similar
to the schema_caching extension.
This can speed up model loaded in certain cases when the
auto_validations plugin is used.
* A datetime_parse_to_time extension has been added, which parses
strings without timezone offsets using DateTime.parse intead of
Time.parse. This can fix problems when the string being parsed
represents a time not valid in the local timezone due to daylight
savings time shifts. Time.parse silently shifts such times by 1
hour instead of raising an exception, resulting in incorrect
behavior in that case.
It only makes sense to use this extension when the times in the
database are stored in UTC but not returned with timezone
information, the timezone for the Database instance
(or Sequel.database_timezone) is set to :utc (not the default),
and Time is used as the datetime_class (the default).
* A pg_timestamptz extension has been added for switching the default
generic timestamp type from timestamp to timestamptz.
* Sequel.date_{add,sub} in the date_arithmetic extension now supports
a :cast option for setting the cast type. This value defaults to
Time for backwards compatibility, which uses the default generic
timestamp type for the database.
* The class_table_inheritance plugin now supports an
:ignore_subclass_columns option which takes an array of column
symbols to ignore in subclasses. This allows you to use
the plugin when your table inheritance hierarchy includes
non-primary key columns with the same name in different tables.
= Improvements
* Dataset#insert_select now returns false instead of nil if it runs
an INSERT statement but does not return a value on Microsoft SQL
Server or PostgreSQL. This can happen on both databases if triggers
are used.
Model#save now checks for a false value returned by
Dataset#insert_select, and does not issue another INSERT statement
in that case.
* Database#indexes now correctly handles SQL::Identifier arguments on
SQLite, Microsoft SQL Server, SQLAnywhere, and DB2.
* Dataset#to_json in the json_serializer plugin and Dataset#to_xml
in the xml_serializer plugin now both handle datasets that use
eager_graph.
* Dataset#nullify now caches the dataset it returns, for better
performance if it is called more than once on the same dataset.
* Database#synchronize is now optimized on ruby 2.5+ and is about
10% faster by relying on the new lazy proc allocation feature.
= Backwards Compatibility
* Fractional second timestamps are now enabled on DB2. If you are
connecting to a DB2 database that does not support fractional
seconds, you should add the following code (where DB is your
Sequel::Database instance):
DB.extend_datasets do
def supports_timestamp_usecs?
false
end
end
* Calling a filtering method with no argument and a virtual row
block that returns nil on a dataset with no existing filter now
adds a WHERE NULL filter, to match the behavior if given a nil
argument. Previously, a deprecation warning was issued and a
dataset with no filter was returned.
|