From a299e57f7de6697466c5f39a7cfa89954fc6c855 Mon Sep 17 00:00:00 2001 From: Tomasz Skorupa Date: Tue, 18 Nov 2025 15:04:39 -0500 Subject: [PATCH 1/2] Truncate uploads_9ba88c4165 Addresses https://gitlab.com/gitlab-org/gitlab/-/issues/398199\#proposal Changelog: other --- db/docs/user_uploads.yml | 2 +- ...51118193642_truncate_uploads_9ba88c4165.rb | 16 +++++++++ ...nt_on_abuse_report_uploads_sharding_key.rb | 14 ++++++++ ...int_on_achievement_uploads_sharding_key.rb | 14 ++++++++ ...vectorizable_files_uploads_sharding_key.rb | 14 ++++++++ ..._null_constraint_on_amamiu_sharding_key.rb | 15 ++++++++ ...port_export_upload_uploads_sharding_key.rb | 14 ++++++++ ...y_list_export_part_uploads_sharding_key.rb | 14 ++++++++ ...ndency_list_export_uploads_sharding_key.rb | 20 +++++++++++ ..._management_action_uploads_sharding_key.rb | 14 ++++++++ ...port_export_upload_uploads_sharding_key.rb | 14 ++++++++ ...uable_metric_image_uploads_sharding_key.rb | 14 ++++++++ ...raint_on_namespace_uploads_sharding_key.rb | 14 ++++++++ ...rganization_detail_uploads_sharding_key.rb | 14 ++++++++ ...null_constraint_on_piereuu_sharding_key.rb | 14 ++++++++ ...t_on_project_topic_uploads_sharding_key.rb | 14 ++++++++ ...straint_on_project_uploads_sharding_key.rb | 14 ++++++++ ...straint_on_snippet_uploads_sharding_key.rb | 14 ++++++++ ...sion_export_upload_uploads_sharding_key.rb | 14 ++++++++ ...constraint_on_user_uploads_sharding_key.rb | 14 ++++++++ ...ity_archive_export_uploads_sharding_key.rb | 14 ++++++++ ...bility_export_part_uploads_sharding_key.rb | 14 ++++++++ ...lnerability_export_uploads_sharding_key.rb | 14 ++++++++ ...bility_remediation_uploads_sharding_key.rb | 14 ++++++++ db/schema_migrations/20251118193642 | 1 + db/schema_migrations/20251118201235 | 1 + db/schema_migrations/20251118202614 | 1 + db/schema_migrations/20251118203155 | 1 + db/schema_migrations/20251118204232 | 1 + db/schema_migrations/20251118204754 | 1 + db/schema_migrations/20251118211950 | 1 + db/schema_migrations/20251118213826 | 1 + db/schema_migrations/20251118214434 | 1 + db/schema_migrations/20251118214846 | 1 + db/schema_migrations/20251118215626 | 1 + db/schema_migrations/20251118215953 | 1 + db/schema_migrations/20251118220333 | 1 + db/schema_migrations/20251118220724 | 1 + db/schema_migrations/20251118230157 | 1 + db/schema_migrations/20251118230711 | 1 + db/schema_migrations/20251118231032 | 1 + db/schema_migrations/20251118231351 | 1 + db/schema_migrations/20251118231716 | 1 + db/schema_migrations/20251118232058 | 1 + db/schema_migrations/20251118232420 | 1 + db/schema_migrations/20251118232704 | 1 + db/schema_migrations/20251118232938 | 1 + db/structure.sql | 36 +++++++++++++++---- ...e_orphaned_relation_export_uploads_spec.rb | 6 ++-- spec/lib/gitlab/database/sharding_key_spec.rb | 32 ----------------- 50 files changed, 388 insertions(+), 42 deletions(-) create mode 100644 db/migrate/20251118193642_truncate_uploads_9ba88c4165.rb create mode 100644 db/migrate/20251118201235_add_not_null_constraint_on_abuse_report_uploads_sharding_key.rb create mode 100644 db/migrate/20251118202614_add_not_null_constraint_on_achievement_uploads_sharding_key.rb create mode 100644 db/migrate/20251118203155_add_not_null_constraint_on_ai_vectorizable_files_uploads_sharding_key.rb create mode 100644 db/migrate/20251118204232_add_not_null_constraint_on_amamiu_sharding_key.rb create mode 100644 db/migrate/20251118204754_add_not_null_constraint_on_bulk_import_export_upload_uploads_sharding_key.rb create mode 100644 db/migrate/20251118211950_add_not_null_constraint_on_dependency_list_export_part_uploads_sharding_key.rb create mode 100644 db/migrate/20251118213826_add_not_null_constraint_on_dependency_list_export_uploads_sharding_key.rb create mode 100644 db/migrate/20251118214434_add_not_null_constraint_on_design_management_action_uploads_sharding_key.rb create mode 100644 db/migrate/20251118214846_add_not_null_constraint_on_import_export_upload_uploads_sharding_key.rb create mode 100644 db/migrate/20251118215626_add_not_null_constraint_on_issuable_metric_image_uploads_sharding_key.rb create mode 100644 db/migrate/20251118215953_add_not_null_constraint_on_namespace_uploads_sharding_key.rb create mode 100644 db/migrate/20251118220333_add_not_null_constraint_on_organization_detail_uploads_sharding_key.rb create mode 100644 db/migrate/20251118220724_add_not_null_constraint_on_piereuu_sharding_key.rb create mode 100644 db/migrate/20251118230157_add_not_null_constraint_on_project_topic_uploads_sharding_key.rb create mode 100644 db/migrate/20251118230711_add_not_null_constraint_on_project_uploads_sharding_key.rb create mode 100644 db/migrate/20251118231032_add_not_null_constraint_on_snippet_uploads_sharding_key.rb create mode 100644 db/migrate/20251118231351_add_not_null_constraint_on_user_permission_export_upload_uploads_sharding_key.rb create mode 100644 db/migrate/20251118231716_add_not_null_constraint_on_user_uploads_sharding_key.rb create mode 100644 db/migrate/20251118232058_add_not_null_constraint_on_vulnerability_archive_export_uploads_sharding_key.rb create mode 100644 db/migrate/20251118232420_add_not_null_constraint_on_vulnerability_export_part_uploads_sharding_key.rb create mode 100644 db/migrate/20251118232704_add_not_null_constraint_on_vulnerability_export_uploads_sharding_key.rb create mode 100644 db/migrate/20251118232938_add_not_null_constraint_on_vulnerability_remediation_uploads_sharding_key.rb create mode 100644 db/schema_migrations/20251118193642 create mode 100644 db/schema_migrations/20251118201235 create mode 100644 db/schema_migrations/20251118202614 create mode 100644 db/schema_migrations/20251118203155 create mode 100644 db/schema_migrations/20251118204232 create mode 100644 db/schema_migrations/20251118204754 create mode 100644 db/schema_migrations/20251118211950 create mode 100644 db/schema_migrations/20251118213826 create mode 100644 db/schema_migrations/20251118214434 create mode 100644 db/schema_migrations/20251118214846 create mode 100644 db/schema_migrations/20251118215626 create mode 100644 db/schema_migrations/20251118215953 create mode 100644 db/schema_migrations/20251118220333 create mode 100644 db/schema_migrations/20251118220724 create mode 100644 db/schema_migrations/20251118230157 create mode 100644 db/schema_migrations/20251118230711 create mode 100644 db/schema_migrations/20251118231032 create mode 100644 db/schema_migrations/20251118231351 create mode 100644 db/schema_migrations/20251118231716 create mode 100644 db/schema_migrations/20251118232058 create mode 100644 db/schema_migrations/20251118232420 create mode 100644 db/schema_migrations/20251118232704 create mode 100644 db/schema_migrations/20251118232938 diff --git a/db/docs/user_uploads.yml b/db/docs/user_uploads.yml index 7b5676c452dafc..9bbdbaf98465c2 100644 --- a/db/docs/user_uploads.yml +++ b/db/docs/user_uploads.yml @@ -9,6 +9,6 @@ description: Stores uploads for User model introduced_by_url: milestone: '17.11' table_size: small -gitlab_schema: gitlab_main_user +gitlab_schema: gitlab_main_org sharding_key: organization_id: organizations diff --git a/db/migrate/20251118193642_truncate_uploads_9ba88c4165.rb b/db/migrate/20251118193642_truncate_uploads_9ba88c4165.rb new file mode 100644 index 00000000000000..cbcad1ab5af03c --- /dev/null +++ b/db/migrate/20251118193642_truncate_uploads_9ba88c4165.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class TruncateUploads9ba88c4165 < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + # NOTE: following https://docs.gitlab.com/development/migration_style_guide/#truncate-a-table + # and the proposal in https://gitlab.com/gitlab-org/gitlab/-/issues/398199#proposal + truncate_tables!('uploads_9ba88c4165') + end + + def down + # no-op + end +end diff --git a/db/migrate/20251118201235_add_not_null_constraint_on_abuse_report_uploads_sharding_key.rb b/db/migrate/20251118201235_add_not_null_constraint_on_abuse_report_uploads_sharding_key.rb new file mode 100644 index 00000000000000..3fc03fce7de59e --- /dev/null +++ b/db/migrate/20251118201235_add_not_null_constraint_on_abuse_report_uploads_sharding_key.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnAbuseReportUploadsShardingKey < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + add_not_null_constraint(:abuse_report_uploads, :organization_id) + end + + def down + remove_not_null_constraint(:abuse_report_uploads, :organization_id) + end +end diff --git a/db/migrate/20251118202614_add_not_null_constraint_on_achievement_uploads_sharding_key.rb b/db/migrate/20251118202614_add_not_null_constraint_on_achievement_uploads_sharding_key.rb new file mode 100644 index 00000000000000..fc85d750f11ffa --- /dev/null +++ b/db/migrate/20251118202614_add_not_null_constraint_on_achievement_uploads_sharding_key.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnAchievementUploadsShardingKey < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + add_not_null_constraint(:achievement_uploads, :namespace_id) + end + + def down + remove_not_null_constraint(:achievement_uploads, :namespace_id) + end +end diff --git a/db/migrate/20251118203155_add_not_null_constraint_on_ai_vectorizable_files_uploads_sharding_key.rb b/db/migrate/20251118203155_add_not_null_constraint_on_ai_vectorizable_files_uploads_sharding_key.rb new file mode 100644 index 00000000000000..c4913e34100107 --- /dev/null +++ b/db/migrate/20251118203155_add_not_null_constraint_on_ai_vectorizable_files_uploads_sharding_key.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnAiVectorizableFilesUploadsShardingKey < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + add_not_null_constraint(:ai_vectorizable_file_uploads, :project_id) + end + + def down + remove_not_null_constraint(:ai_vectorizable_file_uploads, :project_id) + end +end diff --git a/db/migrate/20251118204232_add_not_null_constraint_on_amamiu_sharding_key.rb b/db/migrate/20251118204232_add_not_null_constraint_on_amamiu_sharding_key.rb new file mode 100644 index 00000000000000..eec4a876f03473 --- /dev/null +++ b/db/migrate/20251118204232_add_not_null_constraint_on_amamiu_sharding_key.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnAmamiuShardingKey < Gitlab::Database::Migration[2.3] + # NOTE: Shortening the file name per Cop/FilenameLength: This file name is too long. It should be 100 or less + disable_ddl_transaction! + milestone '18.7' + + def up + add_not_null_constraint(:alert_management_alert_metric_image_uploads, :project_id) + end + + def down + remove_not_null_constraint(:alert_management_alert_metric_image_uploads, :project_id) + end +end diff --git a/db/migrate/20251118204754_add_not_null_constraint_on_bulk_import_export_upload_uploads_sharding_key.rb b/db/migrate/20251118204754_add_not_null_constraint_on_bulk_import_export_upload_uploads_sharding_key.rb new file mode 100644 index 00000000000000..db35d8b63f2ec0 --- /dev/null +++ b/db/migrate/20251118204754_add_not_null_constraint_on_bulk_import_export_upload_uploads_sharding_key.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnBulkImportExportUploadUploadsShardingKey < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + add_multi_column_not_null_constraint(:bulk_import_export_upload_uploads, :project_id, :namespace_id) + end + + def down + remove_multi_column_not_null_constraint(:bulk_import_export_upload_uploads, :project_id, :namespace_id) + end +end diff --git a/db/migrate/20251118211950_add_not_null_constraint_on_dependency_list_export_part_uploads_sharding_key.rb b/db/migrate/20251118211950_add_not_null_constraint_on_dependency_list_export_part_uploads_sharding_key.rb new file mode 100644 index 00000000000000..03d8725764879c --- /dev/null +++ b/db/migrate/20251118211950_add_not_null_constraint_on_dependency_list_export_part_uploads_sharding_key.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnDependencyListExportPartUploadsShardingKey < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + add_not_null_constraint(:dependency_list_export_part_uploads, :organization_id) + end + + def down + remove_not_null_constraint(:dependency_list_export_part_uploads, :organization_id) + end +end diff --git a/db/migrate/20251118213826_add_not_null_constraint_on_dependency_list_export_uploads_sharding_key.rb b/db/migrate/20251118213826_add_not_null_constraint_on_dependency_list_export_uploads_sharding_key.rb new file mode 100644 index 00000000000000..b4e7e1cf2ee4bb --- /dev/null +++ b/db/migrate/20251118213826_add_not_null_constraint_on_dependency_list_export_uploads_sharding_key.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnDependencyListExportUploadsShardingKey < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + add_multi_column_not_null_constraint( + :dependency_list_export_uploads, + :project_id, :namespace_id, :organization_id + ) + end + + def down + remove_multi_column_not_null_constraint( + :dependency_list_export_uploads, + :project_id, :namespace_id, :organization_id + ) + end +end diff --git a/db/migrate/20251118214434_add_not_null_constraint_on_design_management_action_uploads_sharding_key.rb b/db/migrate/20251118214434_add_not_null_constraint_on_design_management_action_uploads_sharding_key.rb new file mode 100644 index 00000000000000..6d4d313aa1d353 --- /dev/null +++ b/db/migrate/20251118214434_add_not_null_constraint_on_design_management_action_uploads_sharding_key.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnDesignManagementActionUploadsShardingKey < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + add_not_null_constraint(:design_management_action_uploads, :namespace_id) + end + + def down + remove_not_null_constraint(:design_management_action_uploads, :namespace_id) + end +end diff --git a/db/migrate/20251118214846_add_not_null_constraint_on_import_export_upload_uploads_sharding_key.rb b/db/migrate/20251118214846_add_not_null_constraint_on_import_export_upload_uploads_sharding_key.rb new file mode 100644 index 00000000000000..e0832491b5daa8 --- /dev/null +++ b/db/migrate/20251118214846_add_not_null_constraint_on_import_export_upload_uploads_sharding_key.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnImportExportUploadUploadsShardingKey < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + add_multi_column_not_null_constraint(:import_export_upload_uploads, :project_id, :namespace_id) + end + + def down + remove_multi_column_not_null_constraint(:import_export_upload_uploads, :project_id, :namespace_id) + end +end diff --git a/db/migrate/20251118215626_add_not_null_constraint_on_issuable_metric_image_uploads_sharding_key.rb b/db/migrate/20251118215626_add_not_null_constraint_on_issuable_metric_image_uploads_sharding_key.rb new file mode 100644 index 00000000000000..23cb7c7998f0f5 --- /dev/null +++ b/db/migrate/20251118215626_add_not_null_constraint_on_issuable_metric_image_uploads_sharding_key.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnIssuableMetricImageUploadsShardingKey < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + add_not_null_constraint(:issuable_metric_image_uploads, :namespace_id) + end + + def down + remove_not_null_constraint(:issuable_metric_image_uploads, :namespace_id) + end +end diff --git a/db/migrate/20251118215953_add_not_null_constraint_on_namespace_uploads_sharding_key.rb b/db/migrate/20251118215953_add_not_null_constraint_on_namespace_uploads_sharding_key.rb new file mode 100644 index 00000000000000..2baf46dcbfba61 --- /dev/null +++ b/db/migrate/20251118215953_add_not_null_constraint_on_namespace_uploads_sharding_key.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnNamespaceUploadsShardingKey < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + add_not_null_constraint(:namespace_uploads, :namespace_id) + end + + def down + remove_not_null_constraint(:namespace_uploads, :namespace_id) + end +end diff --git a/db/migrate/20251118220333_add_not_null_constraint_on_organization_detail_uploads_sharding_key.rb b/db/migrate/20251118220333_add_not_null_constraint_on_organization_detail_uploads_sharding_key.rb new file mode 100644 index 00000000000000..9c645f76092bed --- /dev/null +++ b/db/migrate/20251118220333_add_not_null_constraint_on_organization_detail_uploads_sharding_key.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnOrganizationDetailUploadsShardingKey < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + add_not_null_constraint(:organization_detail_uploads, :organization_id) + end + + def down + remove_not_null_constraint(:organization_detail_uploads, :organization_id) + end +end diff --git a/db/migrate/20251118220724_add_not_null_constraint_on_piereuu_sharding_key.rb b/db/migrate/20251118220724_add_not_null_constraint_on_piereuu_sharding_key.rb new file mode 100644 index 00000000000000..d803d18426f1fd --- /dev/null +++ b/db/migrate/20251118220724_add_not_null_constraint_on_piereuu_sharding_key.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnPiereuuShardingKey < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + add_not_null_constraint(:project_import_export_relation_export_upload_uploads, :project_id) + end + + def down + remove_not_null_constraint(:project_import_export_relation_export_upload_uploads, :project_id) + end +end diff --git a/db/migrate/20251118230157_add_not_null_constraint_on_project_topic_uploads_sharding_key.rb b/db/migrate/20251118230157_add_not_null_constraint_on_project_topic_uploads_sharding_key.rb new file mode 100644 index 00000000000000..59276249b8a619 --- /dev/null +++ b/db/migrate/20251118230157_add_not_null_constraint_on_project_topic_uploads_sharding_key.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnProjectTopicUploadsShardingKey < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + add_not_null_constraint(:project_topic_uploads, :organization_id) + end + + def down + remove_not_null_constraint(:project_topic_uploads, :organization_id) + end +end diff --git a/db/migrate/20251118230711_add_not_null_constraint_on_project_uploads_sharding_key.rb b/db/migrate/20251118230711_add_not_null_constraint_on_project_uploads_sharding_key.rb new file mode 100644 index 00000000000000..6ef867bf7e9882 --- /dev/null +++ b/db/migrate/20251118230711_add_not_null_constraint_on_project_uploads_sharding_key.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnProjectUploadsShardingKey < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + add_not_null_constraint(:project_uploads, :project_id) + end + + def down + remove_not_null_constraint(:project_uploads, :project_id) + end +end diff --git a/db/migrate/20251118231032_add_not_null_constraint_on_snippet_uploads_sharding_key.rb b/db/migrate/20251118231032_add_not_null_constraint_on_snippet_uploads_sharding_key.rb new file mode 100644 index 00000000000000..1e0cec6aa8fd57 --- /dev/null +++ b/db/migrate/20251118231032_add_not_null_constraint_on_snippet_uploads_sharding_key.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnSnippetUploadsShardingKey < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + add_not_null_constraint(:snippet_uploads, :organization_id) + end + + def down + remove_not_null_constraint(:snippet_uploads, :organization_id) + end +end diff --git a/db/migrate/20251118231351_add_not_null_constraint_on_user_permission_export_upload_uploads_sharding_key.rb b/db/migrate/20251118231351_add_not_null_constraint_on_user_permission_export_upload_uploads_sharding_key.rb new file mode 100644 index 00000000000000..f235773d4dc3a8 --- /dev/null +++ b/db/migrate/20251118231351_add_not_null_constraint_on_user_permission_export_upload_uploads_sharding_key.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnUserPermissionExportUploadUploadsShardingKey < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + add_not_null_constraint(:user_permission_export_upload_uploads, :uploaded_by_user_id) + end + + def down + remove_not_null_constraint(:user_permission_export_upload_uploads, :uploaded_by_user_id) + end +end diff --git a/db/migrate/20251118231716_add_not_null_constraint_on_user_uploads_sharding_key.rb b/db/migrate/20251118231716_add_not_null_constraint_on_user_uploads_sharding_key.rb new file mode 100644 index 00000000000000..00ddc20159235c --- /dev/null +++ b/db/migrate/20251118231716_add_not_null_constraint_on_user_uploads_sharding_key.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnUserUploadsShardingKey < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + add_not_null_constraint(:user_uploads, :organization_id) + end + + def down + remove_not_null_constraint(:user_uploads, :organization_id) + end +end diff --git a/db/migrate/20251118232058_add_not_null_constraint_on_vulnerability_archive_export_uploads_sharding_key.rb b/db/migrate/20251118232058_add_not_null_constraint_on_vulnerability_archive_export_uploads_sharding_key.rb new file mode 100644 index 00000000000000..edc017fe82a1d2 --- /dev/null +++ b/db/migrate/20251118232058_add_not_null_constraint_on_vulnerability_archive_export_uploads_sharding_key.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnVulnerabilityArchiveExportUploadsShardingKey < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + add_not_null_constraint(:vulnerability_archive_export_uploads, :project_id) + end + + def down + remove_not_null_constraint(:vulnerability_archive_export_uploads, :project_id) + end +end diff --git a/db/migrate/20251118232420_add_not_null_constraint_on_vulnerability_export_part_uploads_sharding_key.rb b/db/migrate/20251118232420_add_not_null_constraint_on_vulnerability_export_part_uploads_sharding_key.rb new file mode 100644 index 00000000000000..1816fdb198524d --- /dev/null +++ b/db/migrate/20251118232420_add_not_null_constraint_on_vulnerability_export_part_uploads_sharding_key.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnVulnerabilityExportPartUploadsShardingKey < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + add_not_null_constraint(:vulnerability_export_part_uploads, :organization_id) + end + + def down + remove_not_null_constraint(:vulnerability_export_part_uploads, :organization_id) + end +end diff --git a/db/migrate/20251118232704_add_not_null_constraint_on_vulnerability_export_uploads_sharding_key.rb b/db/migrate/20251118232704_add_not_null_constraint_on_vulnerability_export_uploads_sharding_key.rb new file mode 100644 index 00000000000000..2f0230a7aeb6d4 --- /dev/null +++ b/db/migrate/20251118232704_add_not_null_constraint_on_vulnerability_export_uploads_sharding_key.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnVulnerabilityExportUploadsShardingKey < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + add_not_null_constraint(:vulnerability_export_uploads, :organization_id) + end + + def down + remove_not_null_constraint(:vulnerability_export_uploads, :organization_id) + end +end diff --git a/db/migrate/20251118232938_add_not_null_constraint_on_vulnerability_remediation_uploads_sharding_key.rb b/db/migrate/20251118232938_add_not_null_constraint_on_vulnerability_remediation_uploads_sharding_key.rb new file mode 100644 index 00000000000000..125e01e545ffdf --- /dev/null +++ b/db/migrate/20251118232938_add_not_null_constraint_on_vulnerability_remediation_uploads_sharding_key.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddNotNullConstraintOnVulnerabilityRemediationUploadsShardingKey < Gitlab::Database::Migration[2.3] + disable_ddl_transaction! + milestone '18.7' + + def up + add_not_null_constraint(:vulnerability_remediation_uploads, :project_id) + end + + def down + remove_not_null_constraint(:vulnerability_remediation_uploads, :project_id) + end +end diff --git a/db/schema_migrations/20251118193642 b/db/schema_migrations/20251118193642 new file mode 100644 index 00000000000000..5d42fbda641046 --- /dev/null +++ b/db/schema_migrations/20251118193642 @@ -0,0 +1 @@ +e27b8b606c7da9b2d6cbb7410835982857078fdcb8c2dee3aad4dd05f781c3e5 \ No newline at end of file diff --git a/db/schema_migrations/20251118201235 b/db/schema_migrations/20251118201235 new file mode 100644 index 00000000000000..8906ea45002c55 --- /dev/null +++ b/db/schema_migrations/20251118201235 @@ -0,0 +1 @@ +8dc771194e71ce838ca4a5f8dfb1a5dbf54b8345443a68f28f16a7e8bfc6e098 \ No newline at end of file diff --git a/db/schema_migrations/20251118202614 b/db/schema_migrations/20251118202614 new file mode 100644 index 00000000000000..5a5583987b5c86 --- /dev/null +++ b/db/schema_migrations/20251118202614 @@ -0,0 +1 @@ +07c2d76facb5b3d653d303fc297ee30eb2acb4135a98d86469483491d2969868 \ No newline at end of file diff --git a/db/schema_migrations/20251118203155 b/db/schema_migrations/20251118203155 new file mode 100644 index 00000000000000..878e58a9f8b931 --- /dev/null +++ b/db/schema_migrations/20251118203155 @@ -0,0 +1 @@ +8a3e3e7a4fb640c68b732f5a412b272beb7cb9d83d76734f53cd2cc40b85bb35 \ No newline at end of file diff --git a/db/schema_migrations/20251118204232 b/db/schema_migrations/20251118204232 new file mode 100644 index 00000000000000..e5d9ff9f67fa30 --- /dev/null +++ b/db/schema_migrations/20251118204232 @@ -0,0 +1 @@ +c83ec2ec773e7e4d05163c117bae6eee949e8d0307730a3160fe20033907b6d6 \ No newline at end of file diff --git a/db/schema_migrations/20251118204754 b/db/schema_migrations/20251118204754 new file mode 100644 index 00000000000000..acd339e23f4679 --- /dev/null +++ b/db/schema_migrations/20251118204754 @@ -0,0 +1 @@ +8eb557acee78aea0cad298562739bc3d9cad0c742ff9c2347948672a5a975949 \ No newline at end of file diff --git a/db/schema_migrations/20251118211950 b/db/schema_migrations/20251118211950 new file mode 100644 index 00000000000000..d84c40722f667e --- /dev/null +++ b/db/schema_migrations/20251118211950 @@ -0,0 +1 @@ +913456d20d7eb43794232704ff2c005b90961fc5a6742193146ce160b55aeda9 \ No newline at end of file diff --git a/db/schema_migrations/20251118213826 b/db/schema_migrations/20251118213826 new file mode 100644 index 00000000000000..e0ed0d0678820b --- /dev/null +++ b/db/schema_migrations/20251118213826 @@ -0,0 +1 @@ +3130b663989f9fa9fcf287dff708e3cc888f80fbb01299f065d1b99ed427f80b \ No newline at end of file diff --git a/db/schema_migrations/20251118214434 b/db/schema_migrations/20251118214434 new file mode 100644 index 00000000000000..e433dbe0d85d57 --- /dev/null +++ b/db/schema_migrations/20251118214434 @@ -0,0 +1 @@ +965101b1fe632eb5fd50c730d21c4cd31a11316fc10dbf865125d1ff02d5c179 \ No newline at end of file diff --git a/db/schema_migrations/20251118214846 b/db/schema_migrations/20251118214846 new file mode 100644 index 00000000000000..32ea658e3e97e5 --- /dev/null +++ b/db/schema_migrations/20251118214846 @@ -0,0 +1 @@ +9e6165486b3000601b1c4e35206070482a3b0450b53f5406cae6e5adec044e3b \ No newline at end of file diff --git a/db/schema_migrations/20251118215626 b/db/schema_migrations/20251118215626 new file mode 100644 index 00000000000000..2b9cd7fd20149a --- /dev/null +++ b/db/schema_migrations/20251118215626 @@ -0,0 +1 @@ +7091d628b64d7084ae2021ceb65d746aa9222838543697e6668b97abf529601f \ No newline at end of file diff --git a/db/schema_migrations/20251118215953 b/db/schema_migrations/20251118215953 new file mode 100644 index 00000000000000..a75da4c0981cdc --- /dev/null +++ b/db/schema_migrations/20251118215953 @@ -0,0 +1 @@ +3e482bf464fd22571becd99639c0abdbd05e43e1c93f15355d397219288aceb3 \ No newline at end of file diff --git a/db/schema_migrations/20251118220333 b/db/schema_migrations/20251118220333 new file mode 100644 index 00000000000000..4a64358bb6b2a6 --- /dev/null +++ b/db/schema_migrations/20251118220333 @@ -0,0 +1 @@ +00156e0a4aaeff5b30b51d0e59b6ae30cb6c9559b51c654f2c7526c542b207e9 \ No newline at end of file diff --git a/db/schema_migrations/20251118220724 b/db/schema_migrations/20251118220724 new file mode 100644 index 00000000000000..88c122d4bbd004 --- /dev/null +++ b/db/schema_migrations/20251118220724 @@ -0,0 +1 @@ +494125cbbe6fe893e6ba413d9486c8e5f5fba87013f26fb5af1bb345e0215edd \ No newline at end of file diff --git a/db/schema_migrations/20251118230157 b/db/schema_migrations/20251118230157 new file mode 100644 index 00000000000000..696cc1d9cde6bf --- /dev/null +++ b/db/schema_migrations/20251118230157 @@ -0,0 +1 @@ +7bd038c7a380cf74499896d5eb3ee0eecde469ffc37a55e8d42696cfa7c5b7f1 \ No newline at end of file diff --git a/db/schema_migrations/20251118230711 b/db/schema_migrations/20251118230711 new file mode 100644 index 00000000000000..0b51313c5b3931 --- /dev/null +++ b/db/schema_migrations/20251118230711 @@ -0,0 +1 @@ +3459f5afeb6443ac00702b04366e5b9cdcfd81061c044a452e6e1e50d79f1757 \ No newline at end of file diff --git a/db/schema_migrations/20251118231032 b/db/schema_migrations/20251118231032 new file mode 100644 index 00000000000000..9b824f68c122a2 --- /dev/null +++ b/db/schema_migrations/20251118231032 @@ -0,0 +1 @@ +0ca95c480ab57625cce3f723354e25a65e4d904739d0bd7bbe4a250ec8044b5d \ No newline at end of file diff --git a/db/schema_migrations/20251118231351 b/db/schema_migrations/20251118231351 new file mode 100644 index 00000000000000..b86fccfd1ccc86 --- /dev/null +++ b/db/schema_migrations/20251118231351 @@ -0,0 +1 @@ +e0fb9f32d09ff441d6f780a00f172c32671529bffe87c1b5d94a74e6510b5294 \ No newline at end of file diff --git a/db/schema_migrations/20251118231716 b/db/schema_migrations/20251118231716 new file mode 100644 index 00000000000000..ce8b3424f1dac4 --- /dev/null +++ b/db/schema_migrations/20251118231716 @@ -0,0 +1 @@ +242c96838722e68d07705de369262719027bf324caf1b2f1265480f7a04f4e4c \ No newline at end of file diff --git a/db/schema_migrations/20251118232058 b/db/schema_migrations/20251118232058 new file mode 100644 index 00000000000000..d8d71550d8e783 --- /dev/null +++ b/db/schema_migrations/20251118232058 @@ -0,0 +1 @@ +4fa2e5e3df57d8e5a54455f0bc5742fc44c18a23f2f419b87f1e4d13240dd173 \ No newline at end of file diff --git a/db/schema_migrations/20251118232420 b/db/schema_migrations/20251118232420 new file mode 100644 index 00000000000000..4677e5ab9a81f2 --- /dev/null +++ b/db/schema_migrations/20251118232420 @@ -0,0 +1 @@ +74c42054d33372c5ca33abd36f0373af719ce40eb2d03c24f4d8824659af3d1e \ No newline at end of file diff --git a/db/schema_migrations/20251118232704 b/db/schema_migrations/20251118232704 new file mode 100644 index 00000000000000..f6e8df1a01832b --- /dev/null +++ b/db/schema_migrations/20251118232704 @@ -0,0 +1 @@ +00968cd12d4162d1e52ffb0dbd988bba04351e633a3d89c5dc0e70f155cbb858 \ No newline at end of file diff --git a/db/schema_migrations/20251118232938 b/db/schema_migrations/20251118232938 new file mode 100644 index 00000000000000..e68f0fc549e8ad --- /dev/null +++ b/db/schema_migrations/20251118232938 @@ -0,0 +1 @@ +1792a458270a48377a3f8e0814bd95f652a4b783ebd9203bf2ea24d6df846db2 \ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index 1bfcc6e7575e28..b02b0140c576a0 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -10618,6 +10618,7 @@ CREATE TABLE abuse_report_uploads ( mount_point text, secret text, CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), + CONSTRAINT check_2db09e0e37 CHECK ((organization_id IS NOT NULL)), CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) ); @@ -10701,6 +10702,7 @@ CREATE TABLE achievement_uploads ( mount_point text, secret text, CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), + CONSTRAINT check_9dac0178ee CHECK ((namespace_id IS NOT NULL)), CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) ); @@ -11395,6 +11397,7 @@ CREATE TABLE ai_vectorizable_file_uploads ( mount_point text, secret text, CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), + CONSTRAINT check_73db12226b CHECK ((project_id IS NOT NULL)), CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) ); @@ -11453,6 +11456,7 @@ CREATE TABLE alert_management_alert_metric_image_uploads ( mount_point text, secret text, CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), + CONSTRAINT check_49e9003aa6 CHECK ((project_id IS NOT NULL)), CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) ); @@ -14054,7 +14058,8 @@ CREATE TABLE bulk_import_export_upload_uploads ( mount_point text, secret text, CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), - CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) + CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)), + CONSTRAINT check_fd3aa31edf CHECK ((num_nonnulls(namespace_id, project_id) = 1)) ); CREATE TABLE bulk_import_export_uploads ( @@ -16749,6 +16754,7 @@ CREATE TABLE dependency_list_export_part_uploads ( mount_point text, secret text, CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), + CONSTRAINT check_86a96d8348 CHECK ((organization_id IS NOT NULL)), CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) ); @@ -16792,6 +16798,7 @@ CREATE TABLE dependency_list_export_uploads ( mount_point text, secret text, CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), + CONSTRAINT check_889220aa2d CHECK ((num_nonnulls(namespace_id, organization_id, project_id) = 1)), CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) ); @@ -17115,6 +17122,7 @@ CREATE TABLE design_management_action_uploads ( mount_point text, secret text, CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), + CONSTRAINT check_63456653da CHECK ((namespace_id IS NOT NULL)), CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) ); @@ -18911,6 +18919,7 @@ CREATE TABLE import_export_upload_uploads ( mount_point text, secret text, CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), + CONSTRAINT check_5c88ee613c CHECK ((num_nonnulls(namespace_id, project_id) = 1)), CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) ); @@ -19572,6 +19581,7 @@ CREATE TABLE issuable_metric_image_uploads ( mount_point text, secret text, CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), + CONSTRAINT check_5bfdc76f5c CHECK ((namespace_id IS NOT NULL)), CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) ); @@ -21681,7 +21691,8 @@ CREATE TABLE namespace_uploads ( mount_point text, secret text, CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), - CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) + CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)), + CONSTRAINT check_dff00b5115 CHECK ((namespace_id IS NOT NULL)) ); CREATE SEQUENCE namespaces_id_seq @@ -22301,6 +22312,7 @@ CREATE TABLE organization_detail_uploads ( mount_point text, secret text, CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), + CONSTRAINT check_8c86d5dff9 CHECK ((organization_id IS NOT NULL)), CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) ); @@ -24954,6 +24966,7 @@ CREATE TABLE project_import_export_relation_export_upload_uploads ( mount_point text, secret text, CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), + CONSTRAINT check_3802d7ee83 CHECK ((project_id IS NOT NULL)), CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) ); @@ -25443,7 +25456,8 @@ CREATE TABLE project_topic_uploads ( mount_point text, secret text, CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), - CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) + CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)), + CONSTRAINT check_d6cd4bbec3 CHECK ((organization_id IS NOT NULL)) ); CREATE TABLE project_topics ( @@ -25541,7 +25555,8 @@ CREATE TABLE project_uploads ( mount_point text, secret text, CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), - CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) + CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)), + CONSTRAINT check_d5b2a170a1 CHECK ((project_id IS NOT NULL)) ); CREATE TABLE project_wiki_repositories ( @@ -27494,7 +27509,8 @@ CREATE TABLE snippet_uploads ( mount_point text, secret text, CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), - CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) + CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)), + CONSTRAINT check_f1b1b6e769 CHECK ((organization_id IS NOT NULL)) ); CREATE TABLE snippet_user_mentions ( @@ -28731,6 +28747,7 @@ CREATE TABLE user_permission_export_upload_uploads ( mount_point text, secret text, CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), + CONSTRAINT check_824c448850 CHECK ((uploaded_by_user_id IS NOT NULL)), CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) ); @@ -28949,7 +28966,8 @@ CREATE TABLE user_uploads ( mount_point text, secret text, CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), - CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) + CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)), + CONSTRAINT check_fa16e4c6ff CHECK ((organization_id IS NOT NULL)) ); CREATE SEQUENCE users_id_seq @@ -29315,6 +29333,7 @@ CREATE TABLE vulnerability_archive_export_uploads ( mount_point text, secret text, CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), + CONSTRAINT check_7bfde94300 CHECK ((project_id IS NOT NULL)), CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) ); @@ -29381,7 +29400,8 @@ CREATE TABLE vulnerability_export_part_uploads ( mount_point text, secret text, CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), - CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) + CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)), + CONSTRAINT check_fafd5f387b CHECK ((organization_id IS NOT NULL)) ); CREATE TABLE vulnerability_export_parts ( @@ -29423,6 +29443,7 @@ CREATE TABLE vulnerability_export_uploads ( uploader text NOT NULL, mount_point text, secret text, + CONSTRAINT check_1bc83211e7 CHECK ((organization_id IS NOT NULL)), CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) ); @@ -29922,6 +29943,7 @@ CREATE TABLE vulnerability_remediation_uploads ( uploader text NOT NULL, mount_point text, secret text, + CONSTRAINT check_23cba26410 CHECK ((project_id IS NOT NULL)), CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) ); diff --git a/spec/lib/gitlab/background_migration/delete_orphaned_relation_export_uploads_spec.rb b/spec/lib/gitlab/background_migration/delete_orphaned_relation_export_uploads_spec.rb index 7e1246cf4b0b93..f5aa2c05840885 100644 --- a/spec/lib/gitlab/background_migration/delete_orphaned_relation_export_uploads_spec.rb +++ b/spec/lib/gitlab/background_migration/delete_orphaned_relation_export_uploads_spec.rb @@ -80,7 +80,8 @@ uploader: 'ImportExportUploader', path: 'orphaned/path/file1.tar.gz', size: 2048, - store: 1 + store: 1, + project_id: project.id ) end @@ -91,7 +92,8 @@ uploader: 'ImportExportUploader', path: 'orphaned/path/file2.tar.gz', size: 3072, - store: 2 + store: 2, + project_id: project.id ) end diff --git a/spec/lib/gitlab/database/sharding_key_spec.rb b/spec/lib/gitlab/database/sharding_key_spec.rb index 4025996ae62ca5..39525d32da397e 100644 --- a/spec/lib/gitlab/database/sharding_key_spec.rb +++ b/spec/lib/gitlab/database/sharding_key_spec.rb @@ -50,44 +50,12 @@ bulk_import_batch_trackers.namespace_id bulk_import_batch_trackers.project_id ], # https://gitlab.com/gitlab-org/gitlab/-/merge_requests/213933 - *uploads_and_partitions, 'security_scans.project_id', # NOT NULL constraint NOT VALID 'keys.organization_id', # https://gitlab.com/gitlab-org/gitlab/-/issues/577246 'oauth_applications.organization_id' # https://gitlab.com/gitlab-org/gitlab/-/issues/579291 ] end - # The following tables are work in progress as part of - # https://gitlab.com/gitlab-org/gitlab/-/issues/398199 - # TODO: Remove these exceptions once the issue is closed. - let(:uploads_and_partitions) do - %w[ - abuse_report_uploads.organization_id - achievement_uploads.namespace_id - ai_vectorizable_file_uploads.project_id - alert_management_alert_metric_image_uploads.project_id - bulk_import_export_upload_uploads.project_id bulk_import_export_upload_uploads.namespace_id - dependency_list_export_part_uploads.organization_id - dependency_list_export_uploads.organization_id dependency_list_export_uploads.namespace_id - dependency_list_export_uploads.project_id - design_management_action_uploads.namespace_id - import_export_upload_uploads.project_id import_export_upload_uploads.namespace_id - issuable_metric_image_uploads.namespace_id - namespace_uploads.namespace_id - organization_detail_uploads.organization_id - project_import_export_relation_export_upload_uploads.project_id - project_topic_uploads.organization_id - project_uploads.project_id - snippet_uploads.organization_id - user_permission_export_upload_uploads.uploaded_by_user_id - user_uploads.organization_id - vulnerability_export_part_uploads.organization_id - vulnerability_export_uploads.organization_id - vulnerability_archive_export_uploads.project_id - vulnerability_remediation_uploads.project_id - ] - end - # Some reasons to exempt a table: # 1. It has no foreign key for performance reasons # 2. It does not yet have a foreign key as the index is still being backfilled -- GitLab From 0bfaea3c076092ea48d6a0bd161b6f432fbef9f7 Mon Sep 17 00:00:00 2001 From: Tomasz Skorupa Date: Wed, 3 Dec 2025 09:18:24 -0500 Subject: [PATCH 2/2] fixup! Truncate uploads_9ba88c4165 --- ...onstraint_on_dependency_list_export_uploads_sharding_key.rb | 3 ++- db/structure.sql | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/db/migrate/20251118213826_add_not_null_constraint_on_dependency_list_export_uploads_sharding_key.rb b/db/migrate/20251118213826_add_not_null_constraint_on_dependency_list_export_uploads_sharding_key.rb index b4e7e1cf2ee4bb..c47cb9f4f54bb8 100644 --- a/db/migrate/20251118213826_add_not_null_constraint_on_dependency_list_export_uploads_sharding_key.rb +++ b/db/migrate/20251118213826_add_not_null_constraint_on_dependency_list_export_uploads_sharding_key.rb @@ -7,7 +7,8 @@ class AddNotNullConstraintOnDependencyListExportUploadsShardingKey < Gitlab::Dat def up add_multi_column_not_null_constraint( :dependency_list_export_uploads, - :project_id, :namespace_id, :organization_id + :project_id, :namespace_id, :organization_id, + operator: '>', limit: 0 # NOTE: reflecting the selection of the parent https://gitlab.com/gitlab-org/gitlab/-/merge_requests/172178/diffs ) end diff --git a/db/structure.sql b/db/structure.sql index b02b0140c576a0..77574674ce9227 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -16798,7 +16798,7 @@ CREATE TABLE dependency_list_export_uploads ( mount_point text, secret text, CONSTRAINT check_2849dedce7 CHECK ((char_length(path) <= 511)), - CONSTRAINT check_889220aa2d CHECK ((num_nonnulls(namespace_id, organization_id, project_id) = 1)), + CONSTRAINT check_889220aa2d CHECK ((num_nonnulls(namespace_id, organization_id, project_id) > 0)), CONSTRAINT check_b888b1df14 CHECK ((char_length(checksum) <= 64)) ); -- GitLab