Sequel 5.16.0 has been released!
= New Features
* Database#rollback_on_exit has been added, which allows you to
rollback transactions instead of committing them when exiting
the transaction block. Previously, the only way to rollback
a transaction from inside a transaction block was to raise
an exception. This allows you to tell Sequel to roll the
transaction back on exit, and then use return or throw to exit
the transaction block.
Database#rollback_on_exit supports savepoints, including
multiple savepoint levels, as well as canceling rollbacks:
DB.transaction do # BEGIN
DB.rollback_on_exit
end # ROLLBACK
DB.transaction do # BEGIN
DB.transaction(savepoint: true) do # SAVEPOINT
DB.rollback_on_exit(savepoint: true)
end # ROLLBACK TO SAVEPOINT
end # COMMIT
DB.transaction do # BEGIN
DB.transaction(savepoint: true) do # SAVEPOINT
DB.transaction(savepoint: true) do # SAVEPOINT
DB.rollback_on_exit(savepoint: true)
end # ROLLBACK TO SAVEPOINT
end # RELEASE SAVEPOINT
end # COMMIT
DB.transaction do # BEGIN
DB.transaction(savepoint: true) do # SAVEPOINT
DB.rollback_on_exit(savepoint: true)
end # ROLLBACK TO SAVEPOINT
end # COMMIT
DB.transaction do # BEGIN
DB.transaction(savepoint: true) do # SAVEPOINT
DB.transaction(savepoint: true) do # SAVEPOINT
DB.rollback_on_exit(savepoint: 2)
end # ROLLBACK TO SAVEPOINT
end # ROLLBACK TO SAVEPOINT
end # COMMIT
DB.transaction do # BEGIN
DB.transaction(savepoint: true) do # SAVEPOINT
DB.transaction(savepoint: true) do # SAVEPOINT
DB.rollback_on_exit(savepoint: 3)
end # ROLLBACK TO SAVEPOINT
end # ROLLBACK TO SAVEPOINT
end # ROLLBACK
DB.transaction do # BEGIN
DB.rollback_on_exit
DB.rollback_on_exit(cancel: true)
end # COMMIT
* Sequel now supports window functions on SQLite 3.26.0+. SQLite
technically supports window functions on 3.25.0+, but enabling
window function support in Sequel opens up a code path that
generates queries that cause older versions of SQLite to produce a
segmentation fault. This bug in SQLite has been fixed in 3.26.0.
= Other Improvements
* Sequel::Model no longer overrides existing methods when defining
getters and setters. Historically, it only checked for existing
method definitions for methods that could be directly expressed
(e.g. not requiring send). Sequel 5 broke the check for setter
methods that could be directly expressed. This fixes cases where
model inheritance is used and the setter methods are overridden
in a parent class.
* Alter table emulation now works correctly on SQLite 3.26.0+.
* The one_to_one association setter does not modify reciprocal
associations in cases where doing so is not necessary. This can
fix some cases where the nested_attributes plugin is used.
* The class_table_inheritance plugin can now take advantage of the
schema_caching extension to prevent database queries to determine
column information when the class is created.
* The nested_attributes plugin no longer validates one_to_one
associations twice when saving.
* The class_table_inheritance plugin :qualify_tables option now
correctly qualifies subclasses of subclasses.
* SQL expressions that are subscripted are now wrapped in parentheses.
This fixes at least subscripting a function expression on
PostgreSQL:
DB[:t].select{array_agg(column).sql_subscript(1)}
# SELECT (array_agg(column))[1] FROM t
* Sequel::Migrator now uses more descriptive error messages if a
missing or empty migration directory is given.
* bin/sequel -C when converting from SQLite to another database
type will now use 64-bit integer columns in the other database when
the SQLite column type is integer, as SQLite supports storing
64-bit values in integer columns, and most other databases only
support 32-bit values in integer columns.
= Backwards Compatibility
* The mysql adapter no longer attempts to load the mysqlplus driver,
it now only attempts to load the mysql driver.
Thanks,
Jeremy
--
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.