From cf865331a3b6c8fa7e6bb541846544f98b6c8bb0 Mon Sep 17 00:00:00 2001
From: Ryuta Kamizono <kamipo@gmail.com>
Date: Mon, 9 Jan 2017 22:15:41 +0900
Subject: Should test uuid legacy migration without `supports_pgcrypto_uuid?`

---
 .../test/cases/adapters/postgresql/uuid_test.rb    | 36 ++++++++++------------
 1 file changed, 17 insertions(+), 19 deletions(-)

(limited to 'activerecord')

diff --git a/activerecord/test/cases/adapters/postgresql/uuid_test.rb b/activerecord/test/cases/adapters/postgresql/uuid_test.rb
index f34d50e25c..29052126d2 100644
--- a/activerecord/test/cases/adapters/postgresql/uuid_test.rb
+++ b/activerecord/test/cases/adapters/postgresql/uuid_test.rb
@@ -234,25 +234,23 @@ class PostgresqlUUIDGenerationTest < ActiveRecord::PostgreSQLTestCase
       end
     end
 
-    if ActiveRecord::Base.connection.supports_pgcrypto_uuid?
-      def test_schema_dumper_for_uuid_primary_key_default_in_legacy_migration
-        @verbose_was = ActiveRecord::Migration.verbose
-        ActiveRecord::Migration.verbose = false
-
-        migration = Class.new(ActiveRecord::Migration[4.2]) do
-          def version; 101 end
-          def migrate(x)
-            create_table("pg_uuids_4", id: :uuid)
-          end
-        end.new
-        ActiveRecord::Migrator.new(:up, [migration]).migrate
-
-        schema = dump_table_schema "pg_uuids_4"
-        assert_match(/\bcreate_table "pg_uuids_4", id: :uuid, default: -> { "uuid_generate_v4\(\)" }/, schema)
-      ensure
-        drop_table "pg_uuids_4"
-        ActiveRecord::Migration.verbose = @verbose_was
-      end
+    def test_schema_dumper_for_uuid_primary_key_default_in_legacy_migration
+      @verbose_was = ActiveRecord::Migration.verbose
+      ActiveRecord::Migration.verbose = false
+
+      migration = Class.new(ActiveRecord::Migration[5.0]) do
+        def version; 101 end
+        def migrate(x)
+          create_table("pg_uuids_4", id: :uuid)
+        end
+      end.new
+      ActiveRecord::Migrator.new(:up, [migration]).migrate
+
+      schema = dump_table_schema "pg_uuids_4"
+      assert_match(/\bcreate_table "pg_uuids_4", id: :uuid, default: -> { "uuid_generate_v4\(\)" }/, schema)
+    ensure
+      drop_table "pg_uuids_4"
+      ActiveRecord::Migration.verbose = @verbose_was
     end
   end
 end
-- 
cgit v1.2.3


From c352f12cbb75636380b06917616e14029f339189 Mon Sep 17 00:00:00 2001
From: Ryuta Kamizono <kamipo@gmail.com>
Date: Mon, 9 Jan 2017 22:29:44 +0900
Subject: Fix UUID primary key with default nil in legacy migration

UUID primary key with no default value feature (#10404, #18206) was lost
in legacy migration caused by #25395 got merged. Restore the feature
again in legacy migration.
---
 .../lib/active_record/migration/compatibility.rb      |  2 +-
 .../test/cases/adapters/postgresql/uuid_test.rb       | 19 +++++++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)

(limited to 'activerecord')

diff --git a/activerecord/lib/active_record/migration/compatibility.rb b/activerecord/lib/active_record/migration/compatibility.rb
index 2904634eb7..a5d8893634 100644
--- a/activerecord/lib/active_record/migration/compatibility.rb
+++ b/activerecord/lib/active_record/migration/compatibility.rb
@@ -16,7 +16,7 @@ module ActiveRecord
       class V5_0 < V5_1
         def create_table(table_name, options = {})
           if adapter_name == "PostgreSQL"
-            if options[:id] == :uuid && !options[:default]
+            if options[:id] == :uuid && !options.key?(:default)
               options[:default] = "uuid_generate_v4()"
             end
           end
diff --git a/activerecord/test/cases/adapters/postgresql/uuid_test.rb b/activerecord/test/cases/adapters/postgresql/uuid_test.rb
index 29052126d2..4655cd1d20 100644
--- a/activerecord/test/cases/adapters/postgresql/uuid_test.rb
+++ b/activerecord/test/cases/adapters/postgresql/uuid_test.rb
@@ -283,6 +283,25 @@ class PostgresqlUUIDTestNilDefault < ActiveRecord::PostgreSQLTestCase
       schema = dump_table_schema "pg_uuids"
       assert_match(/\bcreate_table "pg_uuids", id: :uuid, default: nil/, schema)
     end
+
+    def test_schema_dumper_for_uuid_primary_key_with_default_nil_in_legacy_migration
+      @verbose_was = ActiveRecord::Migration.verbose
+      ActiveRecord::Migration.verbose = false
+
+      migration = Class.new(ActiveRecord::Migration[5.0]) do
+        def version; 101 end
+        def migrate(x)
+          create_table("pg_uuids_4", id: :uuid, default: nil)
+        end
+      end.new
+      ActiveRecord::Migrator.new(:up, [migration]).migrate
+
+      schema = dump_table_schema "pg_uuids_4"
+      assert_match(/\bcreate_table "pg_uuids_4", id: :uuid, default: nil/, schema)
+    ensure
+      drop_table "pg_uuids_4"
+      ActiveRecord::Migration.verbose = @verbose_was
+    end
   end
 end
 
-- 
cgit v1.2.3