= New Features

* Database#freeze has now been implemented.  It is now recommended
  to use it in production and during testing, after loading
  extensions and making other changes to Database state.  Once frozen,
  the Database settings cannot be modified, but the Database can
  execute queries and return results.  By freezing the Database, you
  gain greater thread-safety assurance and will be alerted via an
  exception if runtime code attempts to modify Database state.

= Other Improvements

* Model#refresh now uses the same optimization that Model.with_pk
  uses, resulting in faster refreshing for most models.

* The prepared_statements plugin no longer automatically uses
  prepared statements in cases where it is likely to be slower.
  Now, prepared statements are only used by default for INSERT
  and UPDATE statements (and DELETE on Oracle and DB2).  This
  change was made after benchmarking showed that using prepared
  statements for primary key lookups, refreshes, and deletes is
  significantly slower than non-prepared statements across almost
  all adapters.

* Database#extension no longer attempts to load the same extension
  more than once.

* The timestamp migrator now handles key length limitations when
  using MySQL with InnoDB engine and utf8mb4 charset default.

* The jdbc/sqlite adapter will now use SQLite result codes for
  more accurate exception types, if the jdbc-sqlite driver
  supports them.

* dataset_module is now inherited correctly if using the
  single_table_inheritance plugin.  This was broken in 4.42.0,
  and fixed in 4.42.1.

* The prepared_statements plugin now respects a server specified
  for the model instance, instead of always using the default
  server.

* The prepared_statements_associations plugin now respects a
  server specified for the model instance if using the sharding
  plugin, instead of always using the default server.

* The prepared_statements_associations plugin now works correctly
  when using some instance-specific associations, such as
  many_to_one associations using a nil :key option.

* The prepared_statements_with_pk plugin now respects a server
  specified for the dataset, instead of always using the default
  server.

* Model#freeze now freezes the associations hash after validating
  the model instance, instead of before, fixing cases where
  validation calls association methods.

* Sequel no longer continually tries to determine the server
  version on HSQLDB, if the first attempt fails.

* The mock adapter now uses a thread-safe incrementor for autoid.

* Mysql2 native prepared statement support now better handles
  sharding where connection options differ per shard.

* On Oracle, Database#sequence_for_table is now thread-safe.

* On PostgreSQL, Database#type_supported? is now thread-safe.

* On MySQL, Database#supports_timestamp_usecs? now correctly
  memoizes false values.

* The jdbc/postgresql adapter now works correctly if the
  pg_hstore extension is loaded first.

= Backwards Compatibility

* Maintainers of external adapters and Database extensions
  should update their code to support Database#freeze.

* Code that relies on Database extensions being loaded multiple
  times if called multiple times needs to be updated, because
  now the extension only gets loaded the first time
  Database#extension is called.

* @enum_labels in the pg_enum extension is now frozen by default.
