Search: Change search method based on detected pg version

This commit is contained in:
lain 2020-11-20 16:26:43 +01:00
parent a407e33c78
commit 9a1e5f5d48
2 changed files with 11 additions and 5 deletions

View file

@ -19,7 +19,12 @@ def search(user, search_query, options \\ []) do
offset = Keyword.get(options, :offset, 0) offset = Keyword.get(options, :offset, 0)
author = Keyword.get(options, :author) author = Keyword.get(options, :author)
search_function = Pleroma.Config.get([:instance, :search_function], :plain) search_function =
if Application.get_env(:postgres, :version) >= 11 do
:websearch
else
:plain
end
Activity Activity
|> Activity.with_preloaded_object() |> Activity.with_preloaded_object()

View file

@ -18,8 +18,9 @@ test "it finds something" do
assert result.id == post.id assert result.id == post.id
end end
test "using plainto_tsquery" do test "using plainto_tsquery on postgres < 11" do
clear_config([:instance, :search_function], :plain) old_config = Application.get_env(:postgres, :version)
Application.put_env(:postgres, :version, 10.0)
user = insert(:user) user = insert(:user)
{:ok, post} = CommonAPI.post(user, %{status: "it's wednesday my dudes"}) {:ok, post} = CommonAPI.post(user, %{status: "it's wednesday my dudes"})
@ -29,11 +30,11 @@ test "using plainto_tsquery" do
assert [result] = Search.search(nil, "wednesday -dudes") assert [result] = Search.search(nil, "wednesday -dudes")
assert result.id == post.id assert result.id == post.id
Application.put_env(:postgres, :version, old_config)
end end
test "using websearch_to_tsquery" do test "using websearch_to_tsquery" do
clear_config([:instance, :search_function], :websearch)
user = insert(:user) user = insert(:user)
{:ok, _post} = CommonAPI.post(user, %{status: "it's wednesday my dudes"}) {:ok, _post} = CommonAPI.post(user, %{status: "it's wednesday my dudes"})
{:ok, other_post} = CommonAPI.post(user, %{status: "it's wednesday my bros"}) {:ok, other_post} = CommonAPI.post(user, %{status: "it's wednesday my bros"})