<?xml version="1.0" encoding="UTF-8"?>
<commits type="array">
  <commit>
    <parents type="array">
      <parent>
        <id>b7f2414988226988ebb91143b28cd2ceefed6665</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/0a5e41eb7ab8318efa3de776c6996890b75d760b</url>
    <id>0a5e41eb7ab8318efa3de776c6996890b75d760b</id>
    <committed-date>2008-07-05T15:24:17-07:00</committed-date>
    <authored-date>2008-07-05T15:24:17-07:00</authored-date>
    <message>Bump version to 2.2.0</message>
    <tree>ca279a35c3c9bb5dc79f8470a155702cd3cd3df2</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>503c23f20c270fcb3c06a9cb895226cb0c1b9570</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/b7f2414988226988ebb91143b28cd2ceefed6665</url>
    <id>b7f2414988226988ebb91143b28cd2ceefed6665</id>
    <committed-date>2008-07-05T15:23:20-07:00</committed-date>
    <authored-date>2008-07-05T15:23:20-07:00</authored-date>
    <message>Fix some minor documentation issues</message>
    <tree>170eed31101f739f6f55347158300ca2454c9d09</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>2bd7e52a6f2169b95706906a08231f0fef23e252</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/503c23f20c270fcb3c06a9cb895226cb0c1b9570</url>
    <id>503c23f20c270fcb3c06a9cb895226cb0c1b9570</id>
    <committed-date>2008-07-05T09:18:41-07:00</committed-date>
    <authored-date>2008-07-05T09:18:41-07:00</authored-date>
    <message>Add Model.unfiltered class method that calls dataset method</message>
    <tree>0b93549cafe8b9c8e51ff7182d337ab81691d32d</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>a01f10b616483ed1ff0a29d246f5586c4dbf5d86</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/2bd7e52a6f2169b95706906a08231f0fef23e252</url>
    <id>2bd7e52a6f2169b95706906a08231f0fef23e252</id>
    <committed-date>2008-07-04T23:04:05-07:00</committed-date>
    <authored-date>2008-07-04T23:04:05-07:00</authored-date>
    <message>Major refactoring of association internals

Implement the association methods with standard instance methods that
accept the AssociationReflection in addition to any arguments.

Move many methods from the Associations module (where they ended up
being Model private class methods) to the AssociationReflection class.

Add more methods governing behavior to AssociationReflection, which
should make it much easier to add new association types to Sequel.

Add AssociationReflection::ASSOCIATION_TYPES containing the allowed
association types, people wishing to implement new association
types should add to this array.

Add a single Model class method for eager loading, instead of creating
one method per association.</message>
    <tree>1f936b228d48a691262e3262a8e3f4372a385032</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>fe47ea2ebe9793308209cf76d8e9184abcb20b6e</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/a01f10b616483ed1ff0a29d246f5586c4dbf5d86</url>
    <id>a01f10b616483ed1ff0a29d246f5586c4dbf5d86</id>
    <committed-date>2008-07-04T21:06:34-07:00</committed-date>
    <authored-date>2008-07-04T21:06:34-07:00</authored-date>
    <message>Add :extend association option, for extending a dataset with module(s)

Update the advanced_associations.rdoc file to show a cool usage of
this.</message>
    <tree>5561cee5b7873bd267406d81d570ae97cdcce13e</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>26319ae68eac4b492209643fe34b503af47f1a29</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/fe47ea2ebe9793308209cf76d8e9184abcb20b6e</url>
    <id>fe47ea2ebe9793308209cf76d8e9184abcb20b6e</id>
    <committed-date>2008-07-04T20:13:13-07:00</committed-date>
    <authored-date>2008-07-04T20:13:13-07:00</authored-date>
    <message>Fix :quote_identifiers and :single_threaded Database options</message>
    <tree>53d1e950124cfbb6b48c8d3256f467745a2bd515</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>b49098c5182c952e3dd917ae27b6b3ad867fc92f</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/26319ae68eac4b492209643fe34b503af47f1a29</url>
    <id>26319ae68eac4b492209643fe34b503af47f1a29</id>
    <committed-date>2008-07-04T19:23:00-07:00</committed-date>
    <authored-date>2008-07-04T19:23:00-07:00</authored-date>
    <message>Expand the advanced_associations.rdoc file

