aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAriadne Conill <ariadne@dereferenced.org>2019-09-06 23:14:29 +0000
committerAriadne Conill <ariadne@dereferenced.org>2019-09-06 23:14:29 +0000
commit40a61532cadbac8b196917c6f5843c3f6cd7e78b (patch)
treedb1fc156e659cfcb5ec3ba9502ac9f2fc5ee6959
parent5effb2cbca51534a68dad1c5a4dd24b1ae08360a (diff)
downloadpleroma-40a61532cadbac8b196917c6f5843c3f6cd7e78b.tar.gz
activity: when restricting deactivated users, precalculate the user list
the PostgreSQL query planner is easily confused due to the complexity of certain queries we make. while we plan to simplify these queries through unification of activities and objects, we are not yet there. it has been discovered that using a precalculated list of deactivated users encourages the query planner to prefer simpler indices instead of the activity_visibility index. accordingly, drop the subquery and precalc the user list instead.
-rw-r--r--lib/pleroma/activity.ex10
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex
index 2d4e9da0c..a7844c36b 100644
--- a/lib/pleroma/activity.ex
+++ b/lib/pleroma/activity.ex
@@ -362,12 +362,12 @@ defmodule Pleroma.Activity do
end
def restrict_deactivated_users(query) do
+ deactivated_users =
+ from(u in User.Query.build(deactivated: true), select: u.ap_id)
+ |> Repo.all()
+
from(activity in query,
- where:
- fragment(
- "? not in (SELECT ap_id FROM users WHERE info->'deactivated' @> 'true')",
- activity.actor
- )
+ where: activity.actor not in ^deactivated_users
)
end