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
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.