= New Features * Dataset#avg, #interval, #min, #max, #range, and #sum now accept virtual row blocks, allowing you to more easily get aggregate values of expressions based on the table: DB[:table].sum{some_function(column1, column2)} # => 134 # SELECT sum(some_function(column1, column2)) FROM table * Database#do has been added on PostgreSQL for using the DO anonymous code block execution statement. * Model.dataset_module now uses a Module subclass, which allows you to call subset inside a dataset_module block, making it easier to consolidate dataset method code: class Album < Sequel::Model dataset_module do subset(:gold){copies_sold > 500000} end end * Database#copy_table and #copy_into are now supported on jdbc/postgres. * Sequel now supports deferred constraints on constraint types other than foreign keys. The only databases that appear to implement this are Oracle and PostgreSQL. * Sequel now supports INITIALLY IMMEDIATE deferred constraints via the :deferrable=>:immediate constraint/column option. * Sequel now supports setting the default size of string columns, via the default_string_column_size option or accessor. In some cases, Sequel's default string column size of 255 is too large (e.g. MySQL with utf8mb4 character set), and this allows you to change it. = Other Improvements * Dataset#count and other methods now use a subselect in the case where the dataset has an offset but no limit. * If an error occurs while attempting to commit a transaction, Sequel now attempts to rollback the transaction. Some databases do this automatically, but not all. Among other things, this fixes issues with deferred foreign key constraint violations on SQLite. * When extending a model's dataset, the model's instance_dataset is reset, insuring that it will also be extended with the module. * When passing an invalid argument to Dataset#filter, the exception message now includes the argument. * The force_encoding plugin now works with frozen string values. * Public methods added to a model dataset_module now have model class methods created for them even if the method was added outside of a dataset_module block. * On PostgreSQL, Database#indexes now includes a :deferrable entry for each index hash, which will be true for unique indexes where the underlying constraint is deferrable. * On Microsoft SQL Server 2000, Dataset#update no longer includes a limit (TOP), allowing it to work correctly. = Backwards Compatibility * Model.dataset_methods has been removed. This was used to store blocks for methods created via def_dataset_method and subset. The internals have been changed so that a dataset_module is always used in these cases, therefore there was no longer a reason for this method.