All examples have now been tested, and an integration test suite will
be committed soon starting with some of these examples.</message>
    <tree>9b58ab48870c1611740328fbf63ca35e7f6169de</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>990973a976102845834dc63f970d118f17e30c19</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/b49098c5182c952e3dd917ae27b6b3ad867fc92f</url>
    <id>b49098c5182c952e3dd917ae27b6b3ad867fc92f</id>
    <committed-date>2008-07-04T15:04:46-07:00</committed-date>
    <authored-date>2008-07-04T15:04:46-07:00</authored-date>
    <message>Add :after_load association callback

This lets you run code after the associated items have been loaded
from the database.

Also, this lets you specify a nil :key option for a many_to_one
association.  If specified the query will load all records for
the association, and just give you the first one.  This allows
many_to_one to work correctly with datasets that use eager_graph,
as well as with associations where there is no foreign key in the
current table, or when both are true (which is possible for a
has_one :through style association).</message>
    <tree>c61161f17db859cc50d45bf49e51a27d5b7f0962</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>270392062616b75ca364cafa435f7467b855d93f</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/990973a976102845834dc63f970d118f17e30c19</url>
    <id>990973a976102845834dc63f970d118f17e30c19</id>
    <committed-date>2008-07-04T13:41:06-07:00</committed-date>
    <authored-date>2008-07-04T13:41:06-07:00</authored-date>
    <message>Only select table.* by default for many_to_many associations

For other association types, it is not needed, and using it caused
problems if you wanted to use a :dataset option that included
an eager_graph call.  Now select is only called on the dataset
if it is specifically set or many_to_many is used.  If you want
many_to_many to select all columns, you can use :select=&gt;nil.

While here, add documentation for the callback options.</message>
    <tree>f69d696470948a2fc9ccb46adc4d0c660d2cabb1</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>553014d13ef014d8c8a01c5f2bf3a73e7ef7da08</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/270392062616b75ca364cafa435f7467b855d93f</url>
    <id>270392062616b75ca364cafa435f7467b855d93f</id>
    <committed-date>2008-07-04T13:33:45-07:00</committed-date>
    <authored-date>2008-07-04T13:33:45-07:00</authored-date>
    <message>Cloned datasets no longer ignore the existing columns unless it is necessary

This bug took me a while to track down.  It shows how much Sequel
really needs an integration test suite (I actually found it while
working on a prototype for the test suite).  Because Dataset#columns
needs access to the database to get results, it is mocked in almost
all specs.

This bug didn't cause any problems, since it would always get the
same columns back from the database, but it did cause a lot of
pointless queries.</message>
    <tree>2decd637ad78214a22e5c6ba664ada83c4c8c8a5</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>9b29c06dd4b81306be14eec16e15b7b321926043</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/553014d13ef014d8c8a01c5f2bf3a73e7ef7da08</url>
    <id>553014d13ef014d8c8a01c5f2bf3a73e7ef7da08</id>
    <committed-date>2008-07-03T16:27:10-07:00</committed-date>
    <authored-date>2008-07-03T16:27:10-07:00</authored-date>
    <message>Update sequel_core/CHANGELOG for samsouder's tinyint patch</message>
    <tree>370e79580a4d540824523e46fae198751394092d</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>246228b568179b645fa12779a92904231889879b</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/9b29c06dd4b81306be14eec16e15b7b321926043</url>
    <id>9b29c06dd4b81306be14eec16e15b7b321926043</id>
    <committed-date>2008-07-03T14:54:10-07:00</committed-date>
    <authored-date>2008-07-03T14:54:10-07:00</authored-date>
    <message>Filter blocks now yield a SQL::VirtualRow argument, which is useful if another library defines operator methods on Symbol

VirtualRow instances return Identifiers, QualifiedIdentifiers, or
Functions for any method called on them, depending on how the method
is called:

* Function - returned if any arguments are supplied, using the method
  name as the function name, and the arguments as the function
  arguments.
* QualifiedIdentifier - returned if the method name contains __, with
  the table being the part before __, and the column being the part
  after.
* Identifier - returned otherwise, using the method name.

