Search: Change search method based on detected pg version
authorlain <lain@soykaf.club>
Fri, 20 Nov 2020 15:26:43 +0000 (16:26 +0100)
committerlain <lain@soykaf.club>
Fri, 20 Nov 2020 15:26:43 +0000 (16:26 +0100)
lib/pleroma/activity/search.ex
test/pleroma/activity/search_test.exs

index cc98e2d06597b4bf88d380432e83ae0adb793188..ea9783225129852f05f849049843ac7d0cea5f56 100644 (file)
@@ -19,7 +19,12 @@ defmodule Pleroma.Activity.Search do
     offset = Keyword.get(options, :offset, 0)
     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.with_preloaded_object()
index 15591b726b35f57b14275516d06c5e3f92495007..37c0feeeab04d38ee9874241659562a2d34d1221 100644 (file)
@@ -18,8 +18,9 @@ defmodule Pleroma.Activity.SearchTest do
     assert result.id == post.id
   end
 
-  test "using plainto_tsquery" do
-    clear_config([:instance, :search_function], :plain)
+  test "using plainto_tsquery on postgres < 11" do
+    old_config = Application.get_env(:postgres, :version)
+    Application.put_env(:postgres, :version, 10.0)
 
     user = insert(:user)
     {:ok, post} = CommonAPI.post(user, %{status: "it's wednesday my dudes"})
@@ -29,11 +30,11 @@ defmodule Pleroma.Activity.SearchTest do
     assert [result] = Search.search(nil, "wednesday -dudes")
 
     assert result.id == post.id
+
+    Application.put_env(:postgres, :version, old_config)
   end
 
   test "using websearch_to_tsquery" do
-    clear_config([:instance, :search_function], :websearch)
-
     user = insert(:user)
     {:ok, _post} = CommonAPI.post(user, %{status: "it's wednesday my dudes"})
     {:ok, other_post} = CommonAPI.post(user, %{status: "it's wednesday my bros"})