5.5.0.txt

Path: doc/release_notes/5.5.0.txt
Last Update: Sat Jun 02 02:04:22 +0000 2018

New Features

  • 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.

Other Improvements

  • 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.

Backwards Compatibility

  • 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.

[Validate]