diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-09 00:06:06 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-09 00:06:06 +0000 |
commit | 869182cab0867d582e469f329a6f58d13f877683 (patch) | |
tree | b98d8834894848f5ce845b7efc84681d51083695 /db | |
parent | a82d0c740b338ad981321a3111b731ad78364ba1 (diff) | |
download | gitlab-ce-869182cab0867d582e469f329a6f58d13f877683.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'db')
-rw-r--r-- | db/post_migrate/20190827102026_migrate_code_owner_approval_status_to_protected_branches_in_batches.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/db/post_migrate/20190827102026_migrate_code_owner_approval_status_to_protected_branches_in_batches.rb b/db/post_migrate/20190827102026_migrate_code_owner_approval_status_to_protected_branches_in_batches.rb new file mode 100644 index 00000000000..b109f582909 --- /dev/null +++ b/db/post_migrate/20190827102026_migrate_code_owner_approval_status_to_protected_branches_in_batches.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +class MigrateCodeOwnerApprovalStatusToProtectedBranchesInBatches < ActiveRecord::Migration[5.2] + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + DOWNTIME = false + BATCH_SIZE = 200 + + class Project < ActiveRecord::Base + include EachBatch + + self.table_name = 'projects' + self.inheritance_column = :_type_disabled + + has_many :protected_branches + end + + class ProtectedBranch < ActiveRecord::Base + include EachBatch + + self.table_name = 'protected_branches' + self.inheritance_column = :_type_disabled + + belongs_to :project + end + + def up + add_concurrent_index :projects, :id, name: "temp_active_projects_with_prot_branches", where: 'archived = false and pending_delete = false and merge_requests_require_code_owner_approval = true' + + ProtectedBranch + .joins(:project) + .where(projects: { archived: false, pending_delete: false, merge_requests_require_code_owner_approval: true }) + .each_batch(of: BATCH_SIZE) do |batch| + batch.update_all(code_owner_approval_required: true) + end + + remove_concurrent_index_by_name(:projects, "temp_active_projects_with_prot_branches") + end + + def down + # noop + # + end +end |