Fix follow recommendation biased towards older accounts (#17126)
parent
0fc73bbcb9
commit
bda8e4f815
4 changed files with 51 additions and 4 deletions
@ -0,0 +1,24 @@ |
||||
class UpdateAccountSummariesToVersion2 < ActiveRecord::Migration[6.1] |
||||
def up |
||||
reapplication_follow_recommendations_v2 do |
||||
drop_view :account_summaries, materialized: true |
||||
create_view :account_summaries, version: 2, materialized: { no_data: true } |
||||
safety_assured { add_index :account_summaries, :account_id, unique: true } |
||||
end |
||||
end |
||||
|
||||
def down |
||||
reapplication_follow_recommendations_v2 do |
||||
drop_view :account_summaries, materialized: true |
||||
create_view :account_summaries, version: 1, materialized: { no_data: true } |
||||
safety_assured { add_index :account_summaries, :account_id, unique: true } |
||||
end |
||||
end |
||||
|
||||
def reapplication_follow_recommendations_v2 |
||||
drop_view :follow_recommendations, materialized: true |
||||
yield |
||||
create_view :follow_recommendations, version: 2, materialized: { no_data: true } |
||||
safety_assured { add_index :follow_recommendations, :account_id, unique: true } |
||||
end |
||||
end |
@ -0,0 +1,23 @@ |
||||
SELECT |
||||
accounts.id AS account_id, |
||||
mode() WITHIN GROUP (ORDER BY language ASC) AS language, |
||||
mode() WITHIN GROUP (ORDER BY sensitive ASC) AS sensitive |
||||
FROM accounts |
||||
CROSS JOIN LATERAL ( |
||||
SELECT |
||||
statuses.account_id, |
||||
statuses.language, |
||||
statuses.sensitive |
||||
FROM statuses |
||||
WHERE statuses.account_id = accounts.id |
||||
AND statuses.deleted_at IS NULL |
||||
AND statuses.reblog_of_id IS NULL |
||||
ORDER BY statuses.id DESC |
||||
LIMIT 20 |
||||
) t0 |
||||
WHERE accounts.suspended_at IS NULL |
||||
AND accounts.silenced_at IS NULL |
||||
AND accounts.moved_to_account_id IS NULL |
||||
AND accounts.discoverable = 't' |
||||
AND accounts.locked = 'f' |
||||
GROUP BY accounts.id |
Loading…
Reference in new issue