diff options
Diffstat (limited to 'db/migrate/20161017125927_add_unique_index_to_labels.rb')
-rw-r--r-- | db/migrate/20161017125927_add_unique_index_to_labels.rb | 33 |
1 files changed, 0 insertions, 33 deletions
diff --git a/db/migrate/20161017125927_add_unique_index_to_labels.rb b/db/migrate/20161017125927_add_unique_index_to_labels.rb deleted file mode 100644 index b5326789f52..00000000000 --- a/db/migrate/20161017125927_add_unique_index_to_labels.rb +++ /dev/null @@ -1,33 +0,0 @@ -# rubocop:disable RemoveIndex -class AddUniqueIndexToLabels < ActiveRecord::Migration[4.2] - include Gitlab::Database::MigrationHelpers - - DOWNTIME = true - DOWNTIME_REASON = 'This migration removes duplicated labels.' - - disable_ddl_transaction! - - def up - select_all('SELECT title, project_id, COUNT(id) as cnt FROM labels GROUP BY project_id, title HAVING COUNT(id) > 1').each do |label| - label_title = quote_string(label['title']) - duplicated_ids = select_all("SELECT id FROM labels WHERE project_id = #{label['project_id']} AND title = '#{label_title}' ORDER BY id ASC").map { |label| label['id'] } - label_id = duplicated_ids.first - duplicated_ids.delete(label_id) - - execute("UPDATE label_links SET label_id = #{label_id} WHERE label_id IN(#{duplicated_ids.join(",")})") - execute("DELETE FROM labels WHERE id IN(#{duplicated_ids.join(",")})") - end - - remove_index :labels, column: :project_id if index_exists?(:labels, :project_id) - remove_index :labels, column: :title if index_exists?(:labels, :title) - - add_concurrent_index :labels, [:group_id, :project_id, :title], unique: true - end - - def down - remove_index :labels, column: [:group_id, :project_id, :title] if index_exists?(:labels, [:group_id, :project_id, :title], unique: true) - - add_concurrent_index :labels, :project_id - add_concurrent_index :labels, :title - end -end |