5.23.0.txt

doc/release_notes/5.23.0.txt
Last Update: 2019-08-01 09:22:21 -0700

New Features

  • An insert_conflict plugin has been added for automatically handling constraint conflicts when saving new model instances. It is supported on PostgreSQL 9.5+ and SQLite 3.24.0+.

    Album.new(name: 'Foo', copies_sold: 1000).
      insert_conflict(
        target: :name,
        update: {copies_sold: Sequel[:excluded][:b]}
      ).
      save
    
  • On Microsoft SQL Server, the Database :ansi option has been added, which sets the following ANSI related options:

    • ANSI_NULLS

    • ANSI_PADDING

    • ANSI_WARNINGS

    • ANSI_NULL_DFLT_ON

    • QUOTED_IDENTIFIER

    • CONCAT_NULL_YIELDS_NULL

Other Improvements

  • Sequel.datetime_class = Time is now supported when using the named_timezones extension. For backwards compatibility, the named_timezones extension still sets Sequel.datetime_class = DateTime. When using Ruby 2.6+, the Time instances have the timezone set on them using Ruby 2.6+‘s timezone support, but basic support works correctly in earlier versions of Ruby.

  • On Microsoft SQL Server, Sequel now handles parsing schema for tables in another database on the same server or in a database on a linked server.

  • The pg_json extension now correctly handles subclasses of core classes when wrapping objects. This stopped working in Sequel 5.21.0, when support for wrapping JSON primitives was added.

  • Sequel now works around a couple bugs in jdbc-sqlite 3.27.2.1, allowing schema parsing and foreign key parsing to work.

  • Dataset#execute* private methods now respect an explicitly given :server option, fixing Dataset#paged_each in the postgres adapter when using sharding.

  • Timezone offsets are now handled correctly when typecasting an array or hash to datetime when Sequel.datetime_class = Time.

  • Sequel now avoids errors when parsing schema when using the mock SQLite adapter.

  • A minor thread-safety issue has been fixed in the named_timezones extension.