diff options
Diffstat (limited to 'db')
14 files changed, 318 insertions, 26 deletions
diff --git a/db/migrate/20170425112128_create_pipeline_schedules_table.rb b/db/migrate/20170425112128_create_pipeline_schedules_table.rb new file mode 100644 index 00000000000..3612a796ae8 --- /dev/null +++ b/db/migrate/20170425112128_create_pipeline_schedules_table.rb @@ -0,0 +1,28 @@ +class CreatePipelineSchedulesTable < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def up + create_table :ci_pipeline_schedules do |t| + t.string :description + t.string :ref + t.string :cron + t.string :cron_timezone + t.datetime :next_run_at + t.integer :project_id + t.integer :owner_id + t.boolean :active, default: true + t.datetime :deleted_at + + t.timestamps + end + + add_index(:ci_pipeline_schedules, :project_id) + add_index(:ci_pipeline_schedules, [:next_run_at, :active]) + end + + def down + drop_table :ci_pipeline_schedules + end +end diff --git a/db/migrate/20170425112628_remove_foreigh_key_ci_trigger_schedules.rb b/db/migrate/20170425112628_remove_foreigh_key_ci_trigger_schedules.rb new file mode 100644 index 00000000000..6116ca59ee4 --- /dev/null +++ b/db/migrate/20170425112628_remove_foreigh_key_ci_trigger_schedules.rb @@ -0,0 +1,13 @@ +class RemoveForeighKeyCiTriggerSchedules < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def up + remove_foreign_key :ci_trigger_schedules, column: :trigger_id + end + + def down + # no op, the foreign key should not have been here + end +end diff --git a/db/migrate/20170425114731_add_pipeline_schedule_id_to_pipelines.rb b/db/migrate/20170425114731_add_pipeline_schedule_id_to_pipelines.rb new file mode 100644 index 00000000000..ddb27d4dc81 --- /dev/null +++ b/db/migrate/20170425114731_add_pipeline_schedule_id_to_pipelines.rb @@ -0,0 +1,9 @@ +class AddPipelineScheduleIdToPipelines < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def change + add_column :ci_pipelines, :pipeline_schedule_id, :integer + end +end diff --git a/db/migrate/20170427215854_create_redirect_routes.rb b/db/migrate/20170427215854_create_redirect_routes.rb new file mode 100644 index 00000000000..2bf086b3e30 --- /dev/null +++ b/db/migrate/20170427215854_create_redirect_routes.rb @@ -0,0 +1,14 @@ +class CreateRedirectRoutes < ActiveRecord::Migration + # Set this constant to true if this migration requires downtime. + DOWNTIME = false + + def change + create_table :redirect_routes do |t| + t.integer :source_id, null: false + t.string :source_type, null: false + t.string :path, null: false + + t.timestamps null: false + end + end +end diff --git a/db/migrate/20170503184421_add_index_to_redirect_routes.rb b/db/migrate/20170503184421_add_index_to_redirect_routes.rb new file mode 100644 index 00000000000..9062cf19a73 --- /dev/null +++ b/db/migrate/20170503184421_add_index_to_redirect_routes.rb @@ -0,0 +1,21 @@ +# See http://doc.gitlab.com/ce/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class AddIndexToRedirectRoutes < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + # Set this constant to true if this migration requires downtime. + DOWNTIME = false + + disable_ddl_transaction! + + def up + add_concurrent_index(:redirect_routes, :path, unique: true) + add_concurrent_index(:redirect_routes, [:source_type, :source_id]) + end + + def down + remove_concurrent_index(:redirect_routes, :path) if index_exists?(:redirect_routes, :path) + remove_concurrent_index(:redirect_routes, [:source_type, :source_id]) if index_exists?(:redirect_routes, [:source_type, :source_id]) + end +end diff --git a/db/migrate/20170503185032_index_redirect_routes_path_for_like.rb b/db/migrate/20170503185032_index_redirect_routes_path_for_like.rb new file mode 100644 index 00000000000..5b8b6c828be --- /dev/null +++ b/db/migrate/20170503185032_index_redirect_routes_path_for_like.rb @@ -0,0 +1,29 @@ +# See http://doc.gitlab.com/ce/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class IndexRedirectRoutesPathForLike < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + # Set this constant to true if this migration requires downtime. + DOWNTIME = false + + INDEX_NAME = 'index_redirect_routes_on_path_text_pattern_ops' + + disable_ddl_transaction! + + def up + return unless Gitlab::Database.postgresql? + + unless index_exists?(:redirect_routes, :path, name: INDEX_NAME) + execute("CREATE INDEX CONCURRENTLY #{INDEX_NAME} ON redirect_routes (path varchar_pattern_ops);") + end + end + + def down + return unless Gitlab::Database.postgresql? + + if index_exists?(:redirect_routes, :path, name: INDEX_NAME) + execute("DROP INDEX CONCURRENTLY #{INDEX_NAME};") + end + end +end diff --git a/db/migrate/20170506085040_add_index_to_pipeline_pipeline_schedule_id.rb b/db/migrate/20170506085040_add_index_to_pipeline_pipeline_schedule_id.rb new file mode 100644 index 00000000000..08a7f3fc9ab --- /dev/null +++ b/db/migrate/20170506085040_add_index_to_pipeline_pipeline_schedule_id.rb @@ -0,0 +1,19 @@ +class AddIndexToPipelinePipelineScheduleId < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + unless index_exists?(:ci_pipelines, :pipeline_schedule_id) + add_concurrent_index(:ci_pipelines, :pipeline_schedule_id) + end + end + + def down + if index_exists?(:ci_pipelines, :pipeline_schedule_id) + remove_concurrent_index(:ci_pipelines, :pipeline_schedule_id) + end + end +end diff --git a/db/migrate/20170506091344_add_foreign_key_to_pipeline_schedules.rb b/db/migrate/20170506091344_add_foreign_key_to_pipeline_schedules.rb new file mode 100644 index 00000000000..7f2dba702af --- /dev/null +++ b/db/migrate/20170506091344_add_foreign_key_to_pipeline_schedules.rb @@ -0,0 +1,15 @@ +class AddForeignKeyToPipelineSchedules < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :ci_pipeline_schedules, :projects, column: :project_id + end + + def down + remove_foreign_key :ci_pipeline_schedules, :projects + end +end diff --git a/db/migrate/20170506185517_add_foreign_key_pipeline_schedules_and_pipelines.rb b/db/migrate/20170506185517_add_foreign_key_pipeline_schedules_and_pipelines.rb new file mode 100644 index 00000000000..55bf40ba24d --- /dev/null +++ b/db/migrate/20170506185517_add_foreign_key_pipeline_schedules_and_pipelines.rb @@ -0,0 +1,23 @@ +class AddForeignKeyPipelineSchedulesAndPipelines < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + on_delete = + if Gitlab::Database.mysql? + :nullify + else + 'SET NULL' + end + + add_concurrent_foreign_key :ci_pipelines, :ci_pipeline_schedules, + column: :pipeline_schedule_id, on_delete: on_delete + end + + def down + remove_foreign_key :ci_pipelines, column: :pipeline_schedule_id + end +end diff --git a/db/migrate/20170507205316_add_head_pipeline_id_to_merge_requests.rb b/db/migrate/20170507205316_add_head_pipeline_id_to_merge_requests.rb new file mode 100644 index 00000000000..8fc6e380a77 --- /dev/null +++ b/db/migrate/20170507205316_add_head_pipeline_id_to_merge_requests.rb @@ -0,0 +1,7 @@ +class AddHeadPipelineIdToMergeRequests < ActiveRecord::Migration + DOWNTIME = false + + def change + add_column :merge_requests, :head_pipeline_id, :integer + end +end diff --git a/db/post_migrate/20170425121605_migrate_trigger_schedules_to_pipeline_schedules.rb b/db/post_migrate/20170425121605_migrate_trigger_schedules_to_pipeline_schedules.rb new file mode 100644 index 00000000000..a44b399c4de --- /dev/null +++ b/db/post_migrate/20170425121605_migrate_trigger_schedules_to_pipeline_schedules.rb @@ -0,0 +1,41 @@ +class MigrateTriggerSchedulesToPipelineSchedules < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def up + connection.execute <<-SQL + INSERT INTO ci_pipeline_schedules ( + project_id, + created_at, + updated_at, + deleted_at, + cron, + cron_timezone, + next_run_at, + ref, + active, + owner_id, + description + ) + SELECT + ci_trigger_schedules.project_id, + ci_trigger_schedules.created_at, + ci_trigger_schedules.updated_at, + ci_trigger_schedules.deleted_at, + ci_trigger_schedules.cron, + ci_trigger_schedules.cron_timezone, + ci_trigger_schedules.next_run_at, + ci_trigger_schedules.ref, + ci_trigger_schedules.active, + ci_triggers.owner_id, + ci_triggers.description + FROM ci_trigger_schedules + INNER JOIN ci_triggers ON ci_trigger_schedules.trigger_id=ci_triggers.id; + SQL + end + + def down + # no op as the data has been removed + end +end diff --git a/db/post_migrate/20170425130047_drop_ci_trigger_schedules_table.rb b/db/post_migrate/20170425130047_drop_ci_trigger_schedules_table.rb new file mode 100644 index 00000000000..24750c58ef0 --- /dev/null +++ b/db/post_migrate/20170425130047_drop_ci_trigger_schedules_table.rb @@ -0,0 +1,32 @@ +class DropCiTriggerSchedulesTable < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + drop_table :ci_trigger_schedules + end + + def down + create_table "ci_trigger_schedules", force: :cascade do |t| + t.integer "project_id" + t.integer "trigger_id", null: false + t.datetime "deleted_at" + t.datetime "created_at" + t.datetime "updated_at" + t.string "cron" + t.string "cron_timezone" + t.datetime "next_run_at" + t.string "ref" + t.boolean "active" + end + + add_index "ci_trigger_schedules", %w(active next_run_at), name: "index_ci_trigger_schedules_on_active_and_next_run_at", using: :btree + add_index "ci_trigger_schedules", ["project_id"], name: "index_ci_trigger_schedules_on_project_id", using: :btree + add_index "ci_trigger_schedules", ["next_run_at"], name: "index_ci_trigger_schedules_on_next_run_at" + + add_concurrent_foreign_key "ci_trigger_schedules", "ci_triggers", column: :trigger_id, on_delete: :cascade + end +end diff --git a/db/post_migrate/20170508170547_add_head_pipeline_for_each_merge_request.rb b/db/post_migrate/20170508170547_add_head_pipeline_for_each_merge_request.rb new file mode 100644 index 00000000000..bc3850c0c23 --- /dev/null +++ b/db/post_migrate/20170508170547_add_head_pipeline_for_each_merge_request.rb @@ -0,0 +1,25 @@ +class AddHeadPipelineForEachMergeRequest < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def up + disable_statement_timeout + + pipelines = Arel::Table.new(:ci_pipelines) + merge_requests = Arel::Table.new(:merge_requests) + + head_id = pipelines. + project(Arel::Nodes::NamedFunction.new('max', [pipelines[:id]])). + from(pipelines). + where(pipelines[:ref].eq(merge_requests[:source_branch])). + where(pipelines[:project_id].eq(merge_requests[:source_project_id])) + + sub_query = Arel::Nodes::SqlLiteral.new(Arel::Nodes::Grouping.new(head_id).to_sql) + + update_column_in_batches(:merge_requests, :head_pipeline_id, sub_query) + end + + def down + end +end diff --git a/db/schema.rb b/db/schema.rb index ebe802a3087..b91b3e6e977 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: 20170504102911) do +ActiveRecord::Schema.define(version: 20170508170547) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -95,6 +95,7 @@ ActiveRecord::Schema.define(version: 20170504102911) do t.string "enabled_git_access_protocol" t.boolean "domain_blacklist_enabled", default: false t.text "domain_blacklist" + t.boolean "usage_ping_enabled", default: true, null: false t.boolean "koding_enabled" t.string "koding_url" t.text "sign_in_text_html" @@ -113,14 +114,13 @@ ActiveRecord::Schema.define(version: 20170504102911) do t.string "plantuml_url" t.boolean "plantuml_enabled" t.integer "terminal_max_session_time", default: 0, null: false - t.string "default_artifacts_expire_in", default: "0", null: false t.integer "unique_ips_limit_per_user" t.integer "unique_ips_limit_time_window" t.boolean "unique_ips_limit_enabled", default: false, null: false + t.string "default_artifacts_expire_in", default: "0", null: false + t.string "uuid" t.decimal "polling_interval_multiplier", default: 1.0, null: false t.integer "cached_markdown_version" - t.boolean "usage_ping_enabled", default: true, null: false - t.string "uuid" t.boolean "clientside_sentry_enabled", default: false, null: false t.string "clientside_sentry_dsn" end @@ -246,6 +246,23 @@ ActiveRecord::Schema.define(version: 20170504102911) do add_index "ci_builds", ["updated_at"], name: "index_ci_builds_on_updated_at", using: :btree add_index "ci_builds", ["user_id"], name: "index_ci_builds_on_user_id", using: :btree + create_table "ci_pipeline_schedules", force: :cascade do |t| + t.string "description" + t.string "ref" + t.string "cron" + t.string "cron_timezone" + t.datetime "next_run_at" + t.integer "project_id" + t.integer "owner_id" + t.boolean "active", default: true + t.datetime "deleted_at" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "ci_pipeline_schedules", ["next_run_at", "active"], name: "index_ci_pipeline_schedules_on_next_run_at_and_active", using: :btree + add_index "ci_pipeline_schedules", ["project_id"], name: "index_ci_pipeline_schedules_on_project_id", using: :btree + create_table "ci_pipelines", force: :cascade do |t| t.string "ref" t.string "sha" @@ -263,8 +280,10 @@ ActiveRecord::Schema.define(version: 20170504102911) do t.integer "user_id" t.integer "lock_version" t.integer "auto_canceled_by_id" + t.integer "pipeline_schedule_id" end + add_index "ci_pipelines", ["pipeline_schedule_id"], name: "index_ci_pipelines_on_pipeline_schedule_id", using: :btree add_index "ci_pipelines", ["project_id", "ref", "status"], name: "index_ci_pipelines_on_project_id_and_ref_and_status", using: :btree add_index "ci_pipelines", ["project_id", "sha"], name: "index_ci_pipelines_on_project_id_and_sha", using: :btree add_index "ci_pipelines", ["project_id"], name: "index_ci_pipelines_on_project_id", using: :btree @@ -313,23 +332,6 @@ ActiveRecord::Schema.define(version: 20170504102911) do add_index "ci_trigger_requests", ["commit_id"], name: "index_ci_trigger_requests_on_commit_id", using: :btree - create_table "ci_trigger_schedules", force: :cascade do |t| - t.integer "project_id" - t.integer "trigger_id", null: false - t.datetime "deleted_at" - t.datetime "created_at" - t.datetime "updated_at" - t.string "cron" - t.string "cron_timezone" - t.datetime "next_run_at" - t.string "ref" - t.boolean "active" - end - - add_index "ci_trigger_schedules", ["active", "next_run_at"], name: "index_ci_trigger_schedules_on_active_and_next_run_at", using: :btree - add_index "ci_trigger_schedules", ["next_run_at"], name: "index_ci_trigger_schedules_on_next_run_at", using: :btree - add_index "ci_trigger_schedules", ["project_id"], name: "index_ci_trigger_schedules_on_project_id", using: :btree - create_table "ci_triggers", force: :cascade do |t| t.string "token" t.datetime "deleted_at" @@ -688,6 +690,7 @@ ActiveRecord::Schema.define(version: 20170504102911) do t.integer "cached_markdown_version" t.datetime "last_edited_at" t.integer "last_edited_by_id" + t.integer "head_pipeline_id" end add_index "merge_requests", ["assignee_id"], name: "index_merge_requests_on_assignee_id", using: :btree @@ -981,8 +984,8 @@ ActiveRecord::Schema.define(version: 20170504102911) do t.boolean "lfs_enabled" t.text "description_html" t.boolean "only_allow_merge_if_all_discussions_are_resolved" - t.integer "auto_cancel_pending_pipelines", default: 0, null: false t.boolean "printing_merge_request_link_enabled", default: true, null: false + t.integer "auto_cancel_pending_pipelines", default: 0, null: false t.string "import_jid" t.integer "cached_markdown_version" t.datetime "last_repository_updated_at" @@ -1052,6 +1055,18 @@ ActiveRecord::Schema.define(version: 20170504102911) do add_index "protected_tags", ["project_id"], name: "index_protected_tags_on_project_id", using: :btree + create_table "redirect_routes", force: :cascade do |t| + t.integer "source_id", null: false + t.string "source_type", null: false + t.string "path", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + add_index "redirect_routes", ["path"], name: "index_redirect_routes_on_path", unique: true, using: :btree + add_index "redirect_routes", ["path"], name: "index_redirect_routes_on_path_text_pattern_ops", using: :btree, opclasses: {"path"=>"varchar_pattern_ops"} + add_index "redirect_routes", ["source_type", "source_id"], name: "index_redirect_routes_on_source_type_and_source_id", using: :btree + create_table "releases", force: :cascade do |t| t.string "tag" t.text "description" @@ -1337,11 +1352,11 @@ ActiveRecord::Schema.define(version: 20170504102911) do t.string "incoming_email_token" t.string "organization" t.boolean "authorized_projects_populated" + t.boolean "require_two_factor_authentication_from_group", default: false, null: false + t.integer "two_factor_grace_period", default: 48, null: false t.boolean "ghost" t.date "last_activity_on" t.boolean "notified_of_own_activity" - t.boolean "require_two_factor_authentication_from_group", default: false, null: false - t.integer "two_factor_grace_period", default: 48, null: false t.string "preferred_language" end @@ -1396,13 +1411,14 @@ ActiveRecord::Schema.define(version: 20170504102911) do add_foreign_key "boards", "projects" add_foreign_key "chat_teams", "namespaces", on_delete: :cascade add_foreign_key "ci_builds", "ci_pipelines", column: "auto_canceled_by_id", name: "fk_a2141b1522", on_delete: :nullify + add_foreign_key "ci_pipeline_schedules", "projects", name: "fk_8ead60fcc4", on_delete: :cascade + 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_trigger_requests", "ci_triggers", column: "trigger_id", name: "fk_b8ec8b7245", on_delete: :cascade - add_foreign_key "ci_trigger_schedules", "ci_triggers", column: "trigger_id", name: "fk_90a406cc94", on_delete: :cascade add_foreign_key "ci_triggers", "users", column: "owner_id", name: "fk_e8e10d1964", on_delete: :cascade + add_foreign_key "container_repositories", "projects" add_foreign_key "issue_assignees", "issues", on_delete: :cascade add_foreign_key "issue_assignees", "users", on_delete: :cascade - add_foreign_key "container_repositories", "projects" add_foreign_key "issue_metrics", "issues", on_delete: :cascade add_foreign_key "label_priorities", "labels", on_delete: :cascade add_foreign_key "label_priorities", "projects", on_delete: :cascade |