<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>activerecord/test/schema/mysql_specific_schema.rb</filename>
    </added>
    <added>
      <filename>activerecord/test/schema/postgresql_specific_schema.rb</filename>
    </added>
    <added>
      <filename>activerecord/test/schema/sqlite_specific_schema.rb</filename>
    </added>
    <added>
      <filename>activerecord/test/schema/sqlserver_specific_schema.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -617,7 +617,7 @@ module ActiveRecord
             quoted_sequence = quote_column_name(sequence)
 
             select_value &lt;&lt;-end_sql, 'Reset sequence'
-              SELECT setval('#{sequence}', (SELECT COALESCE(MAX(#{pk})+(SELECT increment_by FROM #{quoted_sequence}), (SELECT min_value FROM #{quoted_sequence})) FROM #{quote_table_name(table)}), false)
+              SELECT setval('#{quoted_sequence}', (SELECT COALESCE(MAX(#{quote_column_name pk})+(SELECT increment_by FROM #{quoted_sequence}), (SELECT min_value FROM #{quoted_sequence})) FROM #{quote_table_name(table)}), false)
             end_sql
           else
             @logger.warn &quot;#{table} has primary key #{pk} with no default sequence&quot; if @logger</diff>
      <filename>activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,65 +4,21 @@ require &quot;cases/helper&quot;
 class AAACreateTablesTest &lt; ActiveRecord::TestCase
   self.use_transactional_fixtures = false
 
-  def test_drop_and_create_main_tables
-    recreate ActiveRecord::Base unless use_migrations?
-    assert true
-  end
-
   def test_load_schema
-    if ActiveRecord::Base.connection.supports_migrations?
-      eval(File.read(SCHEMA_ROOT + &quot;/schema.rb&quot;))
-    else
-      recreate ActiveRecord::Base, '3'
+    eval(File.read(SCHEMA_ROOT + &quot;/schema.rb&quot;))
+    if File.exists?(adapter_specific_schema_file)
+      eval(File.read(adapter_specific_schema_file))
     end
     assert true
   end
 
   def test_drop_and_create_courses_table
-    if Course.connection.supports_migrations?
-      eval(File.read(SCHEMA_ROOT + &quot;/schema2.rb&quot;))
-    end
-    recreate Course, '2' unless use_migrations_for_courses?
+    eval(File.read(SCHEMA_ROOT + &quot;/schema2.rb&quot;))
     assert true
   end
 
   private
-    def use_migrations?
-      unittest_sql_filename = ActiveRecord::Base.connection.adapter_name.downcase + &quot;.sql&quot;
-      not File.exist? SCHEMA_ROOT + &quot;/#{unittest_sql_filename}&quot;
-    end
-
-    def use_migrations_for_courses?
-      unittest2_sql_filename = ActiveRecord::Base.connection.adapter_name.downcase + &quot;2.sql&quot;
-      not File.exist? SCHEMA_ROOT + &quot;/#{unittest2_sql_filename}&quot;
-    end
-
-    def recreate(base, suffix = nil)
-      connection = base.connection
-      adapter_name = connection.adapter_name.downcase + suffix.to_s
-      execute_sql_file SCHEMA_ROOT + &quot;/#{adapter_name}.drop.sql&quot;, connection
-      execute_sql_file SCHEMA_ROOT + &quot;/#{adapter_name}.sql&quot;, connection
-    end
-
-    def execute_sql_file(path, connection)
-      # OpenBase has a different format for sql files
-      if current_adapter?(:OpenBaseAdapter) then
-          File.read(path).split(&quot;go&quot;).each_with_index do |sql, i|
-            begin
-              # OpenBase does not support comments embedded in sql
-              connection.execute(sql,&quot;SQL statement ##{i}&quot;) unless sql.blank?
-            rescue ActiveRecord::StatementInvalid
-              #$stderr.puts &quot;warning: #{$!}&quot;
-            end
-          end
-      else
-        File.read(path).split(';').each_with_index do |sql, i|
-          begin
-            connection.execute(&quot;\n\n-- statement ##{i}\n#{sql}\n&quot;) unless sql.blank?
-          rescue ActiveRecord::StatementInvalid
-            #$stderr.puts &quot;warning: #{$!}&quot;
-          end
-        end
-      end
-    end
+  def adapter_specific_schema_file
+    SCHEMA_ROOT + '/' + ActiveRecord::Base.connection.adapter_name.downcase + '_specific_schema.rb'
+  end
 end</diff>
      <filename>activerecord/test/cases/aaa_create_tables_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -25,7 +25,7 @@ class HasManyThroughAssociationsTest &lt; ActiveRecord::TestCase
     new_person = nil # so block binding catches it
     
     assert_queries(0) do
-      new_person = Person.new
+      new_person = Person.new :first_name =&gt; 'bob'
     end
     
     # Associating new records always saves them</diff>
      <filename>activerecord/test/cases/associations/has_many_through_associations_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -41,7 +41,7 @@ class AssociationsTest &lt; ActiveRecord::TestCase
   end
 
   def test_should_construct_new_finder_sql_after_create
-    person = Person.new
+    person = Person.new :first_name =&gt; 'clark'
     assert_equal [], person.readers.find(:all)
     person.save!
     reader = Reader.create! :person =&gt; person, :post =&gt; Post.new(:title =&gt; &quot;foo&quot;, :body =&gt; &quot;bar&quot;)</diff>
      <filename>activerecord/test/cases/associations_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1704,7 +1704,7 @@ class BasicsTest &lt; ActiveRecord::TestCase
     old_class = LooseDescendant
     Object.send :remove_const, :LooseDescendant
 
-    descendant = old_class.create!
+    descendant = old_class.create! :first_name =&gt; 'bob'
     assert_not_nil LoosePerson.find(descendant.id), &quot;Should have found instance of LooseDescendant when finding abstract LoosePerson: #{descendant.inspect}&quot;
   ensure
     unless Object.const_defined?(:LooseDescendant)</diff>
      <filename>activerecord/test/cases/base_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,322 +1,251 @@
-ActiveRecord::Schema.define do
-
-  # adapter name is checked because we are under a transition of
-  # moving the sql files under activerecord/test/fixtures/db_definitions
-  # to this file, schema.rb.
-  if adapter_name == &quot;MySQL&quot;
-
-    # Please keep these create table statements in alphabetical order
-    # unless the ordering matters.  In which case, define them below
-    create_table :accounts, :force =&gt; true do |t|
-      t.integer :firm_id
-      t.integer :credit_limit
-    end
-
-    create_table :authors, :force =&gt; true do |t|
-      t.string :name, :null =&gt; false
-    end
-
-    create_table :auto_id_tests, :force =&gt; true, :id =&gt; false do |t|
-      t.primary_key :auto_id
-      t.integer     :value
-    end
-
-    create_table :binaries, :force =&gt; true do |t|
-      t.binary :data
-    end
 
-    create_table :binary_fields, :force =&gt; true do |t|
-      t.binary :tiny_blob,   :limit =&gt; 255
-      t.binary :normal_blob, :limit =&gt; 65535
-      t.binary :medium_blob, :limit =&gt; 16777215
-      t.binary :long_blob,   :limit =&gt; 2147483647
-      t.text   :tiny_text,   :limit =&gt; 255
-      t.text   :normal_text, :limit =&gt; 65535
-      t.text   :medium_text, :limit =&gt; 16777215
-      t.text   :long_text,   :limit =&gt; 2147483647
-    end
-
-    create_table :booleantests, :force =&gt; true do |t|
-      t.integer :value
-    end
-
-    create_table :categories, :force =&gt; true do |t|
-      t.string :name, :null =&gt; false
-      t.string :type
-    end
-
-    create_table :categories_posts, :force =&gt; true, :id =&gt; false do |t|
-      t.integer :category_id, :null =&gt; false
-      t.integer :post_id, :null =&gt; false
-    end
-
-    create_table :colnametests, :force =&gt; true do |t|
-      t.integer :references, :null =&gt; false
-    end
-
-    create_table :comments, :force =&gt; true do |t|
-      t.integer :post_id, :null =&gt; false
-      t.text    :body, :null =&gt; false
-      t.string  :type
-    end
-
-    create_table :companies, :force =&gt; true do |t|
-      t.string  :type
-      t.string  :ruby_type
-      t.integer :firm_id
-      t.string  :name
-      t.integer :client_of
-      t.integer :rating, :default =&gt; 1
+ActiveRecord::Schema.define do
+  def except(adapter_names_to_exclude)
+    unless [adapter_names_to_exclude].flatten.include?(adapter_name)
+      yield
     end
+  end
 
-    create_table :computers, :force =&gt; true do |t|
-      t.integer :developer, :null =&gt; false
-      t.integer :extendedWarranty, :null =&gt; false
+  #put adapter specific setup here
+  case adapter_name
+    # For Firebird, set the sequence values 10000 when create_table is called;
+    # this prevents primary key collisions between &quot;normally&quot; created records
+    # and fixture-based (YAML) records.
+  when &quot;Firebird&quot;
+    def create_table(*args, &amp;block)
+      ActiveRecord::Base.connection.create_table(*args, &amp;block)
+      ActiveRecord::Base.connection.execute &quot;SET GENERATOR #{args.first}_seq TO 10000&quot;
     end
+  end
 
 
-    create_table :customers, :force =&gt; true do |t|
-      t.string  :name
-      t.integer :balance, :default =&gt; 0
-      t.string  :address_street
-      t.string  :address_city
-      t.string  :address_country
-      t.string  :gps_location
-    end
-
-    create_table :developers, :force =&gt; true do |t|
-      t.string   :name
-      t.integer  :salary, :default =&gt; 70000
-      t.datetime :created_at
-      t.datetime :updated_at
-    end
+  # Please keep these create table statements in alphabetical order
+  # unless the ordering matters.  In which case, define them below
+  create_table :accounts, :force =&gt; true do |t|
+    t.integer :firm_id
+    t.integer :credit_limit
+  end
 
-    create_table :developers_projects, :force =&gt; true, :id =&gt; false do |t|
-      t.integer :developer_id, :null =&gt; false
-      t.integer :project_id, :null =&gt; false
-      t.date    :joined_on
-      t.integer :access_level, :default =&gt; 1
-    end
+  create_table :audit_logs, :force =&gt; true do |t|
+    t.column :message, :string, :null=&gt;false
+    t.column :developer_id, :integer, :null=&gt;false
+  end
 
-    create_table :entrants, :force =&gt; true do |t|
-      t.string  :name, :null =&gt; false
-      t.integer :course_id, :null =&gt; false
-    end
+  create_table :authors, :force =&gt; true do |t|
+    t.string :name, :null =&gt; false
+    t.integer :author_address_id
+    t.integer :author_address_extra_id
+  end
 
-    create_table :funny_jokes, :force =&gt; true do |t|
-      t.string :name
-    end
+  create_table :author_addresses, :force =&gt; true do |t|
+  end
 
-    create_table :keyboards, :force =&gt; true, :id  =&gt; false do |t|
-      t.primary_key :key_number
-      t.string      :name
-    end
+  create_table :author_favorites, :force =&gt; true do |t|
+    t.column :author_id, :integer
+    t.column :favorite_author_id, :integer
+  end
 
-    create_table :legacy_things, :force =&gt; true do |t|
-      t.integer :tps_report_number
-      t.integer :version, :null =&gt; false, :default =&gt; 0
-    end
 
-    create_table :minimalistics, :force =&gt; true do |t|
-    end
+  create_table :auto_id_tests, :force =&gt; true, :id =&gt; false do |t|
+    t.primary_key :auto_id
+    t.integer     :value
+  end
 
-    create_table :mixed_case_monkeys, :force =&gt; true, :id =&gt; false do |t|
-      t.primary_key :monkeyID
-      t.integer     :fleaCount
-    end
+  create_table :binaries, :force =&gt; true do |t|
+    t.binary :data
+  end
 
-    create_table :mixins, :force =&gt; true do |t|
-      t.integer  :parent_id
-      t.integer  :pos
-      t.datetime :created_at
-      t.datetime :updated_at
-      t.integer  :lft
-      t.integer  :rgt
-      t.integer  :root_id
-      t.string   :type
-    end
+  create_table :books, :force =&gt; true do |t|
+    t.column :name, :string
+  end
 
-    create_table :movies, :force =&gt; true, :id =&gt; false do |t|
-      t.primary_key :movieid
-      t.string      :name
-    end
+  create_table :booleantests, :force =&gt; true do |t|
+    t.integer :value
+  end
 
-    create_table :numeric_data, :force =&gt; true do |t|
-      t.decimal :bank_balance, :precision =&gt; 10, :scale =&gt; 2
-      t.decimal :big_bank_balance, :precision =&gt; 15, :scale =&gt; 2
-      t.decimal :world_population, :precision =&gt; 10, :scale =&gt; 0
-      t.decimal :my_house_population, :precision =&gt; 2, :scale =&gt; 0
-      t.decimal :decimal_number_with_default, :precision =&gt; 3, :scale =&gt; 2, :default =&gt; 2.78
-    end
+  create_table :categories, :force =&gt; true do |t|
+    t.string :name, :null =&gt; false
+    t.string :type
+  end
 
-    create_table :orders, :force =&gt; true do |t|
-      t.string  :name
-      t.integer :billing_customer_id
-      t.integer :shipping_customer_id
-    end
+  create_table :categories_posts, :force =&gt; true, :id =&gt; false do |t|
+    t.integer :category_id, :null =&gt; false
+    t.integer :post_id, :null =&gt; false
+  end
 
-    create_table :people, :force =&gt; true do |t|
-      t.string  :first_name, :null =&gt; false
-      t.integer :lock_version, :null =&gt; false, :default =&gt; 0
-    end
+  create_table :categorizations, :force =&gt; true do |t|
+    t.column :category_id, :integer
+    t.column :post_id, :integer
+    t.column :author_id, :integer
+  end
 
-    create_table :posts, :force =&gt; true do |t|
-      t.integer :author_id
-      t.string  :title, :null =&gt; false
-      t.text    :body, :null =&gt; false
-      t.string  :type
-      t.integer :comments_count, :default =&gt; 0
-    end
+  create_table :citations, :force =&gt; true do |t|
+    t.column :book1_id, :integer
+    t.column :book2_id, :integer
+  end
 
-    create_table :projects, :force =&gt; true do |t|
-      t.string :name
-      t.string :type
-    end
+  create_table :clubs, :force =&gt; true do |t|
+    t.string :name
+  end
 
-    create_table :readers, :force =&gt; true do |t|
-      t.integer :post_id, :null =&gt; false
-      t.integer :person_id, :null =&gt; false
-    end
+  create_table :colnametests, :force =&gt; true do |t|
+    t.integer :references, :null =&gt; false
+  end
 
-    create_table :subscribers, :force =&gt; true, :id =&gt; false do |t|
-      t.string :nick, :null =&gt; false
-      t.string :name
-    end
-    add_index :subscribers, :nick, :unique =&gt; true
+  create_table :comments, :force =&gt; true do |t|
+    t.integer :post_id, :null =&gt; false
+    t.text    :body, :null =&gt; false
+    t.string  :type
+  end
 
-    create_table :tasks, :force =&gt; true do |t|
-      t.datetime :starting
-      t.datetime :ending
-    end
+  create_table :companies, :force =&gt; true do |t|
+    t.string  :type
+    t.string  :ruby_type
+    t.integer :firm_id
+    t.string  :name
+    t.integer :client_of
+    t.integer :rating, :default =&gt; 1
+  end
 
-    create_table :topics, :force =&gt; true do |t|
-      t.string   :title
-      t.string   :author_name
-      t.string   :author_email_address
-      t.datetime :written_on
-      t.time     :bonus_time
-      t.date     :last_read
-      t.text     :content
-      t.boolean  :approved, :default =&gt; true
-      t.integer  :replies_count, :default =&gt; 0
-      t.integer  :parent_id
-      t.string   :type
-    end
+  create_table :computers, :force =&gt; true do |t|
+    t.integer :developer, :null =&gt; false
+    t.integer :extendedWarranty, :null =&gt; false
+  end
 
 
+  create_table :customers, :force =&gt; true do |t|
+    t.string  :name
+    t.integer :balance, :default =&gt; 0
+    t.string  :address_street
+    t.string  :address_city
+    t.string  :address_country
+    t.string  :gps_location
+  end
 
-    ### These tables are created last as the order is significant
+  create_table :developers, :force =&gt; true do |t|
+    t.string   :name
+    t.integer  :salary, :default =&gt; 70000
+    t.datetime :created_at
+    t.datetime :updated_at
+  end
 
-    # fk_test_has_fk should be before fk_test_has_pk
-    create_table :fk_test_has_fk, :force =&gt; true do |t|
-      t.integer :fk_id, :null =&gt; false
-    end
+  create_table :developers_projects, :force =&gt; true, :id =&gt; false do |t|
+    t.integer :developer_id, :null =&gt; false
+    t.integer :project_id, :null =&gt; false
+    t.date    :joined_on
+    t.integer :access_level, :default =&gt; 1
+  end
 
-    create_table :fk_test_has_pk, :force =&gt; true do |t|
-    end
+  create_table :edges, :force =&gt; true do |t|
+    t.column :source_id, :integer, :null =&gt; false
+    t.column :sink_id,   :integer, :null =&gt; false
+  end
+  add_index :edges, [:source_id, :sink_id], :unique =&gt; true, :name =&gt; 'unique_edge_index'
 
-    execute 'alter table fk_test_has_fk
-               add FOREIGN KEY (`fk_id`) REFERENCES `fk_test_has_pk`(`id`)'
 
+  create_table :entrants, :force =&gt; true do |t|
+    t.string  :name, :null =&gt; false
+    t.integer :course_id, :null =&gt; false
+  end
 
-  else
-    add_column :posts, :comments_count, :integer, :default =&gt; 0
+  create_table :funny_jokes, :force =&gt; true do |t|
+    t.string :name
   end
 
-  # For Firebird, set the sequence values 10000 when create_table is called;
-  # this prevents primary key collisions between &quot;normally&quot; created records
-  # and fixture-based (YAML) records.
-  if adapter_name == &quot;Firebird&quot;
-    def create_table(*args, &amp;block)
-      ActiveRecord::Base.connection.create_table(*args, &amp;block)
-      ActiveRecord::Base.connection.execute &quot;SET GENERATOR #{args.first}_seq TO 10000&quot;
-    end
+  create_table :items, :force =&gt; true do |t|
+    t.column :name, :integer
   end
 
-  create_table :taggings, :force =&gt; true do |t|
-    t.column :tag_id, :integer
-    t.column :super_tag_id, :integer
-    t.column :taggable_type, :string
-    t.column :taggable_id, :integer
+  create_table :inept_wizards, :force =&gt; true do |t|
+    t.column :name, :string, :null =&gt; false
+    t.column :city, :string, :null =&gt; false
+    t.column :type, :string
   end
 
-  create_table :tags, :force =&gt; true do |t|
-    t.column :name, :string
-    t.column :taggings_count, :integer, :default =&gt; 0
+  create_table :keyboards, :force =&gt; true, :id  =&gt; false do |t|
+    t.primary_key :key_number
+    t.string      :name
   end
 
-  create_table :categorizations, :force =&gt; true do |t|
-    t.column :category_id, :integer
-    t.column :post_id, :integer
-    t.column :author_id, :integer
+  create_table :legacy_things, :force =&gt; true do |t|
+    t.integer :tps_report_number
+    t.integer :version, :null =&gt; false, :default =&gt; 0
   end
 
-  add_column :posts, :taggings_count, :integer, :default =&gt; 0
-  add_column :authors, :author_address_id, :integer
-  add_column :authors, :author_address_extra_id, :integer
+  create_table :lock_without_defaults, :force =&gt; true do |t|
+    t.column :lock_version, :integer
+  end
 
-  create_table :author_addresses, :force =&gt; true do |t|
+  create_table :lock_without_defaults_cust, :force =&gt; true do |t|
+    t.column :custom_lock_version, :integer
   end
 
-  create_table :author_favorites, :force =&gt; true do |t|
-    t.column :author_id, :integer
-    t.column :favorite_author_id, :integer
+  create_table :mateys, :id =&gt; false, :force =&gt; true do |t|
+    t.column :pirate_id, :integer
+    t.column :target_id, :integer
+    t.column :weight, :integer
   end
 
-  create_table :vertices, :force =&gt; true do |t|
-    t.column :label, :string
+  create_table :members, :force =&gt; true do |t|
+    t.string :name
   end
 
-  create_table :edges, :force =&gt; true do |t|
-    t.column :source_id, :integer, :null =&gt; false
-    t.column :sink_id,   :integer, :null =&gt; false
+  create_table :memberships, :force =&gt; true do |t|
+    t.datetime :joined_on
+    t.integer :club_id, :member_id
+    t.boolean :favourite, :default =&gt; false
+    t.string :type
   end
-  add_index :edges, [:source_id, :sink_id], :unique =&gt; true, :name =&gt; 'unique_edge_index'
 
-  create_table :lock_without_defaults, :force =&gt; true do |t|
-    t.column :lock_version, :integer
+  create_table :minimalistics, :force =&gt; true do |t|
   end
 
-  create_table :lock_without_defaults_cust, :force =&gt; true do |t|
-    t.column :custom_lock_version, :integer
+  create_table :mixed_case_monkeys, :force =&gt; true, :id =&gt; false do |t|
+    t.primary_key :monkeyID
+    t.integer     :fleaCount
   end
 
-  create_table :items, :force =&gt; true do |t|
-    t.column :name, :integer
+  create_table :mixins, :force =&gt; true do |t|
+    t.integer  :parent_id
+    t.integer  :pos
+    t.datetime :created_at
+    t.datetime :updated_at
+    t.integer  :lft
+    t.integer  :rgt
+    t.integer  :root_id
+    t.string   :type
   end
 
-  # For sqlite 3.1.0+, make a table with a autoincrement column
-  if adapter_name == 'SQLite' and supports_autoincrement?
-    create_table :table_with_autoincrement, :force =&gt; true do |t|
-      t.column :name, :string
-    end
+  create_table :movies, :force =&gt; true, :id =&gt; false do |t|
+    t.primary_key :movieid
+    t.string      :name
   end
 
-  # For sqlserver 2000+, ensure real columns can be used
-  if adapter_name.starts_with?(&quot;SQLServer&quot;)
-    create_table :table_with_real_columns, :force =&gt; true do |t|
-      t.column :real_number, :real
-    end
+  create_table :numeric_data, :force =&gt; true do |t|
+    t.decimal :bank_balance, :precision =&gt; 10, :scale =&gt; 2
+    t.decimal :big_bank_balance, :precision =&gt; 15, :scale =&gt; 2
+    t.decimal :world_population, :precision =&gt; 10, :scale =&gt; 0
+    t.decimal :my_house_population, :precision =&gt; 2, :scale =&gt; 0
+    t.decimal :decimal_number_with_default, :precision =&gt; 3, :scale =&gt; 2, :default =&gt; 2.78
   end
 
-  create_table :audit_logs, :force =&gt; true do |t|
-    t.column :message, :string, :null=&gt;false
-    t.column :developer_id, :integer, :null=&gt;false
+  create_table :orders, :force =&gt; true do |t|
+    t.string  :name
+    t.integer :billing_customer_id
+    t.integer :shipping_customer_id
   end
 
-  create_table :books, :force =&gt; true do |t|
-    t.column :name, :string
+  create_table :owners, :primary_key =&gt; :owner_id ,:force =&gt; true do |t|
+    t.string :name
   end
 
-  create_table :citations, :force =&gt; true do |t|
-    t.column :book1_id, :integer
-    t.column :book2_id, :integer
+
+  create_table :paint_colors, :force =&gt; true do |t|
+    t.integer :non_poly_one_id
   end
 
-  create_table :inept_wizards, :force =&gt; true do |t|
-    t.column :name, :string, :null =&gt; false
-    t.column :city, :string, :null =&gt; false
-    t.column :type, :string
+  create_table :paint_textures, :force =&gt; true do |t|
+    t.integer :non_poly_two_id
   end
 
   create_table :parrots, :force =&gt; true do |t|
@@ -329,54 +258,40 @@ ActiveRecord::Schema.define do
     t.column :updated_on, :datetime
   end
 
-  create_table :pirates, :force =&gt; true do |t|
-    t.column :catchphrase, :string
-    t.column :parrot_id, :integer
-    t.column :created_on, :datetime
-    t.column :updated_on, :datetime
-  end
-
   create_table :parrots_pirates, :id =&gt; false, :force =&gt; true do |t|
     t.column :parrot_id, :integer
     t.column :pirate_id, :integer
   end
 
-  create_table :treasures, :force =&gt; true do |t|
-    t.column :name, :string
-    t.column :looter_id, :integer
-    t.column :looter_type, :string
-  end
-
   create_table :parrots_treasures, :id =&gt; false, :force =&gt; true do |t|
     t.column :parrot_id, :integer
     t.column :treasure_id, :integer
   end
 
-  create_table :mateys, :id =&gt; false, :force =&gt; true do |t|
-    t.column :pirate_id, :integer
-    t.column :target_id, :integer
-    t.column :weight, :integer
+  create_table :people, :force =&gt; true do |t|
+    t.string  :first_name, :null =&gt; false
+    t.integer :lock_version, :null =&gt; false, :default =&gt; 0
   end
 
-  create_table :ships, :force =&gt; true do |t|
+  create_table :pets, :primary_key =&gt; :pet_id ,:force =&gt; true do |t|
     t.string :name
-    t.datetime :created_at
-    t.datetime :created_on
-    t.datetime :updated_at
-    t.datetime :updated_on
+    t.integer :owner_id, :integer
   end
 
-  create_table 'warehouse-things', :force =&gt; true do |t|
-    t.integer :value
+  create_table :pirates, :force =&gt; true do |t|
+    t.column :catchphrase, :string
+    t.column :parrot_id, :integer
+    t.column :created_on, :datetime
+    t.column :updated_on, :datetime
   end
 
-  create_table :owners, :primary_key =&gt; :owner_id ,:force =&gt; true do |t|
-    t.string :name
-  end
-
-  create_table :pets, :primary_key =&gt; :pet_id ,:force =&gt; true do |t|
-    t.string :name
-    t.integer :owner_id, :integer
+  create_table :posts, :force =&gt; true do |t|
+    t.integer :author_id
+    t.string  :title, :null =&gt; false
+    t.text    :body, :null =&gt; false
+    t.string  :type
+    t.integer :comments_count, :default =&gt; 0
+    t.integer :taggings_count, :default =&gt; 0
   end
 
   create_table :price_estimates, :force =&gt; true do |t|
@@ -385,8 +300,14 @@ ActiveRecord::Schema.define do
     t.integer :price
   end
 
-  [:circles, :squares, :triangles, :non_poly_ones, :non_poly_twos].each do |t|
-    create_table(t, :force =&gt; true) { }
+  create_table :projects, :force =&gt; true do |t|
+    t.string :name
+    t.string :type
+  end
+
+  create_table :readers, :force =&gt; true do |t|
+    t.integer :post_id, :null =&gt; false
+    t.integer :person_id, :null =&gt; false
   end
 
   create_table :shape_expressions, :force =&gt; true do |t|
@@ -396,32 +317,84 @@ ActiveRecord::Schema.define do
     t.integer :shape_id
   end
 
-  create_table :paint_colors, :force =&gt; true do |t|
-    t.integer :non_poly_one_id
+  create_table :ships, :force =&gt; true do |t|
+    t.string :name
+    t.datetime :created_at
+    t.datetime :created_on
+    t.datetime :updated_at
+    t.datetime :updated_on
   end
 
-  create_table :paint_textures, :force =&gt; true do |t|
-    t.integer :non_poly_two_id
+  create_table :sponsors, :force =&gt; true do |t|
+    t.integer :club_id
+    t.integer :sponsorable_id
+    t.string :sponsorable_type
   end
 
-  create_table :clubs, :force =&gt; true do |t|
+  create_table :subscribers, :force =&gt; true, :id =&gt; false do |t|
+    t.string :nick, :null =&gt; false
     t.string :name
   end
+  add_index :subscribers, :nick, :unique =&gt; true
 
-  create_table :members, :force =&gt; true do |t|
-    t.string :name
+  create_table :tasks, :force =&gt; true do |t|
+    t.datetime :starting
+    t.datetime :ending
   end
 
-  create_table :memberships, :force =&gt; true do |t|
-    t.datetime :joined_on
-    t.integer :club_id, :member_id
-    t.boolean :favourite, :default =&gt; false
-    t.string :type
+  create_table :topics, :force =&gt; true do |t|
+    t.string   :title
+    t.string   :author_name
+    t.string   :author_email_address
+    t.datetime :written_on
+    t.time     :bonus_time
+    t.date     :last_read
+    t.text     :content
+    t.boolean  :approved, :default =&gt; true
+    t.integer  :replies_count, :default =&gt; 0
+    t.integer  :parent_id
+    t.string   :type
   end
 
-  create_table :sponsors, :force =&gt; true do |t|
-    t.integer :club_id
-    t.integer :sponsorable_id
-    t.string :sponsorable_type
+  create_table :taggings, :force =&gt; true do |t|
+    t.column :tag_id, :integer
+    t.column :super_tag_id, :integer
+    t.column :taggable_type, :string
+    t.column :taggable_id, :integer
+  end
+
+  create_table :tags, :force =&gt; true do |t|
+    t.column :name, :string
+    t.column :taggings_count, :integer, :default =&gt; 0
+  end
+
+  create_table :treasures, :force =&gt; true do |t|
+    t.column :name, :string
+    t.column :looter_id, :integer
+    t.column :looter_type, :string
+  end
+
+  create_table :vertices, :force =&gt; true do |t|
+    t.column :label, :string
+  end
+
+  create_table 'warehouse-things', :force =&gt; true do |t|
+    t.integer :value
+  end
+
+  [:circles, :squares, :triangles, :non_poly_ones, :non_poly_twos].each do |t|
+    create_table(t, :force =&gt; true) { }
+  end
+
+  except 'SQLite' do
+    # fk_test_has_fk should be before fk_test_has_pk
+    create_table :fk_test_has_fk, :force =&gt; true do |t|
+      t.integer :fk_id, :null =&gt; false
+    end
+
+    create_table :fk_test_has_pk, :force =&gt; true do |t|
+    end
+
+    execute &quot;ALTER TABLE fk_test_has_fk ADD CONSTRAINT fk_name FOREIGN KEY (#{quote_column_name 'fk_id'}) REFERENCES #{quote_table_name 'fk_test_has_pk'} (#{quote_column_name 'id'})&quot;
   end
 end</diff>
      <filename>activerecord/test/schema/schema.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,6 @@
 ActiveRecord::Schema.define do
 
-  # adapter name is checked because we are under a transition of
-  # moving the sql files under activerecord/test/fixtures/db_definitions
-  # to this file, schema.rb.
-  if adapter_name == &quot;MySQL&quot;
-    Course.connection.create_table :courses, :force =&gt; true do |t|
-      t.column :name, :string, :null =&gt; false
-    end
+  Course.connection.create_table :courses, :force =&gt; true do |t|
+    t.column :name, :string, :null =&gt; false
   end
 end</diff>
      <filename>activerecord/test/schema/schema2.rb</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>activerecord/test/schema/db2.drop.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/db2.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/db22.drop.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/db22.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/firebird.drop.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/firebird.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/firebird2.drop.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/firebird2.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/frontbase.drop.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/frontbase.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/frontbase2.drop.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/frontbase2.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/openbase.drop.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/openbase.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/openbase2.drop.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/openbase2.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/oracle.drop.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/oracle.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/oracle2.drop.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/oracle2.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/postgresql.drop.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/postgresql.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/postgresql2.drop.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/postgresql2.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/sqlite.drop.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/sqlite.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/sqlite2.drop.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/sqlite2.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/sybase.drop.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/sybase.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/sybase2.drop.sql</filename>
    </removed>
    <removed>
      <filename>activerecord/test/schema/sybase2.sql</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>0a94f16b9532894aeb7aed2aec5082dd3b521414</id>
    </parent>
  </parents>
  <author>
    <name>Frederick Cheung</name>
    <email>frederick.cheung@gmail.com</email>
  </author>
  <url>http://github.com/rails/rails/commit/a4fc93c3a9f59dcd7cf56c6ae1cb1fb749f6678b</url>
  <id>a4fc93c3a9f59dcd7cf56c6ae1cb1fb749f6678b</id>
  <committed-date>2008-04-21T18:55:13-07:00</committed-date>
  <authored-date>2008-04-21T03:00:01-07:00</authored-date>
  <message>Use schema.rb for all databases

Move adapter specific schema into their own files

Signed-off-by: Michael Koziarski &lt;michael@koziarski.com&gt;</message>
  <tree>b45689a4b8ab2d55b475986e0d49519906f55c44</tree>
  <committer>
    <name>Michael Koziarski</name>
    <email>michael@koziarski.com</email>
  </committer>
</commit>
