summaryrefslogtreecommitdiff
path: root/db/migrate
diff options
context:
space:
mode:
authorMichael Kozono <mkozono@gmail.com>2017-07-24 15:09:55 -0700
committerMichael Kozono <mkozono@gmail.com>2017-07-25 09:22:30 -0700
commit6263ecd3a42312a62957674665e35d3590192123 (patch)
tree8f1f7a3448138a376b151b3dd8e2d1a8ed3266d1 /db/migrate
parent1a3f550ba8de6b837168f092651f71b1be38a3ad (diff)
downloadgitlab-ce-6263ecd3a42312a62957674665e35d3590192123.tar.gz
Add lower path index to redirect_routesmk-add-lower-path-index-to-redirect-routes
Diffstat (limited to 'db/migrate')
-rw-r--r--db/migrate/20170724214302_add_lower_path_index_to_redirect_routes.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/db/migrate/20170724214302_add_lower_path_index_to_redirect_routes.rb b/db/migrate/20170724214302_add_lower_path_index_to_redirect_routes.rb
new file mode 100644
index 00000000000..db60c2087b9
--- /dev/null
+++ b/db/migrate/20170724214302_add_lower_path_index_to_redirect_routes.rb
@@ -0,0 +1,34 @@
+# See http://doc.gitlab.com/ce/development/migration_style_guide.html
+# for more information on how to write migrations for GitLab.
+
+class AddLowerPathIndexToRedirectRoutes < ActiveRecord::Migration
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+ INDEX_NAME = 'index_on_redirect_routes_lower_path'
+
+ disable_ddl_transaction!
+
+ def up
+ return unless Gitlab::Database.postgresql?
+
+ execute "CREATE INDEX CONCURRENTLY #{INDEX_NAME} ON redirect_routes (LOWER(path));"
+ end
+
+ def down
+ return unless Gitlab::Database.postgresql?
+
+ # Why not use remove_concurrent_index_by_name?
+ #
+ # `index_exists?` doesn't work on this index. Perhaps this is related to the
+ # fact that the index doesn't show up in the schema. And apparently it isn't
+ # trivial to write a query that checks for an index. BUT there is a
+ # convenient `IF EXISTS` parameter for `DROP INDEX`.
+ if supports_drop_index_concurrently?
+ disable_statement_timeout
+ execute "DROP INDEX CONCURRENTLY IF EXISTS #{INDEX_NAME};"
+ else
+ execute "DROP INDEX IF EXISTS #{INDEX_NAME};"
+ end
+ end
+end