Issue search optimization not working after PG12 upgrade
Starting from PG12, non-recursive CTEs are not materialized by default. See #245323 (closed) / !56976 (merged)
For IssuableFinder
, we use Gitlab::SQL::RecursiveCTE
but do not actually use this recursively.
This results in a query like so:
WITH "issues" AS ((SELECT "issues".* FROM "issues" WHERE "issues"."project_id" = 1304532 AND ("issues"."state_id" IN (1)) AND "issues"."issue_type" IN (0, 1))) SELECT "issues".* FROM issues WHERE ("issues"."title" ILIKE '%throttle%' AND "issues"."title" ILIKE '%user%' AND "issues"."title" ILIKE '%allow%' AND "issues"."title" ILIKE '%list%' OR "issues"."description" ILIKE '%throttle%' AND "issues"."description" ILIKE '%user%' AND "issues"."description" ILIKE '%allow%' AND "issues"."description" ILIKE '%list%') ORDER BY "issues"."created_at" DESC, "issues"."id" DESC LIMIT 21 OFFSET 0