<?xml version="1.0" encoding="UTF-8"?>
<commits type="array">
  <commit>
    <parents type="array">
      <parent>
        <id>ee7abd8acc621807e5128269db269b5a32218fbc</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/10f69a2bd22e39ba03f4687af196cd476e88d162</url>
    <id>10f69a2bd22e39ba03f4687af196cd476e88d162</id>
    <committed-date>2009-05-04T09:44:29-07:00</committed-date>
    <authored-date>2009-05-04T09:44:29-07:00</authored-date>
    <message>Bump version to 3.0.0 and add release notes</message>
    <tree>ca615016f597f14b3224800ab09378887fd15f28</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>82483c0b3c13fe4843ce7b94afb2e1e33273a21f</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/ee7abd8acc621807e5128269db269b5a32218fbc</url>
    <id>ee7abd8acc621807e5128269db269b5a32218fbc</id>
    <committed-date>2009-05-01T14:48:01-07:00</committed-date>
    <authored-date>2009-05-01T14:48:01-07:00</authored-date>
    <message>Remove dead threads from connection pool if the pool is full and a connection is requested

Thanks to a report on IRC by Crash2burn, I was able to track down
this bug.  The bug is related to Sequel's connection pool's lack of
understanding of ruby's threading implementation. Sequel's connection
pool was apparently designed with the idea that using ensure will
ensure that the code is run.  However, that isn't true in all cases.
For example, if Thread#exit! is called, the thread terminates
immediately without running any ensure blocks.

