Fix timeouts in source:<url> searches and bookmarklet.
* Change the source index on posts from `(lower(source) gin_trgm_ops) WHERE source != ''` to just `(source gin_trgm_ops)`. The WHERE clause prevented the index from being used in source:<url> searches because we didn't specify the `source != ''` clause in the search itself. Excluding blank sources only saved a marginal amount of space anyway. This fixes timeouts in source:<url> searches and in the bookmarklet (since we do a source dupe check on the upload page too). * Also switch from indexing `lower(name)` to `name` on pools and users. We don't need to lowercase the column because GIN indexes can be used with both LIKE and ILIKE queries.
This commit is contained in:
@@ -47,7 +47,7 @@ class Pool < ApplicationRecord
|
||||
def name_matches(name)
|
||||
name = normalize_name_for_search(name)
|
||||
name = "*#{name}*" unless name =~ /\*/
|
||||
where("lower(pools.name) like ? escape E'\\\\'", name.to_escaped_for_sql_like)
|
||||
where_ilike(:name, name)
|
||||
end
|
||||
|
||||
def default_order
|
||||
@@ -108,7 +108,7 @@ class Pool < ApplicationRecord
|
||||
if name =~ /^\d+$/
|
||||
where("pools.id = ?", name.to_i).first
|
||||
elsif name
|
||||
where("lower(pools.name) = ?", normalize_name_for_search(name)).first
|
||||
where_ilike(:name, normalize_name_for_search(name)).first
|
||||
else
|
||||
nil
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user