Class: Gitlab::BackgroundMigration::BackfillRelatedEpicLinksToIssueLinks

Inherits:
BatchedMigrationJob show all
Defined in:
lib/gitlab/background_migration/backfill_related_epic_links_to_issue_links.rb

Constant Summary

Constants inherited from BatchedMigrationJob

Gitlab::BackgroundMigration::BatchedMigrationJob::DEFAULT_FEATURE_CATEGORY

Constants included from Database::DynamicModelHelpers

Database::DynamicModelHelpers::BATCH_SIZE

Instance Method Summary collapse

Methods inherited from BatchedMigrationJob

#batch_metrics, cursor, cursor?, cursor_columns, feature_category, #filter_batch, generic_instance, #initialize, job_arguments, job_arguments_count, operation_name, scope_to

Methods included from Database::DynamicModelHelpers

#define_batchable_model, #each_batch, #each_batch_range

Constructor Details

This class inherits a constructor from Gitlab::BackgroundMigration::BatchedMigrationJob

Instance Method Details

#performObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/gitlab/background_migration/backfill_related_epic_links_to_issue_links.rb', line 9

def perform
  each_sub_batch do |sub_batch|
    values_subquery = sub_batch.select(select_fields_to_insert_sql)
    values_subquery = values_subquery.joins(joins_target_and_source_epic_sql)

    connection.execute(<<~SQL)
      INSERT INTO issue_links (source_id, target_id, link_type, created_at, updated_at)
       #{values_subquery.to_sql}
      ON CONFLICT (source_id, target_id)
      DO UPDATE SET
        link_type = EXCLUDED.link_type,
        created_at = EXCLUDED.created_at,
        updated_at = EXCLUDED.updated_at
    SQL
  end
end