Draft: Prepare achievement_uploads
to be fully sharded
What does this MR do and why?
Addresses #398199
- Create trigger for
achievement_uploads
: setnamespace_id
from parentachievement
when missing - Add
NOT NULL (NOT VALID)
constraint onachievement_uploads
sharding key: applies to new or updated rows only - Remove orphan
uploads
pertaining to deletedachievements
and backfillachievement_uploads
with 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