= 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.
