# ANN: Sequel 3.15.0 Released

**URL:** <https://www.ruby-forum.com/t/ann-sequel-3-15-0-released/194253>\
**Category:** Ruby\
**Created:** [September 1, 2010, 5:52pm UTC](https://www.ruby-forum.com/t/ann-sequel-3-15-0-released/194253 "2010-09-01T17:52:22Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![nerdmaster](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/c68b51/32.png) [@nerdmaster](https://www.ruby-forum.com/u/nerdmaster)\
**Post date:** [September 1, 2010, 5:52pm UTC](https://www.ruby-forum.com/t/ann-sequel-3-15-0-released/194253/1 "2010-09-01T17:52:22Z")

</div>

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, DataObjects,  
DB2, DBI, Firebird, Informix, JDBC, MySQL, Mysql2, ODBC, OpenBase,  
Oracle, PostgreSQL and SQLite3.

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

= Performance Enhancements

- A mysql2 adapter was added to Sequel. It offers a large (2-6x)  
performance increase over the standard mysql adapter. In order to  
use it, you need to install mysql2, and change your connection  
strings to use mysql2:// instead of mysql://.

- Support for sequel\_pg was added to the native postgres adapter,  
when pg is being used as the backend. sequel\_pg also offers a  
large (2-6x) performance increase over the default row fetching  
code that the Sequel postgres adapter uses. In order to use it,  
you just need to install sequel\_pg, and the postgres adapter will  
pick it up automatically.

- Mass assignment has been made about 10x faster by caching the  
allowed setter methods in the model.

= Other Improvements

- The following construct is now safe to use in environments that  
reload code without unloading existing constants:

- Sequel now handles the case where both an implicit and an explicit  
table alias are given to join\_table, preferring the explicit alias.  
This can happen if you are using models with aliased table names  
and eager graphing them. Previously, this would result in invalid  
SQL, with both aliases being used.

- You can use use an aliased table for the :join\_table option  
of a many\_to\_many association.

- The active\_model plugin now supports the final release of  
ActiveModel 3.0.0.

- Typecasting now works correctly for attributes loaded lazily  
when using the lazy\_attributes plugin.

- The class\_table\_inheritance plugin now works with non-integer  
primary keys on SQLite.

- Temporary tables are now ignored when parsing the schema on  
PostgreSQL.

- On MySQL, an :auto\_increment key with a true value is added to  
the Database#schema output hash if the related column is  
auto incrementing.

- The mysql adapter now handles Mysql::Error exceptions raised when  
disconnecting.

- On SQLite, emulated alter\_table commands that require dropping  
the table now preserve the foreign key information, if SQLite  
foreign key support is enabled (it is by default).

- DSN-less connections now work correctly in more cases in the  
ODBC adapter.

- A workaround has been added for a bug in the Microsoft SQL  
Server JDBC Driver 3.0, involving it incorrectly returning a  
smallint instead of a char type for the IS\_AUTOINCREMENT  
metadata value.

- An bug in the error handling when connecting to PostgreSQL using  
the do (DataObjects) adapter has been fixed.

= Backwards Compatibility

- The caching of allowed mass assignment methods can result in the  
incorrect exception class being raised if you manually undefine  
instance setter methods in the model class. If you do this, you  
need to clear the setter methods cache manually:

Thanks,  
Jeremy

- {Website}[[http://sequel.rubyforge.org](http://sequel.rubyforge.org)]
- {Source code}[[GitHub - jeremyevans/sequel: Sequel: The Database Toolkit for Ruby](http://github.com/jeremyevans/sequel)]
- {Blog}[[http://sequel.heroku.com](http://sequel.heroku.com)]
- {Bug tracking}[[Google Code Archive - Long-term storage for Google Code Project Hosting.](http://code.google.com/p/ruby-sequel/issues/list)]
- {Google group}[[http://groups.google.com/group/sequel-talk](http://groups.google.com/group/sequel-talk)]
- {RDoc}[[http://sequel.rubyforge.org/rdoc](http://sequel.rubyforge.org/rdoc)]
