1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
= New Features
* A duplicate_columns_handler extension has been added, for printing a
warning or raising an exception if a dataset returns multiple
columns with the same name. You can set this globally for the
Database:
DB.extension :duplicate_columns_handler
DB.opts[:on_duplicate_columns] = :warn
DB.opts[:on_duplicate_columns] = proc do |columns|
columns.include?(:foo) ? :raise : :ignore
end
or for specific datasets:
ds = DB[:table].extension(:duplicate_columns_handler)
ds = ds.on_duplicate_columns(:raise)
ds = ds.on_duplicate_columns do |columns|
columns.include?(:foo) ? :raise : :ignore
end
This makes it easier to detect when duplicate columns are returned,
which in some cases can cause undesired behavior, such as the values
for later columns of the same name overwriting values for earlier
columns.
* The Dataset#to_hash, #to_hash_groups, #select_hash, and
#select_hash_groups methods now take an options hash as a third
argument. This options hash can now contain a :hash option, which
specifies the object in which the resulting values should be
placed. You can use this to have the values inserted into a
custom hash, or another object responding to #[] and #[]=.
* A validators_operator validation has been added to the
validation_helpers plugin:
class Example < Sequel::Model
def validate
super
validates_operator(:>, 3, :column1)
validates_operator(:<=, 4, [:column2, :column3])
end
end
* The pg_range extension now adds a #register_range_type Database
method, supporting per-Database custom range types:
DB.register_range_type('timerange')
* The dataset_associations plugin now supports a
:dataset_associations_join association option on associations that
use joined datasets. This option will have the datasets returned
by the dataset association methods join to the same tables that
would be joined when retriving the associated objects, allowing
selected columns, orders, and filters that reference columns in
the joined tables to work correctly.
* The Database :preconnect option can now be set to :concurrently,
which will create the connections in separate threads. This can
significantly speed up preconnection in high-latency environments.
* The Database :name option is now supported, holding an arbitrary
name for the database. Currently, it is only used in PoolTimeout
exception messages, but it may be used in other places in the
future.
= Other Improvements
* The prepared_statements_safe plugin now works correctly when using
CURRENT_DATE and CURRENT_TIMESTAMP default values for columns.
* Sequel now recognizes an addition unique constraint violation on
Microsoft SQL Server.
* PoolTimeout exception messages now include the server/shard to which
the connection was attempted when using the sharded threaded
connection pool.
= Backwards Compatibility
* Users of sequel_pg should upgrade to 1.6.17, as older versions of
sequel_pg may not work with Sequel 4.34.0+.
* Any custom extensions that override Dataset#to_hash,
#to_hash_groups, #select_hash, and #select_hash_groups need to
be modified to add support for accepting the options hash.
|