summaryrefslogtreecommitdiff
path: root/db
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-06-06 14:10:50 +0200
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-06-06 14:10:50 +0200
commit8e071f28097b2c55b9e8d1b3a7ced4cdd04ef44d (patch)
treedea02b489c41af11a444717a416af79b83a8a77d /db
parentcc1e2a2bef324fe5869393e04be2feed22576667 (diff)
downloadgitlab-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.rb13
-rw-r--r--db/migrate/20170526185602_add_stage_id_to_ci_builds.rb14
-rw-r--r--db/post_migrate/20170526185842_migrate_pipeline_stages.rb4
-rw-r--r--db/post_migrate/20170526190708_create_foreign_keys_for_pipeline_stages.rb35
-rw-r--r--db/schema.rb8
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