From 999761284de055ec9b48a9d0c02ad019b76cf83d Mon Sep 17 00:00:00 2001 From: Valery Sizov Date: Fri, 8 May 2015 08:27:38 +0000 Subject: Merge branch 'conditional-delete-taggings-indices' into 'master' Conditionally remove indices that may not exist in pre-GitLab v6.7 installations In pre-GitLab v6.7 installations, the `tagging` indices were directly added to the init schema and not added in a migration. Anyone using this older DB schema may not have these indicies, so only remove them if they are there. Closes #1593 See merge request !626 --- ...8_add_missing_unique_indices.acts_as_taggable_on_engine.rb | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/db/migrate/20150425164648_add_missing_unique_indices.acts_as_taggable_on_engine.rb b/db/migrate/20150425164648_add_missing_unique_indices.acts_as_taggable_on_engine.rb index 4ca676f6c72..c1b78681519 100644 --- a/db/migrate/20150425164648_add_missing_unique_indices.acts_as_taggable_on_engine.rb +++ b/db/migrate/20150425164648_add_missing_unique_indices.acts_as_taggable_on_engine.rb @@ -3,8 +3,15 @@ class AddMissingUniqueIndices < ActiveRecord::Migration def self.up add_index :tags, :name, unique: true - remove_index :taggings, :tag_id - remove_index :taggings, [:taggable_id, :taggable_type, :context] + # pre-GitLab v6.7.0 may not have these indices since there were no + # migrations for them + if index_exists?(:taggings, :tag_id) + remove_index :taggings, :tag_id + end + + if index_exists?(:taggings, [:taggable_id, :taggable_type, :context]) + remove_index :taggings, [:taggable_id, :taggable_type, :context] + end add_index :taggings, [:tag_id, :taggable_id, :taggable_type, :context, :tagger_id, :tagger_type], unique: true, name: 'taggings_idx' -- cgit v1.2.1