summaryrefslogtreecommitdiff
path: root/db/post_migrate/20190911251732_sync_issuables_state_id.rb
diff options
context:
space:
mode:
Diffstat (limited to 'db/post_migrate/20190911251732_sync_issuables_state_id.rb')
-rw-r--r--db/post_migrate/20190911251732_sync_issuables_state_id.rb81
1 files changed, 0 insertions, 81 deletions
diff --git a/db/post_migrate/20190911251732_sync_issuables_state_id.rb b/db/post_migrate/20190911251732_sync_issuables_state_id.rb
deleted file mode 100644
index 031837122fb..00000000000
--- a/db/post_migrate/20190911251732_sync_issuables_state_id.rb
+++ /dev/null
@@ -1,81 +0,0 @@
-# frozen_string_literal: true
-
-# Sync remaining records for issues/merge_requests tables where state_id
-# is still null.
-# For more information check: https://gitlab.com/gitlab-org/gitlab/issues/26823
-# It creates a temporary index before performing the UPDATES to sync values.
-#
-# In 09-11-2019 we have the following numbers for records with state_id == nil:
-#
-# 1348 issues - default batch size for each update 67
-# 10247 merge requests - default batch size for each update 511
-
-class SyncIssuablesStateId < ActiveRecord::Migration[5.2]
- include Gitlab::Database::MigrationHelpers
-
- DOWNTIME = false
-
- disable_ddl_transaction!
-
- def up
- %i(issues merge_requests).each do |table|
- temp_index_name = index_name_for(table)
-
- add_concurrent_index(
- table,
- 'id',
- name: temp_index_name,
- where: 'state_id IS NULL'
- )
-
- update_value = update_condition_for(table)
-
- update_column_in_batches(table, :state_id, update_value) do |table, query|
- query.where(table[:state_id].eq(nil))
- end
- ensure
- remove_concurrent_index_by_name(table, temp_index_name)
- end
- end
-
- def down
- # NO OP
- end
-
- def update_condition_for(table)
- value_expresson =
- if table == :issues
- issues_state_id_condition
- else
- merge_requests_state_id_condition
- end
-
- Arel.sql(value_expresson)
- end
-
- def index_name_for(table)
- "idx_tmp_on_#{table}_where_state_id_is_null"
- end
-
- def issues_state_id_condition
- <<~SQL
- CASE state
- WHEN 'opened' THEN 1
- WHEN 'closed' THEN 2
- ELSE 2
- END
- SQL
- end
-
- def merge_requests_state_id_condition
- <<~SQL
- CASE state
- WHEN 'opened' THEN 1
- WHEN 'closed' THEN 2
- WHEN 'merged' THEN 3
- WHEN 'locked' THEN 4
- ELSE 2
- END
- SQL
- end
-end