Skip to content

Fix label filtering for labels in bad state

Heinrich Lee Yu requested to merge 291034-fix-label-filter-with-bad-data into master

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.

Edited by Heinrich Lee Yu

Merge request reports