Commit 498327b2 authored by Akihiko Odaki's avatar Akihiko Odaki Committed by Eugen Rochko

Exclude status itself from context query (#7083)

ancestor_statuses and descendant_statuses used to include the root status
itself, but the behavior is confusing because the root status is not
an ancestor nor descendant.
parent 0893b166
......@@ -15,16 +15,12 @@ module StatusThreadingConcern
def ancestor_ids
Rails.cache.fetch("ancestors:#{id}") do
ancestors_without_self.pluck(:id)
ancestor_statuses.pluck(:id)
end
end
def ancestors_without_self
ancestor_statuses - [self]
end
def ancestor_statuses
Status.find_by_sql([<<-SQL.squish, id: id])
Status.find_by_sql([<<-SQL.squish, id: in_reply_to_id])
WITH RECURSIVE search_tree(id, in_reply_to_id, path)
AS (
SELECT id, in_reply_to_id, ARRAY[id]
......@@ -43,11 +39,7 @@ module StatusThreadingConcern
end
def descendant_ids
descendants_without_self.pluck(:id)
end
def descendants_without_self
descendant_statuses - [self]
descendant_statuses.pluck(:id)
end
def descendant_statuses
......@@ -56,7 +48,7 @@ module StatusThreadingConcern
AS (
SELECT id, ARRAY[id]
FROM statuses
WHERE id = :id
WHERE in_reply_to_id = :id
UNION ALL
SELECT statuses.id, path || statuses.id
FROM search_tree
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment