= New Features

* A modification_detection plugin has been added, for automatic
  detection of in-place column value modifications.  This makes
  it so you don't have to call Model#modified! manually when
  changing a value in place.

* A column_select plugin has been added, for automatically
  selecting explicitly qualified columns in model datasets.
  Example:

    Sequel::Model.plugin :column_select
    class Album < Sequel::Model
    end
    Album.dataset.sql
    # SELECT albums.id, albums.name, albums.artist_id
    # FROM albums

* An insert_returning_select plugin has been added, for automatically
  setting up RETURNING clauses for models that select explicit
  columns.  This is useful when using the column_select or
  lazy_attributes plugins.

* A pg_enum extension has been added, for easier dealing with
  PostgreSQL enum types.  The possible values for the type
  are then returned in the schema hashes under the :enum_values
  key.  It also adds create_enum, drop_enum, and add_enum_value
  Database methods for migration support.

* A round_timestamps extension has been added, for automatically
  rounding timestamps to database supported precision when
  literalizing.

* A dataset_source_alias extension has been added, for automatically
  aliasing datasets to their first source, instead of using t1, t2.
  Example:

    DB.from(:a, DB[:b]).sql
    # SELECT * FROM a, (SELECT * FROM b) AS t1

    DB.extension(:dataset_source_alias)
    DB.from(:a, DB[:b]).sql
    # SELECT * FROM a, (SELECT * FROM b) AS b

* On Microsoft SQL Server, Sequel now emulates RETURNING support
  using the OUTPUT clause, as long as only simple column references
  are used.

= Other Improvements

* A regression has been fixed in the timestamps and table
  inheritance plugins, where column values would not be
  saved when skipping validations.  This was first broken in
  4.11.0.

* A regression has been fixed on JRuby and Rubinius when using
  Sequel::Model(dataset) if the dataset needs to literalize a
  symbol (and most do).  This was first broken in 4.10.0.

* Primary keys are now automatically setup for models even if
  the models select specific columns.

* The lazy_attributes plugin now uses qualified columns in its
  selection, instead of unqualified columns.

* When looking up model instances by primary key, Sequel now uses a
  qualified primary key if the model uses a joined dataset.

* For associations that require joins, Sequel will now use the
  associated model's selection directly (instead of
  associated_table.*) if the associated model's selection consists
  solely of qualified columns.

  Among other things, this means that a many_to_many association to 
  a model that uses lazy attributes will not eagerly load the lazy
  attributes by default.

* Model#save now uses insert_select if there is an existing
  RETURNING clause used by the underlying dataset, even if the model
  selects specific columns.

* In Dataset#insert, aliased tables are now automatically unaliased.
  This allows you to use a dataset with an aliased table and have
  full SELECT/INSERT/UPDATE/DELETE support, assuming the database
  supports aliased tables in UPDATE and DELETE.

* Dataset#graph now qualifies columns correctly if the current
  dataset is a joined dataset and it moves the current dataset to
  a subselect.

* Dataset#joined_dataset? is now a public method, and can be used to
  determine whether the dataset uses a join, either explicitly via
  JOIN or implicitly via multiple FROM tables.

* The Dataset#unqualified_column_for helper method has been added,
  returning the unqualified version of a possibly qualified column.

* The composition and serialization plugins now support validations
  on the underlying columns.  Previously, they didn't update the
  underlying columns until after validations were performed.  This
  works better when using the auto_validations plugin.

* The class_table_inheritance plugin now uses JOIN ON instead of
  JOIN USING, which makes it work on all databases that Sequel
  supports.  Additionally, the plugin now explicitly selects
  qualified columns from all of the tables.

* The list plugin now adds an after_destroy hook that will renumber
  rows after the current row, similar to how moving existing values
  in the list works.

* The pg_json extension is now faster when json column value is a
  plain string, number, true, false, or nil, if the underlying json
  library handles such values natively.

* External jdbc, odbc, and do subadapters can now be loaded
  automatically without requiring them first, assuming proper
  support in the external subadapter.

* When using create_table on MySQL, correctly handle the :key
  option to when calling foreign_key with a column reference.

* On Oracle, use all_tab_cols instead of user_tab_cols for getting
  default values when parsing the schema.  This makes it work if the
  user does not own the table.

* On Oracle, use all_tables and all_views for Database#tables and
  Database#views.  This works better for users with limited rights.

* Additional disconnect errors are now recognized in the postgres and
  jdbc/mysql adapters.

* Sequel::Model now uses copy constructors (e.g. initialize_copy)
  instead of overriding #dup and #clone.

* The rake default task now runs plugin specs in addition to
  core and model specs.

= bin/sequel Improvements

* Add the sequel lib directory to the front of the load path
  instead of the end, fixing cases where you end up requiring an
  old version of the sequel gem (e.g. by using sequel_pg).

* Add the sequel lib directory as an absolute path, fixing cases
  where you later change the current directory.

* Require sequel later in the code, so that bin/sequel -h doesn't
  need to require sequel, and full backtrace is not printed if
  requiring sequel raises an error (unless -t is used).

* If an exception is raised, put a newline between the exception
  message and backtrace.

* Don't allow usage of -C with any of -cdDmS.

* If sequel -v is given along with a database or code string to
  execute, print the Sequel version but also continue, similar
  to how ruby -v works.

= Backwards Compatibility

* The switch from JOIN ON to JOIN USING in the
  class_table_inheritance can break certain usage, such as querying
  using unqualified primary key.  Users should switch to using a
  qualified primary key instead.

* Calling Dataset#returning when the underlying database does not
  support it now raises an Error.
