diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2017-06-06 14:10:50 +0200 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2017-06-06 14:10:50 +0200 |
commit | 8e071f28097b2c55b9e8d1b3a7ced4cdd04ef44d (patch) | |
tree | dea02b489c41af11a444717a416af79b83a8a77d /db | |
parent | cc1e2a2bef324fe5869393e04be2feed22576667 (diff) | |
download | gitlab-ce-8e071f28097b2c55b9e8d1b3a7ced4cdd04ef44d.tar.gz |
Improve indexes and refs in pipeline stages migrations
Diffstat (limited to 'db')
-rw-r--r-- | db/migrate/20170525132202_create_pipeline_stages.rb | 13 | ||||
-rw-r--r-- | db/migrate/20170526185602_add_stage_id_to_ci_builds.rb | 14 | ||||
-rw-r--r-- | db/post_migrate/20170526185842_migrate_pipeline_stages.rb | 4 | ||||
-rw-r--r-- | db/post_migrate/20170526190708_create_foreign_keys_for_pipeline_stages.rb | 35 | ||||
-rw-r--r-- | db/schema.rb | 8 |
5 files changed, 31 insertions, 43 deletions
diff --git a/db/migrate/20170525132202_create_pipeline_stages.rb b/db/migrate/20170525132202_create_pipeline_stages.rb index 634f2c1156e..25656f2a2c2 100644 --- a/db/migrate/20170525132202_create_pipeline_stages.rb +++ b/db/migrate/20170525132202_create_pipeline_stages.rb @@ -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 diff --git a/db/migrate/20170526185602_add_stage_id_to_ci_builds.rb b/db/migrate/20170526185602_add_stage_id_to_ci_builds.rb index 0788f15f7c5..e8009e74ea5 100644 --- a/db/migrate/20170526185602_add_stage_id_to_ci_builds.rb +++ b/db/migrate/20170526185602_add_stage_id_to_ci_builds.rb @@ -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 diff --git a/db/post_migrate/20170526185842_migrate_pipeline_stages.rb b/db/post_migrate/20170526185842_migrate_pipeline_stages.rb index 382791c4664..37ccf9fc105 100644 --- a/db/post_migrate/20170526185842_migrate_pipeline_stages.rb +++ b/db/post_migrate/20170526185842_migrate_pipeline_stages.rb @@ -16,8 +16,4 @@ class MigratePipelineStages < ActiveRecord::Migration ORDER BY MAX(stage_idx) SQL end - - def down - execute('TRUNCATE TABLE ci_stages') - end end diff --git a/db/post_migrate/20170526190708_create_foreign_keys_for_pipeline_stages.rb b/db/post_migrate/20170526190708_create_foreign_keys_for_pipeline_stages.rb deleted file mode 100644 index 5ae3c1ae098..00000000000 --- a/db/post_migrate/20170526190708_create_foreign_keys_for_pipeline_stages.rb +++ /dev/null @@ -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 diff --git a/db/schema.rb b/db/schema.rb index 23c3ecdd517..06dfea8cfb5 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -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 |