discourse/db/migrate/20121123054127_make_post_number_distinct.rb
Sam Saffron 30990006a9 DEV: enable frozen string literal on all files
This reduces chances of errors where consumers of strings mutate inputs
and reduces memory usage of the app.

Test suite passes now, but there may be some stuff left, so we will run
a few sites on a branch prior to merging
2019-05-13 09:31:32 +08:00

31 lines
586 B
Ruby

# frozen_string_literal: true
class MakePostNumberDistinct < ActiveRecord::Migration[4.2]
def up
DB.exec('update posts p
set post_number = calc
from
(
select
id,
post_number,
topic_id,
row_number() over (partition by topic_id order by post_number, created_at) calc
from posts
where topic_id in (
select topic_id from posts
group by topic_id, post_number
having count(*)>1
)
) as X
where calc <> p.post_number and X.id = p.id')
end
def down
# don't want to mess with the index ... its annoying
raise ActiveRecord::IrreversibleMigration
end
end