ANN: Sequel 3.42.0 Released

Sequel is a lightweight database access toolkit for Ruby.

* Sequel provides thread safety, connection pooling and a concise
  DSL for constructing SQL queries and table schemas.
* Sequel includes a comprehensive ORM layer for mapping records to
  Ruby objects and handling associated records.
* Sequel supports advanced database features such as prepared
  statements, bound variables, stored procedures, savepoints,
  two-phase commit, transaction isolation, master/slave
  configurations, and database sharding.
* Sequel currently has adapters for ADO, Amalgalite, CUBRID,
  DataObjects, DB2, DBI, Firebird, IBM_DB, Informix, JDBC, MySQL,
  Mysql2, ODBC, OpenBase, Oracle, PostgreSQL, SQLite3, Swift, and
  TinyTDS.

Sequel 3.42.0 has been released and should be available on the gem
mirrors.

= New Features

* Dataset#avg, #interval, #min, #max, #range, and #sum now
  accept virtual row blocks, allowing you to more easily get
  aggregate values of expressions based on the table:

    DB[:table].sum{some_function(column1, column2)} # => 134
    # SELECT sum(some_function(column1, column2)) FROM table

* Database#do has been added on PostgreSQL for using the DO
  anonymous code block execution statement.

* Model.dataset_module now uses a Module subclass, which allows
  you to call subset inside a dataset_module block, making
  it easier to consolidate dataset method code:

    class Album < Sequel::Model
      dataset_module do
        subset(:gold){copies_sold > 500000}
      end
    end

* Database#copy_table and #copy_into are now supported on
  jdbc/postgres.

* Sequel now supports deferred constraints on constraint types other
  than foreign keys. The only databases that appear to implement
  this are Oracle and PostgreSQL.

* Sequel now supports INITIALLY IMMEDIATE deferred constraints via
  the :deferrable=>:immediate constraint/column option.

* Sequel now supports setting the default size of string columns,
  via the default_string_column_size option or accessor. In some
  cases, Sequel's default string column size of 255 is too large
  (e.g. MySQL with utf8mb4 character set), and this allows you to
  change it.

= Other Improvements

* Dataset#count and other methods now use a subselect in the case
  where the dataset has an offset but no limit.

* If an error occurs while attempting to commit a transaction, Sequel
  now attempts to rollback the transaction. Some databases do this
  automatically, but not all. Among other things, this fixes issues
  with deferred foreign key constraint violations on SQLite.

* When extending a model's dataset, the model's instance_dataset is
  reset, insuring that it will also be extended with the module.

* When passing an invalid argument to Dataset#filter, the exception
  message now includes the argument.

* The force_encoding plugin now works with frozen string values.

* Public methods added to a model dataset_module now have model
  class methods created for them even if the method was added outside
  of a dataset_module block.

* On PostgreSQL, Database#indexes now includes a :deferrable entry
  for each index hash, which will be true for unique indexes where
  the underlying constraint is deferrable.

* On Microsoft SQL Server 2000, Dataset#update no longer includes a
  limit (TOP), allowing it to work correctly.

= Backwards Compatibility

* Model.dataset_methods has been removed. This was used to store
  blocks for methods created via def_dataset_method and subset.
  The internals have been changed so that a dataset_module is
  always used in these cases, therefore there was no longer a reason
  for this method.

Thanks,
Jeremy

* {Website}[http://sequel.rubyforge.org]
* {Source code}[http://github.com/jeremyevans/sequel]
* {Blog}[http://sequel.heroku.com]
* {Bug tracking}[http://github.com/jeremyevans/sequel/issues]
* {Google group}[http://groups.google.com/group/sequel-talk]
* {RDoc}[http://sequel.rubyforge.org/rdoc]

···

--
Posted via http://www.ruby-forum.com/.