# ANN: Sequel 3.14.0 Released

**URL:** <https://www.ruby-forum.com/t/ann-sequel-3-14-0-released/192589>\
**Category:** Ruby\
**Created:** [August 2, 2010, 6:24pm UTC](https://www.ruby-forum.com/t/ann-sequel-3-14-0-released/192589 "2010-08-02T18:24:44Z")\
**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:** [August 2, 2010, 6:24pm UTC](https://www.ruby-forum.com/t/ann-sequel-3-14-0-released/192589/1 "2010-08-02T18:24:44Z")

</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, ODBC, OpenBase, Oracle,  
PostgreSQL and SQLite3.

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

= New Features

- Dataset#grep now accepts :all\_patterns, :all\_columns, and  
:case\_insensitive options. Previously, grep would use a case  
sensitive search where it would match if any pattern matched any  
column. These three options give you more control over how the  
pattern matching will work:

- When using the schema plugin, you can now provide a block to the  
create\_table methods to set the schema and create the table  
in the same call:

- The tree plugin now accepts a :single\_root option, which uses a  
before\_save hook to attempt to ensure that there is only a single  
root in the tree. It also adds a Model.root method to get the  
single root of the tree.

- The tree plugin now adds a Model#root? instance method to check  
if the current node is a root of the tree.

- Model#save now takes a :raise\_on\_failure option which will  
override the object’s raise\_on\_save\_failure setting. This makes  
it easier to get the desired behavior (raise or just return false)  
in library code without using a begin/ensure block.

- The Database#adapter\_scheme instance method was added, which  
operates the same as the class method.

- Sequel now handles the literalization of OCI8::CLOB objects in  
the Oracle adapter.

= Other Improvements

- When using the timezone support, Sequel will now correctly load  
times and datetimes in standard time when the current timezone is  
in daylight time, or vice versa. Previously, if you tried to  
to load a time or datetime in December when in July in a timezone  
that used daylight time, it would be off by an hour.

- The rcte\_tree plugin now works correctly when a :conditions option  
is used.

- The single\_table\_inheritance plugin now works correctly when the  
class discriminator column has the same name as an existing ruby  
method (such as type).

- Database#each\_server now works correctly when a connection string  
is used to connect, instead of an options hash.

- Model#destroy now respects the object’s use\_transactions setting,  
instead of always using a transaction.

- Model#exists? now uses a simpler and faster query.

- Sequel now handles the aggregate methods such as count and sum  
correctly on Microsoft SQL Server when using an ordered dataset  
with a clause such as DISTINCT or GROUP and without a limit.

- Sequel now handles rename\_table correctly on Microsoft SQL Server  
when using a case sensitive collation, or when qualifying the  
table with a schema.

- Sequel now parses the schema correctly on Oracle when the same  
table name is used in multiple schemas.

- Sequel now handles OCIInvalidHandle errors when disconnecting  
in the Oracle adapter.

- Sequel now raises a Sequel::Error instead of an ArgumentError  
if the current or target migration version does not exist.

- When a mismatched number of composite keys are used in  
associations, Sequel now uses a more detailed error message.

- Significant improvements were made to the Dataset and Model  
RDoc documentation.

= Backwards Compatibility

- Model#valid? now must accept an optional options hash.

- The Model#save\_failure private method was renamed to  
raise\_hook\_failure.

- The LOCAL\_DATETIME\_OFFSET\_SECS and LOCAL\_DATETIME\_OFFSET constants  
have been removed from the Sequel module.

- Sequel now uses obj.to\_json instead of JSON.generate(obj). This  
shouldn’t affect backwards compatibility, but did fix a bug in  
certain cases.

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)]
