Poll migration is not idempotent (#7964)

The migration script is not idempotent due to database constrains on the
poll related objects, namely:

polls: index_polls_on_post_id_and_name (post_id,name) UNIQUE
poll_options: index_poll_options_on_poll_id_and_digest  (poll_id,digest) UNIQUE
poll_votes:  index_poll_votes_on_poll_id_and_poll_option_id_and_user_id  (poll_id,poll_option_id,user_id) UNIQUE

This change skips a particular poll migration if it's already found on
the db.
This commit is contained in:
Eduardo Poleo 2019-08-08 12:48:53 -04:00 committed by Régis Hanol
parent 7c83d2eeb2
commit b500ef77d7
1 changed files with 2 additions and 0 deletions

View File

@ -95,6 +95,8 @@ class MigratePollsData < ActiveRecord::Migration[5.2]
step = poll["step"].to_i.clamp(0, max) step = poll["step"].to_i.clamp(0, max)
anonymous_voters = poll["anonymous_voters"].to_i.clamp(0, PG_INTEGER_MAX) anonymous_voters = poll["anonymous_voters"].to_i.clamp(0, PG_INTEGER_MAX)
next if Poll.exists?(post_id: r.post_id, name: escape(name))
poll_id = execute(<<~SQL poll_id = execute(<<~SQL
INSERT INTO polls ( INSERT INTO polls (
post_id, post_id,