OSDN Git Service

Fix merge_request_diffs migrations for postgresql
authorskv-headless <skv-headless@yandex.ru>
Mon, 27 Jan 2014 12:37:00 +0000 (16:37 +0400)
committerskv-headless <skv-headless@yandex.ru>
Mon, 27 Jan 2014 14:50:53 +0000 (18:50 +0400)
db/migrate/20140122114406_migrate_mr_diffs.rb
db/migrate/20140122122549_remove_m_rdiff_fields.rb

index 2cc5faa..1595e2b 100644 (file)
@@ -1,8 +1,6 @@
 class MigrateMrDiffs < ActiveRecord::Migration
   def self.up
-    execute "INSERT INTO merge_request_diffs ( merge_request_id ) SELECT id FROM merge_requests"
-    execute "UPDATE merge_requests mr, merge_request_diffs md SET md.st_commits = mr.st_commits WHERE md.merge_request_id = mr.id"
-    execute "UPDATE merge_requests mr, merge_request_diffs md SET md.st_diffs = mr.st_diffs WHERE md.merge_request_id = mr.id"
+    execute "INSERT INTO merge_request_diffs ( merge_request_id, st_commits, st_diffs ) SELECT id, st_commits, st_diffs FROM merge_requests"
   end
 
   def self.down
index c27e649..8f863d8 100644 (file)
@@ -7,7 +7,15 @@ class RemoveMRdiffFields < ActiveRecord::Migration
   def down
     add_column :merge_requests, :st_commits, :text, null: true, limit: 2147483647
     add_column :merge_requests, :st_diffs, :text, null: true, limit: 2147483647
-    execute "UPDATE merge_requests mr, merge_request_diffs md SET mr.st_commits = md.st_commits WHERE md.merge_request_id = mr.id"
-    execute "UPDATE merge_requests mr, merge_request_diffs md SET mr.st_diffs = md.st_diffs WHERE md.merge_request_id = mr.id"
+
+    if ActiveRecord::Base.connection.adapter_name == 'PostgreSQL'
+      execute "UPDATE merge_requests mr
+              SET (st_commits, st_diffs) = (md.st_commits, md.st_diffs)
+              FROM merge_request_diffs md
+              WHERE md.merge_request_id = mr.id"
+    else
+      execute "UPDATE merge_requests mr, merge_request_diffs md SET mr.st_commits = md.st_commits WHERE md.merge_request_id = mr.id"
+      execute "UPDATE merge_requests mr, merge_request_diffs md SET mr.st_diffs = md.st_diffs WHERE md.merge_request_id = mr.id"
+    end
   end
 end