Skip to content
  • tusooa's avatar
    Make activity search properly use GIN indexes · bd0eb1c6
    tusooa authored and Haelwenn's avatar Haelwenn committed
    The original approach to search in GIN indexes is to use
    `to_tsvector(text)` in the WHERE clause of the query. According to
    postgres docs [pdoc], this method does not make use of the index,
    while `to_tsvector(config, text)` does. This commit changed the
    query to use the two-argument `to_tsvector()`.
    
    [pdoc]: https://www.postgresql.org/docs/12/textsearch-tables.html
    
    To obtain the search config in use, we make a query to the db first.
    The `::regconfig::oid` hack is needed because Postgrex does not support
    regconfig type directly [postgrexbug]. I use the conversion from and to
    `oid` instead of `text` because I tested in the actual DB and querying
    using the conversion via `text` is slow just as the one-argument
    `to_tsvector()` variant.
    
    [postgrexbug]: https://github.com/elixir-ecto/postgrex/issues/502
    
    Backport of: !3519
    
    Closes: #2758
    bd0eb1c6
To find the state of this project's repository at the time of any of these versions, check out the tags.