Improve indexes and refs in pipeline stages migrations
This commit is contained in:
parent
cc1e2a2bef
commit
8e071f2809
|
@ -3,12 +3,23 @@ class CreatePipelineStages < ActiveRecord::Migration
|
|||
|
||||
DOWNTIME = false
|
||||
|
||||
def change
|
||||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
create_table :ci_stages do |t|
|
||||
t.integer :project_id
|
||||
t.integer :pipeline_id
|
||||
t.timestamps null: true
|
||||
t.string :name
|
||||
end
|
||||
|
||||
add_concurrent_foreign_key :ci_stages, :projects, column: :project_id, on_delete: :cascade
|
||||
add_concurrent_foreign_key :ci_stages, :ci_pipelines, column: :pipeline_id, on_delete: :cascade
|
||||
add_concurrent_index :ci_stages, :project_id
|
||||
add_concurrent_index :ci_stages, :pipeline_id
|
||||
end
|
||||
|
||||
def down
|
||||
drop_table :ci_stages
|
||||
end
|
||||
end
|
||||
|
|
|
@ -3,7 +3,19 @@ class AddStageIdToCiBuilds < ActiveRecord::Migration
|
|||
|
||||
DOWNTIME = false
|
||||
|
||||
def change
|
||||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_column :ci_builds, :stage_id, :integer
|
||||
|
||||
add_concurrent_foreign_key :ci_builds, :ci_stages, column: :stage_id, on_delete: :cascade
|
||||
add_concurrent_index :ci_builds, :stage_id
|
||||
end
|
||||
|
||||
def down
|
||||
remove_concurrent_index :ci_builds, :stage_id
|
||||
remove_foreign_key :ci_builds, column: :stage_id
|
||||
|
||||
remove_column :ci_builds, :stage_id, :integer
|
||||
end
|
||||
end
|
||||
|
|
|
@ -16,8 +16,4 @@ class MigratePipelineStages < ActiveRecord::Migration
|
|||
ORDER BY MAX(stage_idx)
|
||||
SQL
|
||||
end
|
||||
|
||||
def down
|
||||
execute('TRUNCATE TABLE ci_stages')
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
class CreateForeignKeysForPipelineStages < ActiveRecord::Migration
|
||||
include Gitlab::Database::MigrationHelpers
|
||||
|
||||
DOWNTIME = false
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
disable_statement_timeout
|
||||
|
||||
execute <<~SQL
|
||||
DELETE FROM ci_stages
|
||||
WHERE NOT EXISTS (
|
||||
SELECT true FROM projects
|
||||
WHERE projects.id = ci_stages.project_id
|
||||
)
|
||||
SQL
|
||||
|
||||
execute <<~SQL
|
||||
DELETE FROM ci_builds
|
||||
WHERE NOT EXISTS (
|
||||
SELECT true FROM ci_stages
|
||||
WHERE ci_stages.id = ci_builds.stage_id
|
||||
)
|
||||
SQL
|
||||
|
||||
add_concurrent_foreign_key :ci_stages, :projects, column: :project_id, on_delete: :cascade
|
||||
add_concurrent_foreign_key :ci_builds, :ci_stages, column: :stage_id, on_delete: :cascade
|
||||
end
|
||||
|
||||
def down
|
||||
remove_foreign_key :ci_stages, column: :project_id
|
||||
remove_foreign_key :ci_builds, column: :stage_id
|
||||
end
|
||||
end
|
|
@ -11,7 +11,7 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20170526190708) do
|
||||
ActiveRecord::Schema.define(version: 20170526185921) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
|
@ -243,6 +243,7 @@ ActiveRecord::Schema.define(version: 20170526190708) do
|
|||
add_index "ci_builds", ["commit_id", "type", "ref"], name: "index_ci_builds_on_commit_id_and_type_and_ref", using: :btree
|
||||
add_index "ci_builds", ["project_id"], name: "index_ci_builds_on_project_id", using: :btree
|
||||
add_index "ci_builds", ["runner_id"], name: "index_ci_builds_on_runner_id", using: :btree
|
||||
add_index "ci_builds", ["stage_id"], name: "index_ci_builds_on_stage_id", using: :btree
|
||||
add_index "ci_builds", ["status", "type", "runner_id"], name: "index_ci_builds_on_status_and_type_and_runner_id", using: :btree
|
||||
add_index "ci_builds", ["status"], name: "index_ci_builds_on_status", using: :btree
|
||||
add_index "ci_builds", ["token"], name: "index_ci_builds_on_token", unique: true, using: :btree
|
||||
|
@ -330,12 +331,14 @@ ActiveRecord::Schema.define(version: 20170526190708) do
|
|||
create_table "ci_stages", force: :cascade do |t|
|
||||
t.integer "project_id"
|
||||
t.integer "pipeline_id"
|
||||
t.string "name"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.string "name"
|
||||
end
|
||||
|
||||
add_index "ci_stages", ["pipeline_id", "name"], name: "index_ci_stages_on_pipeline_id_and_name", using: :btree
|
||||
add_index "ci_stages", ["pipeline_id"], name: "index_ci_stages_on_pipeline_id", using: :btree
|
||||
add_index "ci_stages", ["project_id"], name: "index_ci_stages_on_project_id", using: :btree
|
||||
|
||||
create_table "ci_trigger_requests", force: :cascade do |t|
|
||||
t.integer "trigger_id", null: false
|
||||
|
@ -1497,6 +1500,7 @@ ActiveRecord::Schema.define(version: 20170526190708) do
|
|||
add_foreign_key "ci_pipeline_schedules", "users", column: "owner_id", name: "fk_9ea99f58d2", on_delete: :nullify
|
||||
add_foreign_key "ci_pipelines", "ci_pipeline_schedules", column: "pipeline_schedule_id", name: "fk_3d34ab2e06", on_delete: :nullify
|
||||
add_foreign_key "ci_pipelines", "ci_pipelines", column: "auto_canceled_by_id", name: "fk_262d4c2d19", on_delete: :nullify
|
||||
add_foreign_key "ci_stages", "ci_pipelines", column: "pipeline_id", name: "fk_fb57e6cc56", on_delete: :cascade
|
||||
add_foreign_key "ci_stages", "projects", name: "fk_2360681d1d", on_delete: :cascade
|
||||
add_foreign_key "ci_trigger_requests", "ci_triggers", column: "trigger_id", name: "fk_b8ec8b7245", on_delete: :cascade
|
||||
add_foreign_key "ci_triggers", "users", column: "owner_id", name: "fk_e8e10d1964", on_delete: :cascade
|
||||
|
|
Loading…
Reference in New Issue