discourse/db/migrate/20121123054127_make_post_number_distinct.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

31 lines
586 B
Ruby
Raw Normal View History

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