Examples:

  ds = DB[:t]
  ds.filter{|r| r.name &lt; 2} # SELECT * FROM t WHERE (name &lt; 2)
  ds.filter{|r| r.table__column + 1 &lt; 2} # SELECT * FROM t WHERE ((table.column + 1) &lt; 2)
  ds.filter{|r| r.is_active(1, 'arg2')} # SELECT * FROM t WHERE is_active(1, 'arg2')</message>
    <tree>2b44bb15a05eb89d030af24df22b48f3285c13ef</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>d63a3db7327bf7e055fb8f14bc59b2fecc1bbf9a</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/246228b568179b645fa12779a92904231889879b</url>
    <id>246228b568179b645fa12779a92904231889879b</id>
    <committed-date>2008-07-03T14:02:53-07:00</committed-date>
    <authored-date>2008-07-03T14:02:53-07:00</authored-date>
    <message>Rename blockless_filters_spec.rb to expression_filters_spec.rb</message>
    <tree>55f9117928a02903169fa0c5fb1586bd564146ae</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>4f3f28aa542d3d6b29474e603a960b3fa6f8e93d</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/d63a3db7327bf7e055fb8f14bc59b2fecc1bbf9a</url>
    <id>d63a3db7327bf7e055fb8f14bc59b2fecc1bbf9a</id>
    <committed-date>2008-07-03T14:02:13-07:00</committed-date>
    <authored-date>2008-07-03T14:02:13-07:00</authored-date>
    <message>Remove use_parse_tree = false reference in expression filter spec</message>
    <tree>92b4a894b63203dde9621363ba4a3b74b4490e00</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>7b6f8ecbc3adc7c506c5df0d74b0e86d432302ca</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/4f3f28aa542d3d6b29474e603a960b3fa6f8e93d</url>
    <id>4f3f28aa542d3d6b29474e603a960b3fa6f8e93d</id>
    <committed-date>2008-07-03T14:00:01-07:00</committed-date>
    <authored-date>2008-07-03T14:00:01-07:00</authored-date>
    <message>Add Symbol#identifier method, to make x__a be treated as &quot;x__a&quot; instead of &quot;x&quot;.&quot;a&quot;

You can also create identifiers without using Symbols, by using the
Sequel::SQL::Identifier.new(&quot;column&quot;).  This is much more verbose
but is useful if you want an identifier without using a symbol.

This is mainly being added to support the next commit.</message>
    <tree>bf4f668c1d1eaf03eb221866e44f5cbbb88c0594</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>16befad6bc0bac1d25670f0a00eb5e21563349ba</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/7b6f8ecbc3adc7c506c5df0d74b0e86d432302ca</url>
    <id>7b6f8ecbc3adc7c506c5df0d74b0e86d432302ca</id>
    <committed-date>2008-07-03T13:58:31-07:00</committed-date>
    <authored-date>2008-07-03T13:58:31-07:00</authored-date>
    <message>Clean up the expression filter spec</message>
    <tree>dd5a762a2b0d87d9c7595b42daf89b9403637d16</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>2c9c189d52b2938b09fc650b00f5cf3125ae9a92</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/16befad6bc0bac1d25670f0a00eb5e21563349ba</url>
    <id>16befad6bc0bac1d25670f0a00eb5e21563349ba</id>
    <committed-date>2008-07-03T12:33:34-07:00</committed-date>
    <authored-date>2008-07-03T12:33:34-07:00</authored-date>
    <message>Remove ParseTree support, the expression syntax is now the only available syntax inside blocks

Sequel.use_parse_tree always returns false, and
Sequel.use_parse_tree= raises an Error if the argument given is true.

Other than the the obvious change to the syntax inside blocks, the
only significant change is that update no longer takes a block. As
update only makes sense for equality, a block would not add any value
over using a hash argument.  Before, it was necessary to take a block
to do things like x = x + 1, but that has been easily done with
{:x=&gt;:x + 1} since Sequel 2.0.0.

No longer include the deprecation feature, but still leave it in the
repository for future use.</message>
    <tree>e6fcff0365dca0a48ab5d73f5f7221d4d6116783</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>fbde1ce789dcd4ee6356b9479301b9135311852c</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/2c9c189d52b2938b09fc650b00f5cf3125ae9a92</url>
    <id>2c9c189d52b2938b09fc650b00f5cf3125ae9a92</id>
    <committed-date>2008-07-03T11:23:51-07:00</committed-date>
    <authored-date>2008-07-03T11:23:51-07:00</authored-date>
    <message>Fix spelling and cover corner case in :descendants eager loading example in advanced_associations.rdoc</message>
    <tree>b214db885a9ae41fad14d2d5afcba3dde48dd078</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>045f202089d75bca23ab3932e5904d468a17984a</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/fbde1ce789dcd4ee6356b9479301b9135311852c</url>
    <id>fbde1ce789dcd4ee6356b9479301b9135311852c</id>
    <committed-date>2008-07-03T11:21:29-07:00</committed-date>
    <authored-date>2008-07-03T11:21:29-07:00</authored-date>
    <message>Unbreak Sequel when used with ruby-postgres or postgres-pr

Note that depending on the settings of your postgresql server, the
escaping of strings and byteas may be incorrect unless you use
ruby-pg, especially if you are using settings like backslash_quote
= off or standard_conforming_strings = on.

