Improve stages index migration code readability
This commit is contained in:
parent
9f2350644b
commit
d7e8bfac48
|
@ -4,18 +4,20 @@
|
|||
module Gitlab
|
||||
module BackgroundMigration
|
||||
class MigrateStageIndex
|
||||
module Migratable
|
||||
class Stage < ActiveRecord::Base
|
||||
self.table_name = 'ci_stages'
|
||||
def perform(start_id, stop_id)
|
||||
migrate_stage_index_sql(start_id.to_i, stop_id.to_i).tap do |sql|
|
||||
ActiveRecord::Base.connection.execute(sql)
|
||||
end
|
||||
end
|
||||
|
||||
def perform(start_id, stop_id)
|
||||
private
|
||||
|
||||
def migrate_stage_index_sql(start_id, stop_id)
|
||||
if Gitlab::Database.postgresql?
|
||||
sql = <<~SQL
|
||||
<<~SQL
|
||||
WITH freqs AS (
|
||||
SELECT stage_id, stage_idx, COUNT(*) AS freq FROM ci_builds
|
||||
WHERE stage_id BETWEEN #{start_id.to_i} AND #{stop_id.to_i}
|
||||
WHERE stage_id BETWEEN #{start_id} AND #{stop_id}
|
||||
AND stage_idx IS NOT NULL
|
||||
GROUP BY stage_id, stage_idx
|
||||
), indexes AS (
|
||||
|
@ -29,18 +31,16 @@ module Gitlab
|
|||
AND ci_stages.index IS NULL;
|
||||
SQL
|
||||
else
|
||||
sql = <<~SQL
|
||||
<<~SQL
|
||||
UPDATE ci_stages
|
||||
SET index =
|
||||
(SELECT stage_idx FROM ci_builds
|
||||
WHERE ci_builds.stage_id = ci_stages.id
|
||||
GROUP BY ci_builds.stage_idx ORDER BY COUNT(*) DESC LIMIT 1)
|
||||
WHERE ci_stages.id BETWEEN #{start_id.to_i} AND #{stop_id.to_i}
|
||||
WHERE ci_stages.id BETWEEN #{start_id} AND #{stop_id}
|
||||
AND ci_stages.index IS NULL
|
||||
SQL
|
||||
end
|
||||
|
||||
ActiveRecord::Base.connection.execute(sql)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue