From 4afda5444a3cc864cb0f9a4f59493022d8a5e080 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 27 Nov 2018 13:56:25 +0100 Subject: [PATCH] Change identities id column to a bigint (#9371) * 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 | 4 +-- .../20181127130500_identity_id_to_bigint.rb | 27 +++++++++++++++++++ db/schema.rb | 8 +++--- 3 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 db/migrate/20181127130500_identity_id_to_bigint.rb diff --git a/app/models/identity.rb b/app/models/identity.rb index a5e0c09ec..8cc65aef4 100644 --- a/app/models/identity.rb +++ b/app/models/identity.rb @@ -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 index 000000000..5f388aca7 --- /dev/null +++ b/db/migrate/20181127130500_identity_id_to_bigint.rb @@ -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 diff --git a/db/schema.rb b/db/schema.rb index b0f14954f..d67521442 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -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