One would assume that nobody would use Thread#exit! or a similar
method without a very good reason (looks like both jruby and ruby 1.9
don't support it at all), but apparently if ruby is used with many
threads, it will call that or something similar.  I was able to
recreate the issue using the following code:

  ds = DB[:table]
  1000.times{Thread.new{sleep 1; rand &gt; 0.5 ? ds.insert : ds.first}}

Basically, what happens is that the connection pool's @allocated
hash is left with dead threads.  These should be released by the
ensure block, but apparently that isn't always run.

The fix is fairly simple.  If a connection request comes in and the
pool is full, check the @allocated hash for dead threads and release
any that are dead.

This approach is lazy in that it doesn't release dead thread
connections right away.  However, it will only keep the dead thread
around if you aren't fully utilizing the pool.  As soon as you start
to fully utilize the pool, it will clean up the garbage.  I expect
this has a modest performance impact, but I don't think it can be
done faster and still be correct.  Send me a patch if I'm wrong.

There's no change to the single threaded pool, as this situation
will only happen in multithreaded code.

While here, stop keeping track of the connection counts separately.
I'm not sure of the performance impact of that change, but it
simplifies the code and makes future bugs less likely.

This also moves the acquire call inside the begin/ensure block
in #hold, which should fix a problem if a thread died directly after
requiring a connection but before the begin block was entered.

This also changes #release so that it doesn't take a connection
object, and it now assumes the mutex is already in use.  I could
make a similar change to #remove, but there isn't any reason to
at this point.</message>
    <tree>374abb23c90fbce5fc2337d45b42841bdf6192c4</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>75921495c06011ed7eb3c14912c0c4698e7a5bba</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/82483c0b3c13fe4843ce7b94afb2e1e33273a21f</url>
    <id>82483c0b3c13fe4843ce7b94afb2e1e33273a21f</id>
    <committed-date>2009-05-01T14:29:02-07:00</committed-date>
    <authored-date>2009-05-01T14:29:02-07:00</authored-date>
    <message>Add a failing connection pool spec to test Thread#exit! inside ConnectionPool#hold</message>
    <tree>cdb0000e060d4afee120b8996cae6f0c9a2304c6</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>d5b2b5d53b92094e8f267f9c268ccd5bb3cd6792</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/75921495c06011ed7eb3c14912c0c4698e7a5bba</url>
    <id>75921495c06011ed7eb3c14912c0c4698e7a5bba</id>
    <committed-date>2009-04-30T08:15:08-07:00</committed-date>
    <authored-date>2009-04-30T08:15:08-07:00</authored-date>
    <message>Add autoincrementing primary key support in the Oracle adapter, using a sequence and trigger

This support is based on the Firebird adapter, so thank
you wishdev for that.  The Oracle adapter still needs quite
a bit more work to be fully supported, though hopefully that'll
come in the next few releases.</message>
    <tree>63d765e7a0504dbfedfec5e9b5e9790bc91c9c89</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>048c7e66d142d34c475b6d557f13d3dac3d0288e</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/d5b2b5d53b92094e8f267f9c268ccd5bb3cd6792</url>
    <id>d5b2b5d53b92094e8f267f9c268ccd5bb3cd6792</id>
    <committed-date>2009-04-29T10:05:37-07:00</committed-date>
    <authored-date>2009-04-29T10:05:37-07:00</authored-date>
    <message>Fix spec issue in the STI specs due to the Model#save change</message>
    <tree>7d47bb86e03154e29006db279b82e6b18fad4d97</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>51be000c7c529b6ccf91238ead1d3efdcc15cc48</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/048c7e66d142d34c475b6d557f13d3dac3d0288e</url>
    <id>048c7e66d142d34c475b6d557f13d3dac3d0288e</id>
    <committed-date>2009-04-29T10:05:05-07:00</committed-date>
    <authored-date>2009-04-29T10:05:05-07:00</authored-date>
    <message>Make the schema sort the indexes in name order when dumping them, for consistency</message>
    <tree>e40cd9e2a3db708ef56566c6569b5599d9a574bb</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>30af82cebec03657ce750c5f5188a627b56c990d</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/51be000c7c529b6ccf91238ead1d3efdcc15cc48</url>
    <id>51be000c7c529b6ccf91238ead1d3efdcc15cc48</id>
    <committed-date>2009-04-29T09:43:45-07:00</committed-date>
    <authored-date>2009-04-29T09:43:45-07:00</authored-date>
    <message>Make Model#save use the same server it uses for saving as for retrieving the saved record

This change should only affect those who are using Sequel's
master/slave database functionality with Models.  Because
Model#save runs in a transaction by default, and because
Model#refresh does a select and Model#save does an insert for new
records, before, Model#save would insert the record on the :default
server and then refresh.  Since refresh does a read, it
operates on the :read_only server by default.  Because it was inside
a transaction, the changes from the master weren't available on the
slave yet.  Anyway, the fix is to use the :default server for
refreshes that are called inside of save.</message>
    <tree>8dcfa20069e708a24648863989b1219c20fa3970</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>f9224af0582759bc40db90853662cc56c3a04194</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/30af82cebec03657ce750c5f5188a627b56c990d</url>
    <id>30af82cebec03657ce750c5f5188a627b56c990d</id>
    <committed-date>2009-04-27T16:40:42-07:00</committed-date>
    <authored-date>2009-04-27T16:40:42-07:00</authored-date>
    <message>Add Database#database_type method, for identifying which type of database the object is connecting to

The RDoc explains the reasoning:

  The database type for this database object, the same as the adapter
  scheme by default.  Should be overridden in adapters (especially
  shared adapters) to be the correct type, so that even if two
  separate Database objects are using different adapters you can tell
  that they are using the same database type.  Even better, you can
  tell that two Database objects that are using the same adapter are
  connecting to different database types (think JDBC or DataObjects).</message>
    <tree>83c72fa5caafc29a03d5873171b402fd27010c43</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>7ba72fc1b0f7b07ce326e6acdbd8746830215cfa</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/f9224af0582759bc40db90853662cc56c3a04194</url>
    <id>f9224af0582759bc40db90853662cc56c3a04194</id>
    <committed-date>2009-04-27T16:02:42-07:00</committed-date>
    <authored-date>2009-04-27T16:02:42-07:00</authored-date>
    <message>Make private select_*_sql methods only take a single argument

Now that select_sql doesn't take any options, we can streamline the
code so that instead of passing the @opts instance variable to
every method as an argument, we just refer to it inside the methods.

This is probably a little faster based on a few spec runs that I did,
but the main reason I'm doing this is that the code is cleaner.</message>
    <tree>a7d4e304fa6b63a21e50a68a48f6fd7ec621e187</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>fd0400ee75278630c6cab34ad688b503ba811d88</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/7ba72fc1b0f7b07ce326e6acdbd8746830215cfa</url>
    <id>7ba72fc1b0f7b07ce326e6acdbd8746830215cfa</id>
    <committed-date>2009-04-27T14:50:18-07:00</committed-date>
    <authored-date>2009-04-27T14:50:18-07:00</authored-date>
    <message>Add ability to reset primary key sequences in the PostgreSQL adapter

This adds the reset_primary_key_sequence Database method to the
PostgreSQL adapter.  It's based on the code in ActiveRecord.

This commit also fixes a bug where sequences were quoted twice
instead of once if they weren't simple lower case names.  This
changes the code to not use extra quotes, since PostgreSQL adds
them anyway.</message>
    <tree>7eb7a557124bc27895575e3673f1fb4d80a68360</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>7183329a93cc1dbb9af6ef676877279af21c3e52</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/fd0400ee75278630c6cab34ad688b503ba811d88</url>
    <id>fd0400ee75278630c6cab34ad688b503ba811d88</id>
    <committed-date>2009-04-27T14:15:28-07:00</committed-date>
    <authored-date>2009-04-27T14:15:28-07:00</authored-date>
    <message>Allow schema_dumper extension to dump indexes separate from columns

You can now use the dump_indexes_migration method to dump just
indexes in a separate migration.  This is helpful when cloning
databases, as it is faster to transfer all data first and then
add indexes.

This includes some small refactoring in dump_table_schema.  It
also modified Generator#dump_indexes to accept :add_index and
:drop_index methods.  This also documents the :indexes option
to dump_schema_migration.</message>
    <tree>291a95082f152222a3dcfea4decec11ffd24888e</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>81f828a05e1bb26b59dec17e98fc95ec7f7f66e9</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/7183329a93cc1dbb9af6ef676877279af21c3e52</url>
    <id>7183329a93cc1dbb9af6ef676877279af21c3e52</id>
    <committed-date>2009-04-27T13:38:55-07:00</committed-date>
    <authored-date>2009-04-27T13:38:55-07:00</authored-date>
    <message>Allow schema_dumper extension to use an :indexes=&gt;false option not to include indexes</message>
    <tree>e508c5b176d6fb59e3e5900e2fdc46fb18ed4743</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>ccb0f62f70386cbf929d11b9a4b04f4d4b4726fa</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/81f828a05e1bb26b59dec17e98fc95ec7f7f66e9</url>
    <id>81f828a05e1bb26b59dec17e98fc95ec7f7f66e9</id>
    <committed-date>2009-04-27T13:07:22-07:00</committed-date>
    <authored-date>2009-04-27T13:07:22-07:00</authored-date>
    <message>Fix issues with the index parsing

The JDBC adapter was completely broken in the last commit, fix that.
The MySQL adapter's indexes method was broken, fix that as well.
The SQLite adapter's indexes method was broken on JDBC, handle that.

Add tests to make sure primary key indexes are not included, and
modify the SQLite, JDBC, and H2 adapters to make sure of that.</message>
    <tree>beebba592bdffb9e34703978af57b09649e4fcb9</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>54fbbd5a564c619af33191536d8344b96c8aa67f</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/ccb0f62f70386cbf929d11b9a4b04f4d4b4726fa</url>
    <id>ccb0f62f70386cbf929d11b9a4b04f4d4b4726fa</id>
    <committed-date>2009-04-27T12:26:59-07:00</committed-date>
    <authored-date>2009-04-27T12:26:59-07:00</authored-date>
    <message>Add index parsing to PostgreSQL, MySQL, SQLite, and JDBC adapters, support dumping indexes

This commit adds a Database#indexes method to the above adapters,
which share the following API (from the RDoc):

  Return a hash containing index information. Hash keys are index
  name symbols. Values are subhashes with two keys, :columns and
  :unique.  The value of :columns is an array of symbols of column
  names.  The value of :unique is true or false depending on if the
  index is unique.

Here's an example of use:

  DB.indexes(:songs)
  =&gt; {:songs_name_index=&gt;{:unique=&gt;true, :columns=&gt;[:name]},
      :songs_lyricid_index=&gt;{:unique=&gt;false, :columns=&gt;[:lyricid]}}

This information is used by the schema_dumper extension to dump
indexes when dumping tables.  There will be an option later to skip
the dumping of indexes.

This also changes the schema_dumper extension to dump composite
primary key constraints, or really any primary key constraints that
isn't an autoincrementing primary key.

While here, I'm refactoring the tables and schema_parse_table methods
to make them more DRY.  To that end I'm adding a metadata_dataset
private method that uses the default identifier input and output
methods, as well as input_identifier_meth and output_identifier_meth,
both of which return method objects.  The point of all this is so
that things don't break when a user uses an input or output
identifier method different from the default.</message>
    <tree>8abd376c78b6c3d9a9c8bf7d75bf53795b919025</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>bb5b3b19212fb93d72954e89314ba5f93cbf8d5e</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/54fbbd5a564c619af33191536d8344b96c8aa67f</url>
    <id>54fbbd5a564c619af33191536d8344b96c8aa67f</id>
    <committed-date>2009-04-26T20:30:05-07:00</committed-date>
    <authored-date>2009-04-26T20:30:05-07:00</authored-date>
    <message>Correctly quote SQL Array references, and handle qualified identifiers with them (e.g. :table__column.sql_subscript(1))

I didn't notice that this didn't work as I would expect until I had
to use it to implement the PostgreSQL index parsing code (which will
be coming in the near future).  It does break backwards compatibility
for users who were creating SQL::Subscripts directly via:

  Sequel::SQL::Subscript.new(&quot;column&quot;, [1])

Before, the SQL would be column[1], now it is 'column'[1].  You
should either use a Symbol or a LiteralString instead now.</message>
    <tree>3740998e83ac18732c69b5e087c039b75ec0d9da</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>d9295db936fa0dc56d1061c8e081999141344aa4</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/bb5b3b19212fb93d72954e89314ba5f93cbf8d5e</url>
    <id>bb5b3b19212fb93d72954e89314ba5f93cbf8d5e</id>
    <committed-date>2009-04-26T20:25:05-07:00</committed-date>
    <authored-date>2009-04-26T20:25:05-07:00</authored-date>
    <message>Allow dropping an index with a name different than the default name

I'm not sure why this wasn't supported before.  Sequel let's you
choose a specific name for an index, but before you couldn't use
that name when dropping the index.  Anyway, use the :name option
to drop_index to drop an index with a specific name.</message>
    <tree>9d7134fe7e55fed3cc2a14ce94e7ba3f33ecdfd5</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>bf0ff5840bc3b6377db03030656742313b21190c</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/d9295db936fa0dc56d1061c8e081999141344aa4</url>
    <id>d9295db936fa0dc56d1061c8e081999141344aa4</id>
    <committed-date>2009-04-26T18:09:08-07:00</committed-date>
    <authored-date>2009-04-26T18:09:08-07:00</authored-date>
    <message>Allow Dataset#from to remove existing FROM tables when called without an argument, instead of raising an error later

This change is backwards incompatible, but previously there was no
way to remove all FROM tables.  I chose to backwards compatibility
and make from consistent with select, in that still works if you
call it without an argument.  I thought about adding a method
similar to select_all, but couldn't think of a good name (from_none
was my original choice, but I don't really like that).</message>
    <tree>54dbaa2bc42fd906330cfa8a2b08357159c76d3b</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>7aad75df8bc4e692290733afc878e8f705d96f79</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/bf0ff5840bc3b6377db03030656742313b21190c</url>
    <id>bf0ff5840bc3b6377db03030656742313b21190c</id>
    <committed-date>2009-04-23T15:37:42-07:00</committed-date>
    <authored-date>2009-04-23T15:37:42-07:00</authored-date>
    <message>Fix string quoting on Oracle so it doesn't double backslashes</message>
    <tree>ba613d6eb73e9f76c41018499d93c955513d1f0f</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>f9c4ee8871d422f07bc161bf24f0f8accfd94c3b</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/7aad75df8bc4e692290733afc878e8f705d96f79</url>
    <id>7aad75df8bc4e692290733afc878e8f705d96f79</id>
    <committed-date>2009-04-22T09:14:26-07:00</committed-date>
    <authored-date>2009-04-22T09:03:28-07:00</authored-date>
    <message>Fix spec breakage caused by alias use in Dataset#count</message>
    <tree>4cc1346c1c9f3d81cab307345e56559cc4919a35</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>cf2fa139d32bb64ffa90afca34b10319985070d3</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/f9c4ee8871d422f07bc161bf24f0f8accfd94c3b</url>
    <id>f9c4ee8871d422f07bc161bf24f0f8accfd94c3b</id>
    <committed-date>2009-04-21T21:23:32-07:00</committed-date>
    <authored-date>2009-04-21T21:23:32-07:00</authored-date>
    <message>Alias the count function call in Dataset#count, fixes use on MSSQL</message>
    <tree>b2b57b16a877855cb3b8c354485bf23f9f19207d</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>e010b007b508306090679e2a940fbec1e05ee98c</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/cf2fa139d32bb64ffa90afca34b10319985070d3</url>
    <id>cf2fa139d32bb64ffa90afca34b10319985070d3</id>
    <committed-date>2009-04-21T21:17:40-07:00</committed-date>
    <authored-date>2009-04-21T21:17:40-07:00</authored-date>
    <message>Allow QualifiedIdentifiers to be qualified, to allow :column.qualify(:table).qualify(:schema)</message>
    <tree>500ee34c087bbff28b1719a41d106978e0d080f2</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>214c278ba03aecb4c81ea937c5f75eb383b5f380</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/e010b007b508306090679e2a940fbec1e05ee98c</url>
    <id>e010b007b508306090679e2a940fbec1e05ee98c</id>
    <committed-date>2009-04-21T17:52:28-07:00</committed-date>
    <authored-date>2009-04-21T17:52:28-07:00</authored-date>
    <message>Update CHANGELOG for akitaonrails's DBI change</message>
    <tree>a5874383956ea8e02874ae5920d2051f7f5536dd</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>2186724561eeb6f2476997e9555121099ace9aec</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/214c278ba03aecb4c81ea937c5f75eb383b5f380</url>
    <id>214c278ba03aecb4c81ea937c5f75eb383b5f380</id>
    <committed-date>2009-04-21T17:51:01-07:00</committed-date>
    <authored-date>2009-04-21T17:51:01-07:00</authored-date>
    <message>Revert MSSQL quoted_identifier change</message>
    <tree>3f8ca12f8b89a7bb57dac9d210a97737491cd59e</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>0ca44c253a81928282b6df8092e21b0d74faac89</id>
      </parent>
      <parent>
        <id>109071f8d88f091a467a2d01d307062688336f3f</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/2186724561eeb6f2476997e9555121099ace9aec</url>
    <id>2186724561eeb6f2476997e9555121099ace9aec</id>
    <committed-date>2009-04-21T17:48:41-07:00</committed-date>
    <authored-date>2009-04-21T17:48:41-07:00</authored-date>
    <message>Merge commit 'akitaonrails/master'</message>
    <tree>43e1dbc584f246c413d9438e9c989578036a48d4</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>63d10b7436eab8c134077ac5509cf7cf456e366c</id>
      </parent>
    </parents>
    <author>
      <name>AkitaOnRails</name>
      <email>fabioakita@gmail.com</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/109071f8d88f091a467a2d01d307062688336f3f</url>
    <id>109071f8d88f091a467a2d01d307062688336f3f</id>
    <committed-date>2009-04-21T16:44:00-07:00</committed-date>
    <authored-date>2009-04-21T16:44:00-07:00</authored-date>
    <message>Taking care of correctly quoting table names such as Person.Address into [Person].[Address] in MSSQL
Also making sure the :db_type =&gt; 'mssql' properly include the adapters/shared/mssql for DBI</message>
    <tree>af31d327b78b7b399a85c5130b535818db8139a9</tree>
    <committer>
      <name>AkitaOnRails</name>
      <email>fabioakita@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>d6a973b5e62ba61824f6e92d3e469df6d192280b</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/0ca44c253a81928282b6df8092e21b0d74faac89</url>
    <id>0ca44c253a81928282b6df8092e21b0d74faac89</id>
    <committed-date>2009-04-21T16:24:24-07:00</committed-date>
    <authored-date>2009-04-21T16:24:24-07:00</authored-date>
    <message>Add schema_dumper extension, for dumping schema of tables

This adds three functions to Schema::Generator: dump_columns,
dump_constraints, and dump_indexes.  The expectation is that if you
instance eval each inside of another instance, that instance will
be a copy of current instance.

This adds a Database#dump_table_schema method, which returns a string
representing a create_table method call that will recreate the table.
It isn't perfect, but it recognizes primary keys, defaults, and
NULL/NOT NULL determinations.  It also is able to parse database
types back into ruby types, and use those.  It converts types by
default, so if you wanted to copy the table schema from a PostgreSQL
database to an SQLite database, you could use it.  If you are copying
to the same database type, you can use the :same_db option to not
convert database types.

The conversion from database types to ruby types is lossy.  Most of
the time you will get the same or similar type, but if you have a
single precision float, it'll probably give you a double precision
float.  And if you have a smallint, you'll end up with a regular
integer.  These cases could be dealt with, but I'd like to keep the
code as simple as possible.

A Database#dump_schema_migration method was also added, that can be
used to dump the entire database as a single migration.

Currently this only supports dumping columns.  It will be expanded to
dump indexes as well soon.</message>
    <tree>4e5e77871dc9a11ea353555acd564a7a96865c52</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>ad2ef833bce8c18630cb8ca2e019218dd9943ec0</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/d6a973b5e62ba61824f6e92d3e469df6d192280b</url>
    <id>d6a973b5e62ba61824f6e92d3e469df6d192280b</id>
    <committed-date>2009-04-21T15:56:55-07:00</committed-date>
    <authored-date>2009-04-21T15:56:55-07:00</authored-date>
    <message>Add spec for invalid class used as Database column</message>
    <tree>2fcb23d73ffaae1e69177190db2af98688e02eed</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>d0d48614f1576d13fea63730fd7a6a7a93e2e132</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/ad2ef833bce8c18630cb8ca2e019218dd9943ec0</url>
    <id>ad2ef833bce8c18630cb8ca2e019218dd9943ec0</id>
    <committed-date>2009-04-21T15:47:56-07:00</committed-date>
    <authored-date>2009-04-21T15:47:41-07:00</authored-date>
    <message>Add Database#schema_autoincrementing_primary_key? for doing a guess at whether the column schema could be an autoincrementing primary key</message>
    <tree>f4df0faea6e4cf05e779672fcf8e6076d2be5c35</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>c59e955a862a71848c1f5ee77b05b3da2cca0257</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/d0d48614f1576d13fea63730fd7a6a7a93e2e132</url>
    <id>d0d48614f1576d13fea63730fd7a6a7a93e2e132</id>
    <committed-date>2009-04-21T15:46:02-07:00</committed-date>
    <authored-date>2009-04-21T15:46:02-07:00</authored-date>
    <message>Make sure the eval in the schema generator contains file and line info</message>
    <tree>7e8f43e6893f76411d74ba74a0b3db2767beb3c6</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>4711520cd89ae08cedec723c8fa0cba775b47569</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/jeremyevans/sequel/commit/c59e955a862a71848c1f5ee77b05b3da2cca0257</url>
    <id>c59e955a862a71848c1f5ee77b05b3da2cca0257</id>
    <committed-date>2009-04-21T15:44:10-07:00</committed-date>
    <authored-date>2009-04-21T15:44:10-07:00</authored-date>
    <message>Get 100% spec coverage for plugins and extensions

This commits removes the update_values definition in the caching
plugin, since it was removed from Sequel::Model.</message>
    <tree>8226bf6238e6c7b4841a2bef3afb80f7542c358a</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
</commits>
