Clear cached sqls when running instance_filters spec (Fixes #412)
Bump version to 3.31.0
Fix nondeterminism in a spec
Remove 2 spec guards for CTI on sqlite and do/sqlite, now that SQLite 3.7.9 fixed the underlying bug
Fix query extension to not break usage of #clone without arguments (Fixes #413)
Fix Dataset#naked! and remove Dataset#paginate!

The default mutation method handling only copies the opts, it does
not copy other aspects.  Add a naked! method manually that unsets
the row_proc for the current dataset.

Dataset#paginate extends the cloned dataset with a module, which
wouldn't get copied to the current dataset.  As paginate is in an
extension, it's questionable whether there should be a mutation
method created for it.  I'm removing the broken method now, if
anyone desires a mutation method for it, I can add one to the
pagination extension.
Support :map and :to_hash prepared statement types

Previously, there wasn't a way to use map and to_hash with prepared
statements.  You could use select/all and then turn it into an array
or hash afterwards, but that will skip any optimizations used for
map/to_hash (sequel_pg contains such optimizations).  Since
prepared statements are usually used for performance sensitive code,
it would be beneficial to allow optimization of those cases, which
is why they are being added.
Fix progress shared adapter, broken since the dataset literalization refactoring (Fixes #414)
Fix typo in schema_modification.rdoc (Fixes #415)
Don't double-log transaction related queries in the mock adapter
Fix typo in Model#modified? RDoc, thanks Clint
Bump copyright year
Fix alter table emulation on SQLite when foreign keys reference the table being altered

When foreign keys reference a table on SQLite, the alter table
emulation doesn't work as it must delete the table being referenced
to replace it with the altered table.  Work around the issue by
turning off foreign key support in SQLite when altering tables.
This needs to be done outside of the transaction normally used,
so even alter table commands that don't require emulation will
have it turned off and back on, but that shouldn't have a negative
effect.

Change the handling of foreign keys inside the table being altered
by always checking for them.  This is necessary as foreign key
support is now turned off by default during the altering.

Thanks to Yorick Peterse for bringing this issue to my attention.
Update RDoc for nested_attributes plugin
Update RDoc for composition plugin
Add use_after_commit_rollback setting to models, can be turned off to allow model usage with prepared transactions

Before the after commit/rollback support was added, you could use
models in prepared transactions.  However, after the support was
added, you could no longer do so as after commit/rollback is not
allowed inside prepared transactions, and Sequel would always
call the database hooks even if the model after commit/rollback
hooks were empty (a consequence of the method based approach).

This setting can be used as a workaround to allow model usage
inside prepared transactions.  It also can be turned off for
performance reasons, though I doubt the effect is significant.
Using new association options, support associations based on columns that clash with ruby method names (Fixes #417)

This extends the support added recently for many_to_one associations
that allowed the separation of the method symbol from the column
symbol (the :key_column option).  This adds 5 other association
options to handle other cases:

  many_to_one :primary_key_method
  one_to_many :key_method
  one_to_many :primary_key_column
  many_to_many :left_primary_key_column
  many_to_many :right_primary_key_method

It would have been nice to have more consistency, but considering
how rarely this feature is used, I chose the path of least
resistence.

This makes it so either the primary key or foreign key column names
can clash with ruby method names, and you can still define
associations that work correctly in those cases.
Work around permissions issue in Oracle when parsing defaults

Defaults aren't critical to Sequel's functioning, so if parsing
the default raises an error (usually permission related), just
ignore the error and don't provide defaults.
Make table_exists? better handle tables where you don't have permissions for all columns (Fixes #422)

This should reduce the potential for error if you don't have
permissions for all columns.  It should also be faster for
tables where each row is quite large.

If you don't have permissions for the table itself, you may
still get a false negative, so note that in the RDoc.

While here, only rescue DatabaseErrors, as StandardError is a
bit too broad.  It is possible this will break adapters that
don't wrap their DatabaseErrors, but at this point I'm going
to consider those as adapter bugs that should be fixed in the
adapter.
Work around table_exists? issue on derby with new SELECT NULL syntax

Derby must do some aggressive optimization, where if you don't actually
need the table, it doesn't even check if it exists.  So refactor the
default handling to make it easy to override, and override it for
derby.