Merge branch 'fix-migration' into 'master'

Fix ci_projects migration by using the value only from latest row [ci skip]

This is needed, because for some projects we have duplicate ci_projects.
This was introduced by lack of DB uniqueness on ci_projects.gitlab_id.

The MR fixes edge case by selecting value from latest.

/cc @yorickpeterse 

Fixes: gitlab-org/gitlab-ce#4123


See merge request !2133
This commit is contained in:
Kamil Trzciński 2015-12-17 10:49:31 +00:00
commit 110a5f9c96

View file

@ -26,7 +26,8 @@ class MigrateCiToProject < ActiveRecord::Migration
def migrate_project_column(column, new_column = nil) def migrate_project_column(column, new_column = nil)
new_column ||= column new_column ||= column
subquery = "SELECT ci_projects.#{column} FROM ci_projects WHERE projects.id = ci_projects.gitlab_id" subquery = "SELECT ci_projects.#{column} FROM ci_projects WHERE projects.id = ci_projects.gitlab_id " \
'ORDER BY ci_projects.updated_at DESC LIMIT 1'
execute("UPDATE projects SET #{new_column}=(#{subquery}) WHERE (#{subquery}) IS NOT NULL") execute("UPDATE projects SET #{new_column}=(#{subquery}) WHERE (#{subquery}) IS NOT NULL")
end end