PostQueryBuilder#normalize_query: don't normalize aliases by default.

`normalize_query` is used in certain places on the post index page where
we don't want to pay the cost of looking up tag aliases (namely inside
fast_count, in post_search_count_js, and in tag change notices). Don't
normalize aliases by default unless we need to.
This commit is contained in:
evazion
2020-04-27 17:39:10 -05:00
parent d5a7fafca1
commit 2feac0de03
3 changed files with 5 additions and 4 deletions

View File

@@ -746,7 +746,7 @@ class PostQueryBuilder
end
end
def normalize_query(normalize_aliases: true, sort: true)
def normalize_query(normalize_aliases: false, sort: true)
tags = split_query
tags = tags.map { |t| Tag.normalize_name(t) }
tags = TagAlias.to_aliased(tags) if normalize_aliases

View File

@@ -136,7 +136,7 @@ class SavedSearch < ApplicationRecord
def queries_for(user_id, label: nil, options: {})
searches = SavedSearch.where(user_id: user_id)
searches = searches.labeled(label) if label.present?
queries = searches.pluck(:query).map { |query| PostQueryBuilder.new(query).normalize_query(sort: true) }
queries = searches.pluck(:query).map { |query| PostQueryBuilder.new(query).normalize_query(normalize_aliases: true, sort: true) }
queries.sort.uniq
end
end
@@ -146,7 +146,7 @@ class SavedSearch < ApplicationRecord
end
def normalize_query
self.query = PostQueryBuilder.new(query).normalize_query(sort: false)
self.query = PostQueryBuilder.new(query).normalize_query(normalize_aliases: true, sort: false)
end
end

View File

@@ -943,7 +943,8 @@ class PostQueryBuilderTest < ActiveSupport::TestCase
assert_equal("foo", PostQueryBuilder.new(" foo ").normalize_query)
assert_equal("foo", PostQueryBuilder.new("FOO").normalize_query)
assert_equal("foo", PostQueryBuilder.new("foo foo").normalize_query)
assert_equal("grey", PostQueryBuilder.new("gray").normalize_query)
assert_equal("gray", PostQueryBuilder.new("gray").normalize_query)
assert_equal("grey", PostQueryBuilder.new("gray").normalize_query(normalize_aliases: true))
assert_equal("aaa bbb", PostQueryBuilder.new("bbb aaa").normalize_query)
end
end