summaryrefslogtreecommitdiff
path: root/db/migrate
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-02-15 08:58:20 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-02-15 08:58:20 +0000
commit59c9ff627603da03f6a7c330d57a2c765b3c24a3 (patch)
treedd8f3a2fbc9564818a77d2d8798fcc464d220e8e /db/migrate
parent30b4659f2c485885324fd8d67fcd92a2939310a3 (diff)
downloadgitlab-ce-59c9ff627603da03f6a7c330d57a2c765b3c24a3.tar.gz
Add latest changes from gitlab-org/gitlab@14-7-stable-ee
Diffstat (limited to 'db/migrate')
-rw-r--r--db/migrate/20220203091304_fix_unique_packages_index_excluding_pending_destruction_status.rb28
1 files changed, 28 insertions, 0 deletions
diff --git a/db/migrate/20220203091304_fix_unique_packages_index_excluding_pending_destruction_status.rb b/db/migrate/20220203091304_fix_unique_packages_index_excluding_pending_destruction_status.rb
new file mode 100644
index 00000000000..c30d8de23db
--- /dev/null
+++ b/db/migrate/20220203091304_fix_unique_packages_index_excluding_pending_destruction_status.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+class FixUniquePackagesIndexExcludingPendingDestructionStatus < Gitlab::Database::Migration[1.0]
+ disable_ddl_transaction!
+
+ GO_UNIQUE_INDEX_NAME = 'index_packages_on_project_id_name_version_unique_when_golang'
+ GENERIC_UNIQUE_INDEX_NAME = 'index_packages_on_project_id_name_version_unique_when_generic'
+ HELM_UNIQUE_INDEX_NAME = 'index_packages_on_project_id_name_version_unique_when_helm'
+
+ NEW_GO_UNIQUE_INDEX_NAME = 'idx_packages_on_project_id_name_version_unique_when_golang'
+ NEW_GENERIC_UNIQUE_INDEX_NAME = 'idx_packages_on_project_id_name_version_unique_when_generic'
+ NEW_HELM_UNIQUE_INDEX_NAME = 'idx_packages_on_project_id_name_version_unique_when_helm'
+
+ def up
+ add_concurrent_index :packages_packages, [:project_id, :name, :version], unique: true, name: NEW_GO_UNIQUE_INDEX_NAME, where: 'package_type = 8 AND status != 4'
+ add_concurrent_index :packages_packages, [:project_id, :name, :version], unique: true, name: NEW_GENERIC_UNIQUE_INDEX_NAME, where: 'package_type = 7 AND status != 4'
+ add_concurrent_index :packages_packages, [:project_id, :name, :version], unique: true, name: NEW_HELM_UNIQUE_INDEX_NAME, where: 'package_type = 11 AND status != 4'
+
+ remove_concurrent_index_by_name :packages_packages, GO_UNIQUE_INDEX_NAME
+ remove_concurrent_index_by_name :packages_packages, GENERIC_UNIQUE_INDEX_NAME
+ remove_concurrent_index_by_name :packages_packages, HELM_UNIQUE_INDEX_NAME
+ end
+
+ def down
+ # no-op
+ # We can't guarantee that the old index can be recreated since it targets a set larger that the new index.
+ end
+end