diff --git a/db/migrate/20180812173710_copy_status_stats.rb b/db/migrate/20180812173710_copy_status_stats.rb index e441808e2..850aa9c13 100644 --- a/db/migrate/20180812173710_copy_status_stats.rb +++ b/db/migrate/20180812173710_copy_status_stats.rb @@ -2,19 +2,18 @@ class CopyStatusStats < ActiveRecord::Migration[5.2] disable_ddl_transaction! def up - # FIXME upserts don't work in PostgreSQL 9.4, so we're skipping this for now. - # safety_assured do - # Status.unscoped.select('id').find_in_batches(batch_size: 5_000) do |statuses| - # execute <<-SQL.squish - # INSERT INTO status_stats (status_id, reblogs_count, favourites_count, created_at, updated_at) - # SELECT id, reblogs_count, favourites_count, created_at, updated_at - # FROM statuses - # WHERE id IN (#{statuses.map(&:id).join(', ')}) - # ON CONFLICT (status_id) DO UPDATE - # SET reblogs_count = EXCLUDED.reblogs_count, favourites_count = EXCLUDED.favourites_count - # SQL - # end - # end + safety_assured do + Status.unscoped.select('id').find_in_batches(batch_size: 5_000) do |statuses| + execute <<-SQL.squish + INSERT INTO status_stats (status_id, reblogs_count, favourites_count, created_at, updated_at) + SELECT id, reblogs_count, favourites_count, created_at, updated_at + FROM statuses + WHERE id IN (#{statuses.map(&:id).join(', ')}) + ON CONFLICT (status_id) DO UPDATE + SET reblogs_count = EXCLUDED.reblogs_count, favourites_count = EXCLUDED.favourites_count + SQL + end + end end def down