Skip to content

Update MergeRequestDiff#commit_shas to query metadata table

What does this MR do and why?

In MergeRequestDiff#commit_shas, we query commit SHAs from the merge_request_diff_commits table.

Since the column merge_request_diff_commits.sha will be moved to the merge_request_commits_metadata table, we need to update the method to look in this table as well. We need to query both tables for a transitional period until we backfill the merge_request_commits_metadata records for every commit.

This change is being added behind the FF merge_request_diff_commits_dedup, which has not been enabled yet.

References

Related to #527236

Database changes

See inline comment for more details.

previous query
SELECT
    "merge_request_diff_commits"."sha"
FROM
    "merge_request_diff_commits"
WHERE
    "merge_request_diff_commits"."merge_request_diff_id" = 1
ORDER BY
    "merge_request_diff_commits"."merge_request_diff_id" ASC,
    "merge_request_diff_commits"."relative_order" ASC
LIMIT 100;

plan: https://console.postgres.ai/gitlab/gitlab-production-main/sessions/44802/commands/137586

new query
SELECT
    encode(COALESCE(merge_request_commits_metadata.sha, merge_request_diff_commits.sha), 'hex')
FROM
    "merge_request_diff_commits"
    LEFT JOIN merge_request_commits_metadata ON merge_request_commits_metadata.id = merge_request_diff_commits.merge_request_commits_metadata_id
        AND merge_request_commits_metadata.project_id = 7
WHERE
    "merge_request_diff_commits"."merge_request_diff_id" = 7
ORDER BY
    "merge_request_diff_commits"."relative_order" ASC
LIMIT 100;

plan: https://console.postgres.ai/gitlab/gitlab-production-main/sessions/44802/commands/137572

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Eugenia Grieff

Merge request reports

Loading