Commit d1c761b3 authored by Sean McGivern's avatar Sean McGivern

Make epic_issues relative_position migration more robust

If someone installed EE, then downgraded to CE before this column was
added, upgrading to the latest version of CE will fail:

1. We have a backport migration for the entire EE schema but the table
   `epic_issues` exists, just not the `relative_position` column.
2. The migration that changes the default (quite reasonably) didn't
   check if the column exists.

If the column doesn't exist, we can just create it with the correct
default.
parent f8f8ed47
......@@ -3,8 +3,23 @@
class RemoveEpicIssuesDefaultRelativePosition < ActiveRecord::Migration[5.2]
DOWNTIME = false
def change
change_column_null :epic_issues, :relative_position, true
change_column_default :epic_issues, :relative_position, from: 1073741823, to: nil
include Gitlab::Database::MigrationHelpers
disable_ddl_transaction!
def up
# The column won't exist if someone installed EE, downgraded to CE
# before it was added in EE, then tries to upgrade CE.
if column_exists?(:epic_issues, :relative_position)
change_column_null :epic_issues, :relative_position, true
change_column_default :epic_issues, :relative_position, from: 1073741823, to: nil
else
add_column_with_default(:epic_issues, :relative_position, :integer, default: nil, allow_null: true)
end
end
def down
change_column_default :epic_issues, :relative_position, from: nil, to: 1073741823
change_column_null :epic_issues, :relative_position, false
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment