diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-16 21:25:58 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-16 21:25:58 +0300 |
commit | a5f4bba440d7f9ea47046a0a561d49adf0a1e6d4 (patch) | |
tree | fb69158581673816a8cd895f9d352dcb3c678b1e /db/post_migrate/20210606143426_add_index_for_container_registry_access_level.rb | |
parent | d16b2e8639e99961de6ddc93909f3bb5c1445ba1 (diff) |
Add latest changes from gitlab-org/gitlab@14-0-stable-eev14.0.0-rc42
Diffstat (limited to 'db/post_migrate/20210606143426_add_index_for_container_registry_access_level.rb')
-rw-r--r-- | db/post_migrate/20210606143426_add_index_for_container_registry_access_level.rb | 36 |
1 files changed, 36 insertions, 0 deletions
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 |