Skip to content

Refactor add_concurrent_partitioned_foreign_key migration helper

Ref: #382033 (closed)

What does this MR do and why?

It refactors add_concurrent_partitioned_foreign_key migration helper to allow multiple column references. It also alows to skip adding the FK on the parent table for async validation. Example of usage:

First migration to add the FK on all partitions:

add_concurrent_partitioned_foreign_key(
 :p_ci_builds_metadata,
 :ci_builds,
 column: [:partition_id, :build_id],
 target_column: [:partition_id, :id],
 name: :fk_multiple_columns,
 validate: false
)

Second migration to asynchronously validate the constraints on partitions:

prepare_partitioned_async_foreign_key_validation(
  :p_ci_builds_metadata,
  name: fk_multiple_columns
)

Third migration to add the FK on the parent table and on any new partitions that might have been created:

add_concurrent_partitioned_foreign_key(
 :p_ci_builds_metadata,
 :ci_builds,
 column: [:partition_id, :build_id],
 target_column: [:partition_id, :id],
 name: :fk_multiple_columns,
 validate: true
)

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Marius Bobin

Merge request reports

Loading