diff --git a/db/post_migrate/20250306065243_remove_broken_fk_a2141b1522_p.rb b/db/post_migrate/20250306065243_remove_broken_fk_a2141b1522_p.rb new file mode 100644 index 0000000000000000000000000000000000000000..0eda63800f5d68a93bbd91df9606a0dff72a739a --- /dev/null +++ b/db/post_migrate/20250306065243_remove_broken_fk_a2141b1522_p.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +class RemoveBrokenFkA2141b1522P < Gitlab::Database::Migration[2.2] + include Gitlab::Database::PartitioningMigrationHelpers::ForeignKeyHelpers + + milestone '17.10' + disable_ddl_transaction! + + SOURCE_TABLE_NAME = :p_ci_builds + TARGET_TABLE_NAME = :p_ci_pipelines + COLUMN = :auto_canceled_by_id + TARGET_COLUMN = :id + PARTITION_COLUMN = :auto_canceled_by_partition_id + PARTITION_TARGET_COLUMN = :partition_id + FK_NAME = :fk_a2141b1522_p + + def up + with_lock_retries do + remove_foreign_key_if_exists( + SOURCE_TABLE_NAME, + TARGET_TABLE_NAME, + name: FK_NAME, + reverse_lock_order: true + ) + end + end + + def down + add_concurrent_partitioned_foreign_key( + SOURCE_TABLE_NAME, + TARGET_TABLE_NAME, + column: [PARTITION_COLUMN, COLUMN], + target_column: [PARTITION_TARGET_COLUMN, TARGET_COLUMN], + reverse_lock_order: true, + on_update: :cascade, + on_delete: :nullify, + name: FK_NAME, + validate: true + ) + end +end diff --git a/db/schema_migrations/20250306065243 b/db/schema_migrations/20250306065243 new file mode 100644 index 0000000000000000000000000000000000000000..22a5d13208030990d26c3b7f898b004b4ad1167e --- /dev/null +++ b/db/schema_migrations/20250306065243 @@ -0,0 +1 @@ +4942e6037c4a7b1a09907b6391c638fc47c0c8bb8ce8674588bfc8bf217d30da \ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index b7660fd1852f2cb52bfcbff89dff06a9520693b1..1f3ef6334f9ecb53532e718346a872e1d49ff9e7 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -40274,9 +40274,6 @@ ALTER TABLE ONLY ml_candidates ALTER TABLE ONLY subscription_add_on_purchases ADD CONSTRAINT fk_a1db288990 FOREIGN KEY (namespace_id) REFERENCES namespaces(id) ON DELETE CASCADE; -ALTER TABLE p_ci_builds - ADD CONSTRAINT fk_a2141b1522_p FOREIGN KEY (auto_canceled_by_partition_id, auto_canceled_by_id) REFERENCES p_ci_pipelines(partition_id, id) ON UPDATE CASCADE ON DELETE SET NULL; - ALTER TABLE ONLY protected_environment_approval_rules ADD CONSTRAINT fk_a3cc825836 FOREIGN KEY (protected_environment_project_id) REFERENCES projects(id) ON DELETE CASCADE;