4.20.0.txt

doc/release_notes/4.20.0.txt
Last Update: 2015-03-03 08:32:28 -0800

New Features

  • A :before_retry option has been added to Database#transaction, which specifies a proc to call when retrying if the :retry_on option is used. This can be used to implement additional logging, sleeping between retries, or other things.

  • The to_json method :root option in the json_serializer plugin can now be a string value to specify the name for the object key, instead of using the underscored model name.

  • Dataset#paged_each now returns an enumerator if not passed a block.

  • You can now set the :instance_specific association option to false. Previously, it was automatically set to true in some cases. If you know the association does not depend on anything instance-specific other than the foreign/primary key, setting this option can allow Sequel to perform some additional optimizations.

Other Improvements

  • Eager loading queries are now skipped if there are no matching keys. There was code to check this previously, but it was accidently removed in an earlier refactoring.

  • Eager loading an association with a limit and an eager block and cascaded associations now works correctly when the window_function limit strategy is used (the default on databases that support window functions).

  • Eager loading an association with a limit with an eager block now works correctly on databases do not support window functions but do support correlated subqueries.

  • The parent association is now set on associated objects when loading descendants in the rcte_tree plugin. This allows the parent method on any of the descendants to work without issuing a database query.

  • The prepared_statements_associations plugin now only uses prepared statements if association metadata is being cached. Previously, it would use prepared statements even if association metadata was not cached, which could leak the prepared statements.

  • Model#dup now duplicates the associations hash for the object.

  • Model#freeze no longer validates an object if the the errors for the object are already frozen. The static_cache plugin now freezes the errors before freezing the object, so that it doesn’t validate the object. This can skip many database queries when the auto_validations plugin is used and there is a unique constraint or index on the related table.

  • AUTOINCREMENT is now used again on SQLite by default for primary keys. It was removed when :auto_increment was added to the schema hashes, but the removal changed SQLite’s behavior. This restores the previous behavior.

  • Microsoft SQL Server’s bit type is now recognized as a boolean type by the schema dumper.

  • The pg_enum extension’s create_enum method can now be used in reversible migrations.

  • set_column_type with the :auto_increment=>true option once again works on MySQL. It had been broken since Sequel started adding :auto_increment to the schema hashes.

  • The mysql2 adapter now recognizes the :charset option as a synonym for :encoding.

  • The swift adapter now respects database and application timezone settings.

Backwards Compatibility

  • AssociationReflection#apply_ruby_eager_limit_strategy no longer checks that the strategy is :ruby, callers are now expected to check the value themselves. This should only matter if you are using custom association types.