]> cat aescling's git repositories - mastodon.git/commitdiff
Change identities id column to a bigint (#9371)
authorEugen Rochko <eugen@zeonfederated.com>
Tue, 27 Nov 2018 12:56:25 +0000 (13:56 +0100)
committerGitHub <noreply@github.com>
Tue, 27 Nov 2018 12:56:25 +0000 (13:56 +0100)
* fix: change Identity's id column to a bigint

This appears to be the last model created using a 5.0 migration,
where column types defaulted to `integer` rather than `bigint`.

This migration changes the column type to match that of all of the
other ID columns.

* Change user_id column in identities to bigint and fix down-migration

app/models/identity.rb
db/migrate/20181127130500_identity_id_to_bigint.rb [new file with mode: 0644]
db/schema.rb

index a5e0c09ec14d416afdc4b2e1584f0f01890b800c..8cc65aef413d1330a5c338e64d11287a19a2e4c1 100644 (file)
@@ -3,12 +3,12 @@
 #
 # Table name: identities
 #
-#  id         :integer          not null, primary key
-#  user_id    :integer
 #  provider   :string           default(""), not null
 #  uid        :string           default(""), not null
 #  created_at :datetime         not null
 #  updated_at :datetime         not null
+#  id         :bigint(8)        not null, primary key
+#  user_id    :bigint(8)
 #
 
 class Identity < ApplicationRecord
diff --git a/db/migrate/20181127130500_identity_id_to_bigint.rb b/db/migrate/20181127130500_identity_id_to_bigint.rb
new file mode 100644 (file)
index 0000000..5f388ac
--- /dev/null
@@ -0,0 +1,27 @@
+require Rails.root.join('lib', 'mastodon', 'migration_helpers')
+
+class IdentityIdToBigint < ActiveRecord::Migration[5.2]
+  include Mastodon::MigrationHelpers
+
+  disable_ddl_transaction!
+
+  def up
+    safety_assured do
+      change_column_type_concurrently :identities, :id, :bigint
+      cleanup_concurrent_column_type_change :identities, :id
+
+      change_column_type_concurrently :identities, :user_id, :bigint
+      cleanup_concurrent_column_type_change :identities, :user_id
+    end
+  end
+
+  def down
+    safety_assured do
+      change_column_type_concurrently :identities, :id, :integer
+      cleanup_concurrent_column_type_change :identities, :id
+
+      change_column_type_concurrently :identities, :user_id, :integer
+      cleanup_concurrent_column_type_change :identities, :user_id
+    end
+  end
+end
index b0f14954f89211680ebb088b66b3d92e208e74fc..d67521442552b05cdf81ddc454e573bac95465b5 100644 (file)
@@ -10,7 +10,7 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema.define(version: 2018_11_16_184611) do
+ActiveRecord::Schema.define(version: 2018_11_27_130500) do
 
   # These are extensions that must be enabled in order to support this database
   enable_extension "plpgsql"
@@ -235,12 +235,12 @@ ActiveRecord::Schema.define(version: 2018_11_16_184611) do
     t.index ["target_account_id"], name: "index_follows_on_target_account_id"
   end
 
-  create_table "identities", id: :serial, force: :cascade do |t|
-    t.integer "user_id"
+  create_table "identities", force: :cascade do |t|
     t.string "provider", default: "", null: false
     t.string "uid", default: "", null: false
     t.datetime "created_at", null: false
     t.datetime "updated_at", null: false
+    t.bigint "user_id"
     t.index ["user_id"], name: "index_identities_on_user_id"
   end
 
@@ -651,7 +651,7 @@ ActiveRecord::Schema.define(version: 2018_11_16_184611) do
   add_foreign_key "follow_requests", "accounts", name: "fk_76d644b0e7", on_delete: :cascade
   add_foreign_key "follows", "accounts", column: "target_account_id", name: "fk_745ca29eac", on_delete: :cascade
   add_foreign_key "follows", "accounts", name: "fk_32ed1b5560", on_delete: :cascade
-  add_foreign_key "identities", "users", on_delete: :cascade
+  add_foreign_key "identities", "users", name: "fk_bea040f377", on_delete: :cascade
   add_foreign_key "imports", "accounts", name: "fk_6db1b6e408", on_delete: :cascade
   add_foreign_key "invites", "users", on_delete: :cascade
   add_foreign_key "list_accounts", "accounts", on_delete: :cascade