Drop CI Pipeline and CI Build DAST Foreign Keys
problem
dast has foreign keys that reference ci_builds and ci_pipelines. these will need to be removed and we will need to clean up orphaned records when linked ci_* records are deleted.
proposal
- add loose foreign keys to clean up oprhaned records
- drop foreign keys
merge requests
related issues
- Remove all foreign key constraints that connect between non
ci_*andci_*tables - Assess impact of CI Decomposition on DAST On-Demand
example
# frozen_string_literal: true
class DropCiForeignKeysForDast < Gitlab::Database::Migration[1.0]
include Gitlab::Database::MigrationHelpers::LooseForeignKeyHelpers
disable_ddl_transaction!
def up
remove_foreign_key_if_exists(:dast_profiles_pipelines, :ci_pipelines, name: 'fk_a60cad829d')
remove_foreign_key_if_exists(:dast_site_profiles_pipelines, :ci_pipelines, name: 'fk_53849b0ad5')
remove_foreign_key_if_exists(:dast_scanner_profiles_builds, :ci_builds, name: 'fk_e4c49200f8')
remove_foreign_key_if_exists(:dast_site_profiles_builds, :ci_builds, name: 'fk_a325505e99')
end
def down
add_concurrent_foreign_key(:dast_site_profiles_builds, :ci_builds, name: 'fk_a325505e99', column: :ci_build_id, on_delete: :cascade)
add_concurrent_foreign_key(:dast_scanner_profiles_builds, :ci_builds, name: 'fk_e4c49200f8', column: :ci_build_id, on_delete: :cascade)
add_concurrent_foreign_key(:dast_site_profiles_pipelines, :ci_pipelines, name: 'fk_53849b0ad5', column: :ci_pipeline_id, on_delete: :cascade)
add_concurrent_foreign_key(:dast_profiles_pipelines, :ci_pipelines, name: 'fk_a60cad829d', column: :ci_pipeline_id, on_delete: :cascade)
end
end
Edited by Philip Cunningham