From 88a8086ad38d7d0fc0992c06aa5dff71597fbb0b Mon Sep 17 00:00:00 2001 From: Norm Date: Fri, 25 Oct 2024 12:25:18 -0400 Subject: [PATCH] Use LEFT JOIN instead of UNION for hashtag pruning --- lib/mix/tasks/pleroma/database.ex | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/lib/mix/tasks/pleroma/database.ex b/lib/mix/tasks/pleroma/database.ex index f85fe5bea..0a09a1c4a 100644 --- a/lib/mix/tasks/pleroma/database.ex +++ b/lib/mix/tasks/pleroma/database.ex @@ -343,13 +343,16 @@ def run(["prune_objects" | args]) do %{:num_rows => del_hashtags} = """ - DELETE FROM hashtags AS ht - WHERE NOT EXISTS ( - SELECT 1 FROM hashtags_objects hto - WHERE ht.id = hto.hashtag_id - UNION - SELECT 1 FROM user_follows_hashtag ufht - WHERE ht.id = ufht.hashtag_id) + DELETE FROM hashtags + USING hashtags AS ht + LEFT JOIN hashtags_objects hto + ON ht.id = hto.hashtag_id + LEFT JOIN user_follows_hashtag ufht + ON ht.id = ufht.hashtag_id + WHERE + hashtags.id = ht.id + AND hto.hashtag_id is NULL + AND ufht.hashtag_id is NULL """ |> Repo.query!()