diff --git a/db/post_migrate/20231204090310_add_unique_index_id_partition_id_to_ci_job_artifact.rb b/db/post_migrate/20231204090310_add_unique_index_id_partition_id_to_ci_job_artifact.rb new file mode 100644 index 0000000000000000000000000000000000000000..9d6aef69877572792ff4418882917ade90d03031 --- /dev/null +++ b/db/post_migrate/20231204090310_add_unique_index_id_partition_id_to_ci_job_artifact.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class AddUniqueIndexIdPartitionIdToCiJobArtifact < Gitlab::Database::Migration[2.2] + milestone '16.7' + disable_ddl_transaction! + TABLE_NAME = :ci_job_artifacts + INDEX_NAME = :index_ci_job_artifacts_on_id_partition_id_unique + + def up + add_concurrent_index(TABLE_NAME, %i[id partition_id], unique: true, name: INDEX_NAME) + end + + def down + remove_concurrent_index_by_name(TABLE_NAME, INDEX_NAME) + end +end diff --git a/db/post_migrate/20231204090413_add_unique_index_job_id_filte_type_partition_id_to_ci_job_artifact.rb b/db/post_migrate/20231204090413_add_unique_index_job_id_filte_type_partition_id_to_ci_job_artifact.rb new file mode 100644 index 0000000000000000000000000000000000000000..ad02456b1b9defccfcd92978da3de50446c9dcbb --- /dev/null +++ b/db/post_migrate/20231204090413_add_unique_index_job_id_filte_type_partition_id_to_ci_job_artifact.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class AddUniqueIndexJobIdFilteTypePartitionIdToCiJobArtifact < Gitlab::Database::Migration[2.2] + milestone '16.7' + disable_ddl_transaction! + TABLE_NAME = :ci_job_artifacts + INDEX_NAME = :idx_ci_job_artifacts_on_job_id_file_type_and_partition_id_uniq + + def up + add_concurrent_index(TABLE_NAME, %i[job_id file_type partition_id], unique: true, name: INDEX_NAME) + end + + def down + remove_concurrent_index_by_name(TABLE_NAME, INDEX_NAME) + end +end diff --git a/db/schema_migrations/20231204090310 b/db/schema_migrations/20231204090310 new file mode 100644 index 0000000000000000000000000000000000000000..665a35d90e12da907383f2976278ac349cb46883 --- /dev/null +++ b/db/schema_migrations/20231204090310 @@ -0,0 +1 @@ +eae9f28293f6d4de373d6f78c8c1995369ceb91cc922aa63b590c37a289523a1 \ No newline at end of file diff --git a/db/schema_migrations/20231204090413 b/db/schema_migrations/20231204090413 new file mode 100644 index 0000000000000000000000000000000000000000..6f9dd659329d0e020728101332cb38c1c808a86f --- /dev/null +++ b/db/schema_migrations/20231204090413 @@ -0,0 +1 @@ +97d2e9828fd963ca329ba63970ee3c52e733555aa2a42bf444a0bc9243b1b7a1 \ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index 82ebc8d058243a797c3f561e52a54ff84881db5b..242c3eb65b8e3217c28bb79dbb172eab5e88f3e1 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -31384,6 +31384,8 @@ CREATE INDEX idx_award_emoji_on_user_emoji_name_awardable_type_awardable_id ON a CREATE INDEX idx_build_artifacts_size_refreshes_state_updated_at ON project_build_artifacts_size_refreshes USING btree (state, updated_at); +CREATE UNIQUE INDEX idx_ci_job_artifacts_on_job_id_file_type_and_partition_id_uniq ON ci_job_artifacts USING btree (job_id, file_type, partition_id); + CREATE INDEX idx_ci_pipelines_artifacts_locked ON ci_pipelines USING btree (ci_ref_id, id) WHERE (locked = 1); CREATE INDEX idx_compliance_security_policies_on_policy_configuration_id ON compliance_framework_security_policies USING btree (policy_configuration_id); @@ -32096,6 +32098,8 @@ CREATE INDEX index_ci_job_artifacts_on_file_store ON ci_job_artifacts USING btre CREATE INDEX index_ci_job_artifacts_on_file_type_for_devops_adoption ON ci_job_artifacts USING btree (file_type, project_id, created_at) WHERE (file_type = ANY (ARRAY[5, 6, 8, 23])); +CREATE UNIQUE INDEX index_ci_job_artifacts_on_id_partition_id_unique ON ci_job_artifacts USING btree (id, partition_id); + CREATE INDEX index_ci_job_artifacts_on_id_project_id_and_created_at ON ci_job_artifacts USING btree (project_id, created_at, id); CREATE INDEX index_ci_job_artifacts_on_id_project_id_and_file_type ON ci_job_artifacts USING btree (project_id, file_type, id);