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