Draft: Prepare achievement_uploads to be fully sharded
What does this MR do and why?
Addresses #398199
- Create trigger for
achievement_uploads: setnamespace_idfrom parentachievementwhen missing - Add
NOT NULL (NOT VALID)constraint onachievement_uploadssharding key: applies to new or updated rows only - Remove orphan
uploadspertaining to deletedachievementsand backfillachievement_uploadswith sharding key
** Background: achievement_uploads is a partition of uploads
SQL
DELETE FROM "uploads" WHERE ("uploads"."id") IN (SELECT "uploads"."id" FROM "uploads" LEFT JOIN achievements ON achievements.id = uploads.model_id WHERE "uploads"."id" BETWEEN 91 AND 95 AND "uploads"."id" >= 91 AND "uploads"."id" < 92 AND "uploads"."model_type" = 'Achievements::Achievement' AND "achievements"."id" IS NULL)
Query plan: https://postgres.ai/console/gitlab/gitlab-production-main/sessions/44190/commands/135396
UPDATE "uploads" SET created_at = created_at WHERE "uploads"."id" BETWEEN 91 AND 95 AND "uploads"."id" >= 91 AND "uploads"."id" < 92 AND "uploads"."model_type" = 'Achievements::Achievement' AND "uploads"."namespace_id" IS NULL
Query plan: https://postgres.ai/console/gitlab/gitlab-production-main/sessions/44190/commands/135397
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 Tomasz Skorupa