diff --git a/db/post_migrate/20230220132409_validate_fk_on_ci_build_report_results_partition_id_and_build_id.rb b/db/post_migrate/20230220132409_validate_fk_on_ci_build_report_results_partition_id_and_build_id.rb new file mode 100644 index 0000000000000000000000000000000000000000..5186f5f397e1bb2ee73afa1e0be653078afc748f --- /dev/null +++ b/db/post_migrate/20230220132409_validate_fk_on_ci_build_report_results_partition_id_and_build_id.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class ValidateFkOnCiBuildReportResultsPartitionIdAndBuildId < Gitlab::Database::Migration[2.1] + TABLE_NAME = :ci_build_report_results + FK_NAME = :fk_rails_16cb1ff064_p + COLUMNS = [:partition_id, :build_id] + + def up + validate_foreign_key(TABLE_NAME, COLUMNS, name: FK_NAME) + end + + def down + # no-op + end +end diff --git a/db/post_migrate/20230220132410_remove_fk_to_ci_builds_ci_build_report_results_on_build_id.rb b/db/post_migrate/20230220132410_remove_fk_to_ci_builds_ci_build_report_results_on_build_id.rb new file mode 100644 index 0000000000000000000000000000000000000000..8cbcdf2737402c3f2386b9eb44536faaa008afe0 --- /dev/null +++ b/db/post_migrate/20230220132410_remove_fk_to_ci_builds_ci_build_report_results_on_build_id.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +class RemoveFkToCiBuildsCiBuildReportResultsOnBuildId < Gitlab::Database::Migration[2.1] + disable_ddl_transaction! + + SOURCE_TABLE_NAME = :ci_build_report_results + TARGET_TABLE_NAME = :ci_builds + COLUMN = :build_id + TARGET_COLUMN = :id + FK_NAME = :fk_rails_16cb1ff064 + + 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_foreign_key( + SOURCE_TABLE_NAME, + TARGET_TABLE_NAME, + column: COLUMN, + target_column: TARGET_COLUMN, + validate: true, + reverse_lock_order: true, + on_delete: :cascade, + name: FK_NAME + ) + end +end diff --git a/db/schema_migrations/20230220132409 b/db/schema_migrations/20230220132409 new file mode 100644 index 0000000000000000000000000000000000000000..417675aaf273a4a4c064b025eb545aef7676c402 --- /dev/null +++ b/db/schema_migrations/20230220132409 @@ -0,0 +1 @@ +b2aee06140d97dd9cd5d694b5d8538db92279aeba9e0e64375052ff455246647 \ No newline at end of file diff --git a/db/schema_migrations/20230220132410 b/db/schema_migrations/20230220132410 new file mode 100644 index 0000000000000000000000000000000000000000..39ee30408021aa5ca8f2b748811e304c40a02089 --- /dev/null +++ b/db/schema_migrations/20230220132410 @@ -0,0 +1 @@ +42814e8ab1b2ebb197f877736f8c9dddf5b9416c22f9c800c7a9d33cde164dd6 \ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index 6c15719abf19c2052aeef1c629f1e499754e9fb0..8d7ddffeda47c599e2935507ecb6dc7636891954 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -34944,10 +34944,7 @@ ALTER TABLE ONLY users_security_dashboard_projects ADD CONSTRAINT fk_rails_150cd5682c FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; ALTER TABLE ONLY ci_build_report_results - ADD CONSTRAINT fk_rails_16cb1ff064 FOREIGN KEY (build_id) REFERENCES ci_builds(id) ON DELETE CASCADE; - -ALTER TABLE ONLY ci_build_report_results - ADD CONSTRAINT fk_rails_16cb1ff064_p FOREIGN KEY (partition_id, build_id) REFERENCES ci_builds(partition_id, id) ON UPDATE CASCADE ON DELETE CASCADE NOT VALID; + ADD CONSTRAINT fk_rails_16cb1ff064_p FOREIGN KEY (partition_id, build_id) REFERENCES ci_builds(partition_id, id) ON UPDATE CASCADE ON DELETE CASCADE; ALTER TABLE ONLY project_deploy_tokens ADD CONSTRAINT fk_rails_170e03cbaf FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; diff --git a/spec/db/schema_spec.rb b/spec/db/schema_spec.rb index ab858f3b9998a8efe5a16cb9047904c02067a1bd..7b487e07e357085d002260a062177d795e806836 100644 --- a/spec/db/schema_spec.rb +++ b/spec/db/schema_spec.rb @@ -37,7 +37,7 @@ chat_teams: %w[team_id], ci_build_needs: %w[partition_id build_id], ci_build_pending_states: %w[partition_id build_id], - ci_build_report_results: %w[partition_id], + ci_build_report_results: %w[partition_id build_id], ci_build_trace_chunks: %w[partition_id build_id], ci_build_trace_metadata: %w[partition_id], ci_builds: %w[erased_by_id trigger_request_id partition_id],