Fix label filtering for labels in bad state
What does this MR do and why?
Labels are supposed to only have a project_id or a group_id. When they have both, filtering does not work due to the extra where clause.
This does not fix the root cause but allows filtering by labels that are in this state
Related to #291034 (closed) https://gitlab.com/gitlab-com/dev-sub-department/section-dev-request-for-help/-/issues/62
Before
SELECT "labels"."title", "labels"."id"
FROM (
(SELECT "labels".* FROM "labels" WHERE "labels"."project_id" IS NULL AND "labels"."group_id" IN (
SELECT namespaces.traversal_ids[array_length(namespaces.traversal_ids, 1)] AS id FROM "namespaces" WHERE "namespaces"."type" = 'Group' AND (traversal_ids @> ('{9970}'))
) AND "labels"."title" = 'bug'
) UNION ALL (
SELECT "labels".* FROM "labels" WHERE "labels"."group_id" IS NULL AND "labels"."project_id" IN (
SELECT "projects"."id" FROM "projects" WHERE "projects"."namespace_id" IN (SELECT namespaces.traversal_ids[array_length(namespaces.traversal_ids, 1)] AS id FROM "namespaces" WHERE "namespaces"."type" = 'Group' AND (traversal_ids @> ('{9970}')))
) AND "labels"."title" = 'bug')
) labels
After
SELECT "labels"."title", "labels"."id"
FROM (
(SELECT "labels".* FROM "labels" WHERE "labels"."group_id" IN (
SELECT namespaces.traversal_ids[array_length(namespaces.traversal_ids, 1)] AS id FROM "namespaces" WHERE "namespaces"."type" = 'Group' AND (traversal_ids @> ('{9970}'))
) AND "labels"."title" = 'bug'
) UNION ALL (
SELECT "labels".* FROM "labels" WHERE "labels"."project_id" IN (
SELECT "projects"."id" FROM "projects" WHERE "projects"."namespace_id" IN (SELECT namespaces.traversal_ids[array_length(namespaces.traversal_ids, 1)] AS id FROM "namespaces" WHERE "namespaces"."type" = 'Group' AND (traversal_ids @> ('{9970}')))
) AND "labels"."title" = 'bug')
) labels
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.
Edited by Heinrich Lee Yu