Also, support bytea type when using postgres-pr.</message>
    <tree>0ace76e26d3f56b8c181fc44a1fbd3c89eb1a890</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>883dccd199db1beecef7ce56e9b651021a2c7cb8</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/045f202089d75bca23ab3932e5904d468a17984a</url>
    <id>045f202089d75bca23ab3932e5904d468a17984a</id>
    <committed-date>2008-07-02T19:53:19-07:00</committed-date>
    <authored-date>2008-07-02T19:53:19-07:00</authored-date>
    <message>Update sequel_core/CHANGELOG for abhay's SQLite drop_column support</message>
    <tree>05f77f7f96fd206e1202a6e8b01aa36b4be54877</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>769320f0f7444f05d4c4b5d11ef4186b2317cccc</id>
      </parent>
    </parents>
    <author>
      <name>Abhay Kumar</name>
      <email>abhay+git@opensynapse.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/883dccd199db1beecef7ce56e9b651021a2c7cb8</url>
    <id>883dccd199db1beecef7ce56e9b651021a2c7cb8</id>
    <committed-date>2008-07-02T19:51:14-07:00</committed-date>
    <authored-date>2008-07-02T17:39:37-07:00</authored-date>
    <message>add support for a 'fake' drop column in sqlite3</message>
    <tree>5fd11f4a43fb323a022d5551fdfd2afc0ad7c4c8</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>e94e064858eb5e8787ec2f50e4bf81eb7d70be9d</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/769320f0f7444f05d4c4b5d11ef4186b2317cccc</url>
    <id>769320f0f7444f05d4c4b5d11ef4186b2317cccc</id>
    <committed-date>2008-07-02T18:53:26-07:00</committed-date>
    <authored-date>2008-07-02T18:53:26-07:00</authored-date>
    <message>Make validation methods support a :tag option, to work correctly with source reloading

If a validation has a :tag option, it overwrites a previous
validation block with the same tag and attribute (if any), similar to
how tags work with hooks.

All validates_*_of methods set the tag to * by default (e.g.
validates_uniqueness_of uses a :tag of :uniqueness by default). This
breaks backwards compatibility slightly, if you have two of the same
type of validations on the same attribute.  If that is the case, add
a different tag to one or both.

While here, refactor the :if option handling to be less verbose.
Also, document all of the supported options to the validates_*_of
methods, as well as some other documentation improvements.</message>
    <tree>188b92c5a7d2f6a9f3fcc51d7dfa514f93fb2b70</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>c41645693373d7bd89f4d25a4de704722240189d</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/e94e064858eb5e8787ec2f50e4bf81eb7d70be9d</url>
    <id>e94e064858eb5e8787ec2f50e4bf81eb7d70be9d</id>
    <committed-date>2008-07-02T16:07:23-07:00</committed-date>
    <authored-date>2008-07-02T16:07:23-07:00</authored-date>
    <message>Add doc/advanced_associations.rdoc file, showing off how powerful and flexible Sequel::Model associations are</message>
    <tree>0b1238db6e21ebd5d657184a34ce09b74faa91b0</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>9b29058050ad4a813acd9f7b61bfa6c81bf8ca1b</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/c41645693373d7bd89f4d25a4de704722240189d</url>
    <id>c41645693373d7bd89f4d25a4de704722240189d</id>
    <committed-date>2008-07-02T15:22:37-07:00</committed-date>
    <authored-date>2008-07-02T15:22:37-07:00</authored-date>
    <message>Add :before_add, :after_add, :before_remove, :after_remove association callback options

These mirror the association callback capabilities of ActiveRecord.
Each of these options can be a Symbol specifying an instance method
that takes one argument (the associated object), or a Proc that takes
two arguments (the current object and the associated object).

If any of the before callbacks return false, the adding/removing
does not happen and it either raises an error (the default), or
returns nil (if raise_on_save_failure is false).

All callbacks are also run on many_to_one associations.  If there
was already an existing object for the association, it calls the
remove callbacks on the existing object and the add callbacks on the
new object.  The remove callback calls are placed around the add
callback calls.

This also separates the many_to_one setter (association=) method into
two parts, the public association= method, and the private
_association= method that actually sets the foreign key.  This is
necessary to support polymorphic associations, where another column
would also need to be changed, and probably in other cases as well.

This also changes the many_to_one setter logic somewhat, as it
doesn't just look in the associations cache for an existing object,
it just calls the association method, which means using the setter
can cause database access.  This was necessary to make sure the
remove callback methods worked correctly for many_to_one
associations.

