Show filter argument when invalid
Support DEFERRABLE constraints in postgres
Parse/dump the :deferrable attribute of postgres indexes
Document the (postgres specific) :deferrable option to add_index
Small updates after radford's commits

Use slightly nicer error message formatting for invalid filter
arguments.

Fix integration specs on PostgreSQL after deferrable commit.

Update CHANGELOG.
Make Dataset#count use a subselect when the dataset has an offset without a limit (Fixed #587)

Dataset#count already used a subselect if there was a limit on
the dataset, but it didn't previously consider the offset without
limit case.
Make Rakefile work with rake 10 but old rdoc

Rake 10 removes the deprecated rake/rdoctask library, which means
that there will potentially be no task to generate rdoc.  To handle
that, conditionally define the rdoc tasks only if there is a task
class that can handle them.
Make Dataset#avg, #interval, #min, #max, #range, and #sum accept virtual row blocks
Refactor how dataset methods are added to model datasets

Historically, the way dataset methods were added to datasets was
on a method-by-method basis.  The methods were stored in the
dataset_methods hash, keyed by method name, and each was
individually defined on the dataset's singleton class.

A while back, the dataset_module feature was added, so you
could just extend the dataset with a module, and it would
automatically have all of the module's methods, without having
to define the methods individually.

This commit removes the method-by-method implementation.  Now,
def_dataset_method calls dataset_module internally to define the
method inside the dataset module.

I've also decided to make things a little more consistent by
using a Module subclass, and allowing subset to be called inside
of a dataset_module block, for easier grouping of dataset methods
in one place.  Now Model.subset, just calls subset in the dataset
module.

Finally, adding public methods to a dataset module outside of the
block now adds the appropriate class methods, using a method_added
hook.

The only backwards incompatible change in this commit is the
removal of the Module#dataset_method attr_reader.
Add Database#do on PostgreSQL for using the DO anonymous code block execution statement

This was requested a while back, and was simple to implement.

Some other adapters implement Database#do as an execute/execute_dui
alias, but none that connect to PostgreSQL.  I plan on removing
those aliases in Sequel 4.
Make the force_encoding plugin work with frozen strings

Note that this only handles it in the typecast_value case. In the
set_values/merge_db_update case, it is assumed that those values
are not frozen.
Adding example of qualified Database query
Add better description of qualified identifiers/aliased expressions to README

I'm moving the description of qualified tables to the general
section on qualification. The problem with using the :schema__table
example earlier is that we haven't explained what it means, so it
looks like magic.

I noticed the join table example was also using the __ syntax
before the explanation, so I removed that as well.
Reset Model.instance_dataset when extending the model's dataset

Before, if you used Model.dataset_module to add methods to a
model's dataset, those methods weren't used in the model's
instance_dataset. In most cases, that won't matter, since the
instance dataset is only used for updates and refreshes, but
theoretically you should be able to call such methods on the
instance_dataset as well.

This introduces the reset_instance_dataset to derive the
instance dataset from the dataset.  I chose this path instead
of extending the instance dataset directly, as I believe it
will be more reuseable, and it makes it so that the Module's
extended method is not called twice.
Support setting default string column sizes on a per-Database basis via default_string_column_size

Some applications might want to use a smaller default, or in some
cases a smaller default may be required, such as when Sequel
is used on MySQL with a default character set of utf8mb4.
Extend deferrable constraint support to all types of constraints, not just foreign keys

radford's earlier commit did this just for PostgreSQL, but it's
something Sequel should support in general, even though few
databases beyond PostgreSQL support it (Oracle appears to).

This changes the behavior of radford's commit slightly by defaulting
to INITIALLY DEFERRED for any deferrable constraints, but adds the
ability to use INITIALLY IMMEDIATE via :deferrable=>:immediate.

While here, add a spec for deferrable foreign keys, which SQLite
does support.
If an exception occurs while committing a transaction, attempt to rollback

I believe most databases will automatically rollback if a commit
fails, but at least SQLite doesn't appear to.  To play it safe,
always attempt to rollback on a failed commit.

This fixes issues if deferred foreign key constraints are violated
on SQLite.
Bump version to 3.42.0
Add a default 'prefetch_rows' value for oracle adapter
Update documentation for Oracle prefetch_rows change