0.30 2009-08-12 - Allow the first argument to ->limit to be undef, so you can do ->limit( undef, 20 ), which produces SQL like "OFFSET 20". 0.29 2009-08-12 - Allow subselects on the right hand side of a where clause comparison using =, !=, or <>. 0.28 2009-05-14 - Fixed the tests to pass with newer Moose. No code changes. 0.27 2009-04-18 - All SQL objects now implement a clone() method. 0.26 2009-04-04 - Some uses of Fey::SQL::Fragment::SubSelect were still lingering in the code, so a fresh install failed. Reported by Chad Granum. 0.25 2009-04-01 - Major internals changes to how aliasable things are created and used. Added two new roles, Fey::Role::MakesAliasObjects, and Fey::Role::HasAliasName. All literals can now be aliased (including Terms). A subselect is now just a Fey::SQL::Select object internally, which makes the internals much cleaner. This also means that a Fey::SQL::Select has an ->alias_name. Implemented by Dieter Pearcey. - Added support for "NULLS FIRST/LAST" in ORDER BY clauses. Implemented by Erik Rijkers. RT #44656. 0.24 2009-03-26 - Support for UNION, INTERSECT, and EXCEPT queries. Implemented by Dieter Pearcey. 0.23 2009-03-23 - Fey::SQL::Insert did not make sure that the order of the bind_params() it returned actually matched the order of the columns in the "INSERT ... INTO" clause. It accidentally worked sometimes but was fundamentally broken. This only mattered if you were using the auto_placeholders feature, so it did not affect Fey::ORM. Reported and diagnosed by Dieter Pearcey. 0.22 2009-02-24 - A table that was passed to $sql->from($table) and also included in a join could show up in the FROM clause twice. Based on a patch from Dieter Pearcey. - Fey::Literal::Term now accepts a list of items which it joins together. These items can be strings or Fey objects like columns or tables. This makes generating arbitrary of SQL snippets easier. Based on a patch from Dieter Pearcey. 0.21 2009-02-24 - If you created two Fey::Table::Alias objects with the same name (from the same table) and joined each object in a query, one of the aliases could go out of scope (because of weak refs and other weirdness), causing a random "cannot call method ... on an undefined value" error. Test by Dieter Pearcey. 0.20 2009-02-04 - No significant external changes, just lots of internal changes to use Moose properly. Some of this code started life pre-Moose and still showed signs of it. 0.1901 2009-01-24 - No code changes, just re-releasing because the last tarball was full of Mercurial repo junk. 0.19 2009-01-23 * BACKWARDS INCOMPATIBILITY - Fey::SQL::Select->select() no longer makes each element unique. Instead, it simply accepts what it's given and reproduces it in the original order. Sadly, this is necessary because sometimes you are stuck relying on the order of the columns being returned (because SQL is broken). 0.18 2008-12-09 - Fey::SQL::Insert->into claimed it took a table as an argument, but was only accepting a list of columns. Fixed by Dieter Pearcey. 0.17 2008-11-21 - Fey::SQL::Select->group_by() was not returning $self, so it could be in the middle of a chain. Reported by Aristotle Pagaltzis. RT #41062. - Made (almost) all the methods that generate portions of a query public, for example, $select->select_clause(), ->where_clause(), etc. See the various Fey::SQL::* docs for details. Requested by Dieter Pearcey. 0.16 2008-11-14 - Fey::SQL::Select did not allow outer joins using table aliases. Reported by Aristotle Pagaltzis. RT #40856. - Fey::SQL::Select->select will now accept another Fey::SQL::Select, allowing subselects in the SELECT clause. Requested by Aristotle Pagaltzis. RT #40858. - Fey::Table->alias() and Fey::Column->alias() now allow a single argument, an alias name. This is a shortcut for the most common use case. Requested by Aristotle Pagaltzis. - Added Fey::Table->aliased_column() and Fey::Table->aliased_columns() methods. Requested by Aristotle Pagaltzis. RT #40857. 0.15 2008-10-28 - Added Fey::SQL::Select->select_clause_elements(), most for the benefit of Fey::ORM. 0.14 2008-09-19 - Fey did not handle this join correctly: $q->from( $s->table('User') ); $q->from( $s->table('User'), $s->table('UserGroup') ); It added a spurious comma so you got FROM "User", JOIN ... Reported by Aristotle Pagaltzis. - The Fey::FK docs for the constructor did not name the parameters it expects correctly. Reported by Aristotle Pagaltzis. 0.13 2008-09-19 - Including a table in a from clause failed. Now the Fey::Schema object will accept a table alias as a parameter for the foreign_keys_between_tables() method. When given an alias, it returns a Fey::FK object which contains columns from that alias. This faciliates creating SQL that joins on an alias. Reported by Aristotle Pagaltzis. 0.12 2008-09-01 - Changes to work with the latest versions of Moose. 0.11 2008-08-26 - 0.10 was missing a dependency - MooseX::AttributeHelpers. 0.10 2008-08-25 - Optimizations to cache frequently used (and rarely changing) method return values as attributes. - As a result of the above, several methods that used to return arrays now return array references. These are Fey::FK->column_pairs(), Fey::Table->candidate_keys(), and Fey::Table->primary_key(), and Fey::Literal::Function->args(). - Overloaded objects are now handled (mostly) correctly when used as parameters in SQL statements. I say mostly because overloading in Perl is so broken that it's not possible to deal with them 100% correctly. 0.09 2008-07-31 - If a where clause had a subgroup after a comparison (like "WHERE x = 1 AND ( y = 2 )", it didn't properly add the needed "AND". 0.08 2008-07-02 - The fix for "SELECT statements with multiple joins generated bogus SQL (a spurious comma separating JOIN clauses)" still generated bogus SQL in some cases. 0.07 2008-06-26 - SELECT statements with multiple joins generated bogus SQL (a spurious comma separating JOIN clauses). 0.06 2008-03-06 - Allow a Fey::Column object to have a column with precision but no length, since Postgres allows this. 0.05 2008-02-20 - Some small tweaks to take advantage of recent Moose changes. - Added Fey::FK->pretty_print(). - Some internal changes for the benefit of Fey::ORM. 0.04 2008-02-13 - Some SQL methods (order_by() and limit()) did not return the object on which they were called, so they broke method chaining. 0.03 2008-02-06 - Renamed the distro from Fey-Core to just Fey. - Added automatic use of placeholders to Fey::SQL. Now when you pass literal values, the default is to convert them to placeholders. The values can be retrieved from the new bind_params(). method. Suggested by Daisuke Maki. 0.02 2008-02-05 - Moved Fey::Test to its own distro, and made it a build prereq. 0.01 2008-02-02 - First release upon an unsuspecting world.