Update LFK script to generate constant for migration
What does this MR do and why?
Update LFK script to generate constant for migration
Screenshots or screen recordings
Migration generated and ran successfully
Writing db/post_migrate/20230802101627_remove_users_members_user_id_fk.rb
>> bin/rails db:migrate
main: == [advisory_lock_connection] object_id: 224400, pg_backend_pid: 92276
main: == 20230802101627 RemoveUsersMembersUserIdFk: migrating =======================
main: -- transaction_open?()
main: -> 0.0000s
main: -- transaction_open?()
main: -> 0.0000s
main: -- execute("LOCK TABLE users, members IN ACCESS EXCLUSIVE MODE")
main: -> 0.0004s
main: -- remove_foreign_key(:members, :users, {:name=>"fk_2e88fb7ce9"})
main: -> 0.0025s
main: == 20230802101627 RemoveUsersMembersUserIdFk: migrated (0.0320s) ==============
main: == [advisory_lock_connection] object_id: 224400, pg_backend_pid: 92276
ci: == [advisory_lock_connection] object_id: 224620, pg_backend_pid: 92278
ci: == 20230802101627 RemoveUsersMembersUserIdFk: migrating =======================
ci: -- transaction_open?()
ci: -> 0.0000s
ci: -- transaction_open?()
ci: -> 0.0000s
ci: -- execute("LOCK TABLE users, members IN ACCESS EXCLUSIVE MODE")
ci: -> 0.0004s
ci: -- remove_foreign_key(:members, :users, {:name=>"fk_2e88fb7ce9"})
ci: -> 0.0025s
ci: == 20230802101627 RemoveUsersMembersUserIdFk: migrated (0.0176s) ==============
ci: == [advisory_lock_connection] object_id: 224620, pg_backend_pid: 92278
Adding test to spec/models/member_spec.rb...
Updating spec/lib/gitlab/database/no_cross_db_foreign_keys_spec.rb...
Nothing changed.
The following files have been generated/modified:
/Users/tkuah/code/gdk-ee/gitlab/config/gitlab_loose_foreign_keys.yml
db/post_migrate/20230802101627_remove_users_members_user_id_fk.rb
spec/models/member_spec.rb
(arm64) tkgl2:gitlab tkuah$ git diff db/post_migrate/
(arm64) tkgl2:gitlab tkuah$ git s
On branch use_constant_migration_scripts_lfk
Your branch is up to date with 'origin/use_constant_migration_scripts_lfk'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: config/gitlab_loose_foreign_keys.yml
modified: db/structure.sql
modified: spec/models/member_spec.rb
Untracked files:
(use "git add <file>..." to include in what will be committed)
db/post_migrate/20230802101627_remove_users_members_user_id_fk.rb
db/schema_migrations/20230802101627
no changes added to commit (use "git add" and/or "git commit -a")
(arm64) tkgl2:gitlab tkuah$ cat db/post_migrate/20230802101627_remove_users_members_user_id_fk.rb
# frozen_string_literal: true
class RemoveUsersMembersUserIdFk < Gitlab::Database::Migration[2.1]
disable_ddl_transaction!
FOREIGN_KEY_NAME = "fk_2e88fb7ce9"
def up
return unless foreign_key_exists?(:members, :users, name: FOREIGN_KEY_NAME)
with_lock_retries do
remove_foreign_key_if_exists(:members, :users,
name: FOREIGN_KEY_NAME, reverse_lock_order: true)
end
end
def down
add_concurrent_foreign_key(:members, :users,
name: FOREIGN_KEY_NAME, column: :user_id,
target_column: :id, on_delete: :cascade)
end
end
How to set up and validate locally
- Run
scripts/decomposition/generate-loose-foreign-key members user_id
to test this out
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.
Edited by Thong Kuah