The defaults_setter plugin now supports a :cache option, which will cache default values in the model object's values hash:
Model.plugin :defaults_setter o = Model.new o.column # => 1 # default value o.values # => {} Model.plugin :defaults_setter, cache: true o = Model.new o.column # => 1 # default value o.values # => {:column => 1}
The pg_array extension now sets a :callable_default schema entry for recognized empty array defaults.
The pg_hstore extension now sets a :callable_default schema entry for recognized empty hstore defaults.
The pg_json extension now sets a :callable_default schema entry for recognized empty json/jsonb array/hash defaults.
The pg_inet extension now sets a :ruby_default schema entry for recognized inet/cidr defaults.
The pg_range extension now sets a :ruby_default schema entry for recognized range defaults.
The defaults_setter plugin will now give preference to a :callable_default schema entry over a :ruby_default schema entry. Combined with the other changes listed above, this makes default values recognized by the pg_array, pg_hstore, and pg_json extensions work well if the defaults_setter :cache option is also used.
The modification_detection plugin no longer breaks column change detection for new objects.
Database#copy_table in the postgres adapter now handles errors that occur when processing rows. Previously, an exception could be raised on the next query in that case.
The results of the changed_columns method are now cached in many places internally where they are called in a loop. This results in better performance, especially if the modification_detection or serialization_modification_detection plugins are used.
The pg_interval extension now sets a :ruby_default schema entry for recognized interval defaults to the same value Sequel would return if the default value was returned. Previously, Sequel would use a string in the :ruby_schema schema value.
String values in hashes returned by Database#schema are now frozen to prevent possible thread-safety issues and issues with unintentional modification of a shared string. The hashes themselves are not frozen and can still be modified.