From a5f4bba440d7f9ea47046a0a561d49adf0a1e6d4 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 16 Jun 2021 18:25:58 +0000 Subject: Add latest changes from gitlab-org/gitlab@14-0-stable-ee --- ...dd_index_for_container_registry_access_level.rb | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 db/post_migrate/20210606143426_add_index_for_container_registry_access_level.rb (limited to 'db/post_migrate/20210606143426_add_index_for_container_registry_access_level.rb') diff --git a/db/post_migrate/20210606143426_add_index_for_container_registry_access_level.rb b/db/post_migrate/20210606143426_add_index_for_container_registry_access_level.rb new file mode 100644 index 00000000000..64d37054eb8 --- /dev/null +++ b/db/post_migrate/20210606143426_add_index_for_container_registry_access_level.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +class AddIndexForContainerRegistryAccessLevel < ActiveRecord::Migration[6.1] + include Gitlab::Database::SchemaHelpers + include Gitlab::Database::MigrationHelpers + + disable_ddl_transaction! + + INDEX = 'index_project_features_on_project_id_include_container_registry' + + def up + if index_exists_by_name?('project_features', INDEX) + Gitlab::AppLogger.warn "Index not created because it already exists (this may be due to an aborted migration or similar): table_name: project_features, index_name: #{INDEX}" + return + end + + begin + disable_statement_timeout do + execute "CREATE UNIQUE INDEX CONCURRENTLY #{INDEX} ON project_features " \ + 'USING btree (project_id) INCLUDE (container_registry_access_level)' + end + rescue ActiveRecord::StatementInvalid => ex + raise "The index #{INDEX} couldn't be added: #{ex.message}" + end + + create_comment( + 'INDEX', + INDEX, + 'Included column (container_registry_access_level) improves performance of the ContainerRepository.for_group_and_its_subgroups scope query' + ) + end + + def down + remove_concurrent_index_by_name('project_features', INDEX) + end +end -- cgit v1.2.3