0.37 2010-09-25 - Removing a candidate key left an undef value in the internal candidate key array. I'm not sure if this could actually show up in normal use. Note that this fix also avoids an error that will show up in future versions of Moose when a native delegation method is called incorrectly. 0.36 2010-08-27 - Avoid warnings from the latest versions of Moose (1.10). 0.35 2010-06-15 - You can now include a WHERE clause as part of an inner join, like FROM Part JOIN MachinePart ON Part.part_id = MachinePart.part_id AND MachinePart.machine_id = ? Implemented by Dieter Pearcey. - Aliasable objects now have an alias method which sets the alias and returns the object itself, for chaining: my $function = Fey::Literal::Function->new( ... )->alias('bar'); Note that this may be deprecated in a future release where we start allowing aliases to be set in the constructor. Implemented by Dieter Pearcey. - We now use MooseX::Types internally. Patch by Oliver Charles. - License is now Artistic 2.0, instead of "same as Perl itself". Artistic 2.0 allows you to redistribute under the GPL (any version) if you like. 0.34 2009-10-25 - Add a can_have_alias() attribute to Fey::Term::Literal. Sometimes you want make sure a term is used exactly as-is, without any alias being added. - Fey::Literal is no longer the parent class for all literal classes. Instead, it is simply a factory. All the literals now do the Fey::Role::IsLiteral role. 0.33 2009-10-07 - Put a $VERSION in every .pm file matching Fey.pm - The $table->aliased_columns() method can now be called with just a prefix, in which case it returns aliases for all the columns in the table. Requested by Aristotle Pagaltzis. RT #40857. - Fixed some tests in t/SQL/Set.t that changed results when modules were loaded in a different order. 0.32 2009-09-10 - Shut up some warnings from the next Moose (0.90). - Improved docs on WHERE clauses, especially on what can be compared (columns, literals, etc.). See Fey::SQL for details. Requested by Martin. RT #48677. - Tightened up checking of WHERE clause components. Previously an unblessed reference would've ended up getting stringified, now it will be rejected. 0.31 2009-08-18 - Added a new (empty) role, Fey::Role::SQL::ReturnsData. Use this as a constraint any place you might be checking if an object ->isa('Fey::SQL::Select'). This role is applied to any SQL query that returns data, such as SELECTs, UNIONs, etc. - Added Fey::SQL::Select->distinct_on($column). 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.