diff options
author | Yorick Peterse <yorickpeterse@gmail.com> | 2017-12-22 13:13:48 +0000 |
---|---|---|
committer | Yorick Peterse <yorickpeterse@gmail.com> | 2017-12-22 13:13:48 +0000 |
commit | 299e04e318728d4ee5857379f8fb350c944a0b4e (patch) | |
tree | b9036df9d5d2e78bf329fc4293cca39821049145 | |
parent | 38fe3418d891fa892d777d3d44717eb3e0c106c7 (diff) | |
parent | 680ebf449bc5700f827559660f28fb4e47022828 (diff) | |
download | gitlab-ce-299e04e318728d4ee5857379f8fb350c944a0b4e.tar.gz |
Merge branch 'index-namespaces-lower-name' into 'master'
Add index on namespaces lower(name) for UsersController#exists
Closes #41340
See merge request gitlab-org/gitlab-ce!16059
-rw-r--r-- | changelogs/unreleased/index-namespaces-lower-name.yml | 5 | ||||
-rw-r--r-- | db/migrate/20171220191323_add_index_on_namespaces_lower_name.rb | 30 | ||||
-rw-r--r-- | db/schema.rb | 2 | ||||
-rw-r--r-- | lib/tasks/migrate/setup_postgresql.rake | 2 |
4 files changed, 38 insertions, 1 deletions
diff --git a/changelogs/unreleased/index-namespaces-lower-name.yml b/changelogs/unreleased/index-namespaces-lower-name.yml new file mode 100644 index 00000000000..ef08b6d6755 --- /dev/null +++ b/changelogs/unreleased/index-namespaces-lower-name.yml @@ -0,0 +1,5 @@ +--- +title: Add index on namespaces lower(name) for UsersController#exists +merge_request: +author: +type: performance diff --git a/db/migrate/20171220191323_add_index_on_namespaces_lower_name.rb b/db/migrate/20171220191323_add_index_on_namespaces_lower_name.rb new file mode 100644 index 00000000000..7cf1d0cec68 --- /dev/null +++ b/db/migrate/20171220191323_add_index_on_namespaces_lower_name.rb @@ -0,0 +1,30 @@ +class AddIndexOnNamespacesLowerName < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + DOWNTIME = false + INDEX_NAME = 'index_on_namespaces_lower_name' + + disable_ddl_transaction! + + def up + return unless Gitlab::Database.postgresql? + + disable_statement_timeout + if Gitlab::Database.version.to_f >= 9.5 + # Allow us to hot-patch the index manually ahead of the migration + execute "CREATE INDEX CONCURRENTLY IF NOT EXISTS #{INDEX_NAME} ON namespaces (lower(name));" + else + execute "CREATE INDEX CONCURRENTLY #{INDEX_NAME} ON namespaces (lower(name));" + end + end + + def down + return unless Gitlab::Database.postgresql? + + disable_statement_timeout + if Gitlab::Database.version.to_f >= 9.2 + execute "DROP INDEX CONCURRENTLY IF EXISTS #{INDEX_NAME};" + else + execute "DROP INDEX IF EXISTS #{INDEX_NAME};" + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 2b20628bd53..81b594cd0c1 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20171219121201) do +ActiveRecord::Schema.define(version: 20171220191323) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" diff --git a/lib/tasks/migrate/setup_postgresql.rake b/lib/tasks/migrate/setup_postgresql.rake index 9cc986535e1..c9e3eed82f2 100644 --- a/lib/tasks/migrate/setup_postgresql.rake +++ b/lib/tasks/migrate/setup_postgresql.rake @@ -6,6 +6,7 @@ require Rails.root.join('db/migrate/20161212142807_add_lower_path_index_to_route require Rails.root.join('db/migrate/20170317203554_index_routes_path_for_like') require Rails.root.join('db/migrate/20170724214302_add_lower_path_index_to_redirect_routes') require Rails.root.join('db/migrate/20170503185032_index_redirect_routes_path_for_like') +require Rails.root.join('db/migrate/20171220191323_add_index_on_namespaces_lower_name.rb') desc 'GitLab | Sets up PostgreSQL' task setup_postgresql: :environment do @@ -15,4 +16,5 @@ task setup_postgresql: :environment do IndexRoutesPathForLike.new.up AddLowerPathIndexToRedirectRoutes.new.up IndexRedirectRoutesPathForLike.new.up + AddIndexOnNamespacesLowerName.new.up end |