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.
This commit is contained in:
parent
5effb2cbca
commit
40a61532ca
|
@ -362,12 +362,12 @@ def query_by_actor(actor) do
|
||||||
end
|
end
|
||||||
|
|
||||||
def restrict_deactivated_users(query) do
|
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,
|
from(activity in query,
|
||||||
where:
|
where: activity.actor not in ^deactivated_users
|
||||||
fragment(
|
|
||||||
"? not in (SELECT ap_id FROM users WHERE info->'deactivated' @> 'true')",
|
|
||||||
activity.actor
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue