== 2.2.1 / 2011-09-15
* Enhancements
* Added UpdateManager#key to access the key value
* Added SelectManager#projections= to override any existing projections
* Added SelectManager#source to get the source of the last select core in the AST
== 2.2.0 / 2011-08-09
* Bug Fixes
* The database connection caches visitors for generating SQL.
* FALSE and TRUE nodes can be constructed.
* Fixed ORDER BY / LIMIT clauses for UPDATE statements in Oracle.
== 2.1.4 / 2011-07-25
* Bug Fixes
* Fix depth-first traversal to understand ascending / descending nodes.
* Parentheis are suppressed with nested unions in MySQL. Thanks jhtwong!
== 2.1.3 / 2011-06-27
* Bug Fixues
* Fixed broken gem build.
== 2.1.2 / 2011-06-27
* Bug Fixes
* Visitors can define their own cache strategey so caches are not shared.
Fixes#57
* Informix support fixed. Thanks Khronos.
* Ordering nodes broken to subclasses. Thanks Ernie Miller!
* Reversal supported in ordering nodes. Thanks Ernie Miller!
== 2.1.1 / 2011/05/14
* Bug fixes
* Fixed thread safety bug in ToSql visitor. Thanks Damon McCormick and
Cameron Walters!
== 2.1.0 / 2011/04/30
* Enhancements
* AST is now Enumerable
* AND nodes are now n-ary nodes
* SQL Literals may be used as Attribute names
* Added Arel::Nodes::NamedFunction for representing generic SQL functions
* Add Arel::SelectManager#limit=
* Add Arel::SelectManager#offset
* Add Arel::SelectManager#offset=
* Added Arel::SelectManager#create_insert for building an insert manager.
* SQL Literals are allowed for values in INSERT statements.
* Math operations have been added to attributes, thanks to
Vladimir Meremyanin.
* Bug fixes
* MSSQL adds TOP to sub selects
* Assigning nil to take() removes LIMIT from statement.
* Assigning nil to offset() removes OFFSET from statement.
* TableAlias leg ordering fixed
* Deprecations
* Calls to `insert` are deprecated. Please use `compile_insert` then call
`to_sql` on the resulting object and execute that SQL.
* Calls to `update` are deprecated. Please use `compile_update` then call
`to_sql` on the resulting object and execute that SQL.
* Calls to `delete` are deprecated. Please use `compile_delete` then call
`to_sql` on the resulting object and execute that SQL.
* Arel::Table#joins is deprecated and will be removed in 3.0.0 with no
replacement.
* Arel::Table#columns is deprecated and will be removed in 3.0.0 with no
replacement.
* Arel::Table.table_cache is deprecated and will be removed in 3.0.0 with no
replacement.
* Arel::Nodes::And.new takes a single list instead of left and right.
* Arel::Table#primary_key is deprecated and will be removed in 3.0.0 with no
replacement.
* Arel::SelectManager#where_clauses is deprecated and will be removed in
3.0.0 with no replacement.
* Arel::SelectManager#wheres is deprecated and will be removed in
3.0.0 with no replacement.
== 2.0.8 / 2010/02/08
* Bug Fixes
* Added set operation support
* Fixed problems with *_any / *_all methods.
== 2.0.7 (unreleased)
* Bug Fixes
* Limit members are visited
* Fixing MSSQL TOP support
== 2.0.6 12/01/2010
* Bug Fixes
* Rails 3.0.x does not like that Node is Enumerable, so removing for now.
== 2.0.5 11/30/2010
* Enhancements
* Arel::Visitors::DepthFirst can walk your AST depth first
* Arel::Nodes::Node is enumerable, depth first
* Bug fixes
* #lock will lock SELECT statements "FOR UPDATE" on mysql
* Nodes::Node#not factory method added for creating Nodes::Not nodes
* Added an As node
* Deprecations
* Support for Subclasses of core classes will be removed in ARel version
2.2.0
== 2.0.4
* Bug fixes
* Speed improvements for Range queries. Thanks Rolf Timmermans!
== 2.0.3
* Bug fixes
* Fixing Oracle support
* Added a visitor for "Class" objects
== 2.0.2
* Bug fixes
* MySQL selects from DUAL on empty FROM
* Visitor translates nil to NULL
* Visitor translates Bignum properly
== 2.0.1
* Bug fixes
== 2.0.0 / 2010-08-01
* Enhancements
* Recreate library using the Visitor pattern.
http://en.wikipedia.org/wiki/Visitor_pattern
## Abstract ##
Arel is a Relational Algebra for Ruby.
1) simplifies the generation complex of SQL queries
2) adapts to various RDBMS systems
It is intended to be a framework framework; that is, you can build
your own ORM with it, focusing on innovative object and collection
modeling as opposed to database compatibility and query generation.
## Status ##
For the moment, Arel uses ActiveRecord's connection adapters to
connect to the various engines, connection pooling, perform quoting,
and do type conversion. On the horizon is the use of DataObjects
instead.
The long term goal, following both LINQ and DataMapper, is to have
Arel adapt to engines beyond RDBMS, including XML, IMAP, YAML, etc.