Use partial GIN index for non-latin issue searches
What does this MR do and why?
This is the 2nd attempt to introduce !92739 (merged). The regex has been updated to the correct one and these indexes have been created on GitLab.com with !102353 (merged).
Verified on dblab:
gitlabhq_dblab-# \d index_issues_on_title_trigram_non_latin
Index "public.index_issues_on_title_trigram_non_latin"
Column | Type | Key? | Definition | Storage | Stats target
--------+---------+------+------------+---------+--------------
title | integer | yes | title | plain |
gin, for table "public.issues", predicate (title::text !~ similar_escape('[\u0000-\u02FF\u1E00-\u1EFF\u2070-\u218F]*'::text, NULL::text) OR description !~ similar_escape('[\u0000-\u02FF\u1E00-\u1EFF\u2070-\u218F]*'::text, NULL::text))
gitlabhq_dblab-# \d index_issues_on_description_trigram_non_latin
Index "public.index_issues_on_description_trigram_non_latin"
Column | Type | Key? | Definition | Storage | Stats target
-------------+---------+------+-------------+---------+--------------
description | integer | yes | description | plain |
gin, for table "public.issues", predicate (title::text !~ similar_escape('[\u0000-\u02FF\u1E00-\u1EFF\u2070-\u218F]*'::text, NULL::text) OR description !~ similar_escape('[\u0000-\u02FF\u1E00-\u1EFF\u2070-\u218F]*'::text, NULL::text))
Sample query with non-english search terms
Before: https://console.postgres.ai/gitlab/gitlab-production-tunnel-pg12/sessions/13090/commands/45911
After: https://console.postgres.ai/gitlab/gitlab-production-tunnel-pg12/sessions/13090/commands/45908
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.
Related to #364556 (closed)
Edited by euko