The many_to_one setter now exits early if the object passed to it
is the same as the existing object.</message>
    <tree>20db4d6c9d76fd422e6cd9f054d52ac2cb3c5f0d</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>ab6528356c01fab8f7dffbdcf5e752460b0ce7a0</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/9b29058050ad4a813acd9f7b61bfa6c81bf8ca1b</url>
    <id>9b29058050ad4a813acd9f7b61bfa6c81bf8ca1b</id>
    <committed-date>2008-07-02T12:22:04-07:00</committed-date>
    <authored-date>2008-07-02T12:22:04-07:00</authored-date>
    <message>Cleanup samsouder's convert_tinyint_to_bool patch

Always use teardown for cleanup actions, so failures in tests don't
cause spurious errors in later tests.

Slightly cleaner handling in schema_column_type.</message>
    <tree>a80c384daa64b286b1f8b0b13170d688c1b541d7</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>44992bf54305b6db82ee00dfddfaa1fbd057bcfc</id>
      </parent>
      <parent>
        <id>873e8f0f756b0cd90275ade848569ec6509f7c52</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/ab6528356c01fab8f7dffbdcf5e752460b0ce7a0</url>
    <id>ab6528356c01fab8f7dffbdcf5e752460b0ce7a0</id>
    <committed-date>2008-07-02T12:03:41-07:00</committed-date>
    <authored-date>2008-07-02T12:03:41-07:00</authored-date>
    <message>Merge branch 'mysamsouder' into samsoudermerge</message>
    <tree>0da5500528613c4d2ed55357eff29b36cdaefebd</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>f2dbc1463084ad50c6cab44c3ccef9d7e1489069</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/44992bf54305b6db82ee00dfddfaa1fbd057bcfc</url>
    <id>44992bf54305b6db82ee00dfddfaa1fbd057bcfc</id>
    <committed-date>2008-07-02T12:02:43-07:00</committed-date>
    <authored-date>2008-07-02T12:02:43-07:00</authored-date>
    <message>Fix typo in Model.associate RDoc</message>
    <tree>9ed5c6acebe9885ec97e93c3f554af7fe7ec2bb3</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>1de4a7b755809fca40c1077bfc66df34a18acf53</id>
      </parent>
    </parents>
    <author>
      <name>Sam Souder</name>
      <email>samsouder@gmail.com</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/873e8f0f756b0cd90275ade848569ec6509f7c52</url>
    <id>873e8f0f756b0cd90275ade848569ec6509f7c52</id>
    <committed-date>2008-07-02T09:46:59-07:00</committed-date>
    <authored-date>2008-07-02T09:46:59-07:00</authored-date>
    <message>- added accessor (Sequel.convert_tinyint_to_bool, defaulting to true) to allow modification of converting tinyints to booleans
- modified Schema::SQL#schema_column_type to obey the Sequel.convert_tinyint_to_bool switch
- modified Mysql::Result#convert_type to use Sequel.convert_tinyint_to_bool when fetching results
- added MYSQL_USER to spec configuration to allow for variation in local MySQL setup when doing tests
- modified mysql spec tests to use the MYSQL_USER for connections
- added onto mysql spec tests to test the Sequel.convert_tinyint_to_bool accessor</message>
    <tree>f8fdc1bf976a1fcaa755cbe9079c9d4acf23c5b8</tree>
    <committer>
      <name>Sam Souder</name>
      <email>samsouder@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>60b17106e47242b1465c45c9c53310acdbf4dc75</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/f2dbc1463084ad50c6cab44c3ccef9d7e1489069</url>
    <id>f2dbc1463084ad50c6cab44c3ccef9d7e1489069</id>
    <committed-date>2008-07-01T18:05:31-07:00</committed-date>
    <authored-date>2008-07-01T18:05:31-07:00</authored-date>
    <message>Fix postgres spec failure when standard_conforming_strings = on</message>
    <tree>172d891836e478fb88b645f8af619b356ecacfff</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>eb2143a633223eb08da11820658a9fa38cef0a5a</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/60b17106e47242b1465c45c9c53310acdbf4dc75</url>
    <id>60b17106e47242b1465c45c9c53310acdbf4dc75</id>
    <committed-date>2008-07-01T16:54:17-07:00</committed-date>
    <authored-date>2008-07-01T16:54:17-07:00</authored-date>
    <message>Model.validates_presence_of now considers false as present instead of absent

This makes it usable for NOT NULL boolean fields.</message>
    <tree>10405c645b1c4e496de54add655730744d0e45d4</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
</commits>
