The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
0.41    2015-06-14

- Shut up warning from tests with newer Perls.

- Fix test failures when using MooseX::Params::Validate 0.21 or
  newer. Reported by Andreas Koenig. RT #102342.


0.40    2011-02-16

- Bind params in a subselect used in the SELECT clause of a query were not
  returned by the bind_params() method.


0.39    2011-01-07

- The value used for setting a column in an UPDATE or INSERT can now be any
  object which does the Fey::Role::SQL::ReturnsData role, which includes
  Fey::SQL::Select objects.


0.38    2010-12-14

- Various methods which returned lists of objects, such as Schema->tables()
  and Table->columns() without arguments, did not return the objects in any
  specific order. Now the objects are returned in the same order as they were
  added originally. This also applies to lists of columns in both candidate
  and foreign keys. RT #63811. Reported by John Dasch.


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.