New Features
-
On PostgreSQL 19+, Dataset#insert_conflict now supports :select and :select_where options for the new INSERT … ON CONFLICT … DO SELECT … RETURNING syntax.
DB[:table]. returning(:a). insert_conflict(target: :a, select: true). insert(a: 1, b: 2) # INSERT INTO TABLE (a, b) VALUES (1, 2) ON CONFLICT (a) # DO SELECT RETURNING a DB[:table].returning(:a).for_update. insert_conflict(target: :a, select: true, select_where: {Sequel[:excluded][:b] => 3}). insert(a: 1, b: 2) # INSERT INTO TABLE (a, b) VALUES (1, 2) ON CONFLICT (a) # DO SELECT FOR UPDATE WHERE (excluded.b = 3) RETURNING a
-
The pg_array_ops extension now supports the following additional methods for handling the related database functions:
-
ndims
-
position
-
positions
-
prepend
-
sample
-
shuffle
-
trim
-
-
In the pg_array extension, Postgres::PGArray instances now support cast* methods, making it easier to cast an array of one database type to a different database type.
-
In the migration extention,
Sequel::TimestampMigratornow supports an :allow_migration_number option, which can be used to check migration numbers for reasonableness. The value can be a range, proc, or other object supporting ===.
Other Improvements
-
Additional disconnect errors are now recognized in the mysql and mysql2 adapters, specifically handling cases where the MariaDB Connector/C library is used.
Sequel 6 Planning
-
Sequel6 planning has started. See github.com/jeremyevans/sequel/discussions/2381 for details. -
This is the last version of
Sequelto support Ruby 1.9. As part ofSequel6 preparation, Ruby 1.9 support will be dropped inSequel5.109.
Backwards Compatibility
-
A couple of typos in method names have been fixed:
-
Dataset#aggreate_dataset_use_from_self? has been renamed to aggregate_dataset_use_from_self?
-
Model#_save_update_changed_colums_hash has been renamed to _save_update_changed_columns_hash
The old methods with typos will call the new methods, and work with deprecation warnings until
Sequel6. If you have an external extension, adapter, or plugin defining the old method name with the typo, you should switch to using the fixed name. -
-
Sequel.require is now deprecated. It was originally added to improve performance back in the Ruby 1.8 era, but since the introduction of require_relative in Ruby 1.9, there has not been a reason to use it.