diff options
Diffstat (limited to 'db')
50 files changed, 1284 insertions, 866 deletions
diff --git a/db/fixtures/development/14_pipelines.rb b/db/fixtures/development/14_pipelines.rb index db043e39d2c..05bda7d3672 100644 --- a/db/fixtures/development/14_pipelines.rb +++ b/db/fixtures/development/14_pipelines.rb @@ -79,9 +79,17 @@ class Gitlab::Seeder::Pipelines def create_master_pipelines @project.repository.commits('master', limit: 4).map do |commit| - create_pipeline!(@project, 'master', commit) + create_pipeline!(@project, 'master', commit).tap do |pipeline| + random_pipeline.tap do |triggered_by_pipeline| + triggered_by_pipeline.try(:sourced_pipelines)&.create( + source_job: triggered_by_pipeline.builds.all.sample, + source_project: triggered_by_pipeline.project, + project: pipeline.project, + pipeline: pipeline) + end + end end - rescue + rescue ActiveRecord::ActiveRecordError [] end @@ -98,7 +106,7 @@ class Gitlab::Seeder::Pipelines end pipelines.flatten - rescue + rescue ActiveRecord::ActiveRecordError [] end @@ -231,6 +239,10 @@ class Gitlab::Seeder::Pipelines @project.team.users.sample end + def random_pipeline + Ci::Pipeline.limit(4).all.sample + end + def build_status Ci::Build::AVAILABLE_STATUSES.sample end diff --git a/db/migrate/20171230123729_init_schema.rb b/db/migrate/20171230123729_init_schema.rb index ae7541f2475..fa90b37954f 100644 --- a/db/migrate/20171230123729_init_schema.rb +++ b/db/migrate/20171230123729_init_schema.rb @@ -788,7 +788,7 @@ class InitSchema < ActiveRecord::Migration[4.2] t.datetime_with_timezone "closed_at" t.index ["author_id"], name: "index_issues_on_author_id", using: :btree t.index ["confidential"], name: "index_issues_on_confidential", using: :btree - t.index ["description"], name: "index_issues_on_description_trigram", using: :gin, opclasses: {"description"=>"gin_trgm_ops"} + t.index ["description"], name: "index_issues_on_description_trigram", using: :gin, opclass: {"description"=>"gin_trgm_ops"} t.index ["milestone_id"], name: "index_issues_on_milestone_id", using: :btree t.index ["moved_to_id"], name: "index_issues_on_moved_to_id", where: "(moved_to_id IS NOT NULL)", using: :btree t.index ["project_id", "created_at", "id", "state"], name: "index_issues_on_project_id_and_created_at_and_id_and_state", using: :btree @@ -797,7 +797,7 @@ class InitSchema < ActiveRecord::Migration[4.2] t.index ["project_id", "updated_at", "id", "state"], name: "index_issues_on_project_id_and_updated_at_and_id_and_state", using: :btree t.index ["relative_position"], name: "index_issues_on_relative_position", using: :btree t.index ["state"], name: "index_issues_on_state", using: :btree - t.index ["title"], name: "index_issues_on_title_trigram", using: :gin, opclasses: {"title"=>"gin_trgm_ops"} + t.index ["title"], name: "index_issues_on_title_trigram", using: :gin, opclass: {"title"=>"gin_trgm_ops"} t.index ["updated_by_id"], name: "index_issues_on_updated_by_id", where: "(updated_by_id IS NOT NULL)", using: :btree end create_table "keys", id: :serial do |t| @@ -989,7 +989,7 @@ class InitSchema < ActiveRecord::Migration[4.2] t.index ["assignee_id"], name: "index_merge_requests_on_assignee_id", using: :btree t.index ["author_id"], name: "index_merge_requests_on_author_id", using: :btree t.index ["created_at"], name: "index_merge_requests_on_created_at", using: :btree - t.index ["description"], name: "index_merge_requests_on_description_trigram", using: :gin, opclasses: {"description"=>"gin_trgm_ops"} + t.index ["description"], name: "index_merge_requests_on_description_trigram", using: :gin, opclass: {"description"=>"gin_trgm_ops"} t.index ["head_pipeline_id"], name: "index_merge_requests_on_head_pipeline_id", using: :btree t.index ["latest_merge_request_diff_id"], name: "index_merge_requests_on_latest_merge_request_diff_id", using: :btree t.index ["merge_user_id"], name: "index_merge_requests_on_merge_user_id", where: "(merge_user_id IS NOT NULL)", using: :btree @@ -1001,7 +1001,7 @@ class InitSchema < ActiveRecord::Migration[4.2] t.index ["target_project_id", "iid"], name: "index_merge_requests_on_target_project_id_and_iid", unique: true, using: :btree t.index ["target_project_id", "merge_commit_sha", "id"], name: "index_merge_requests_on_tp_id_and_merge_commit_sha_and_id", using: :btree t.index ["title"], name: "index_merge_requests_on_title", using: :btree - t.index ["title"], name: "index_merge_requests_on_title_trigram", using: :gin, opclasses: {"title"=>"gin_trgm_ops"} + t.index ["title"], name: "index_merge_requests_on_title_trigram", using: :gin, opclass: {"title"=>"gin_trgm_ops"} t.index ["updated_by_id"], name: "index_merge_requests_on_updated_by_id", where: "(updated_by_id IS NOT NULL)", using: :btree end create_table "merge_requests_closing_issues", id: :serial do |t| @@ -1026,12 +1026,12 @@ class InitSchema < ActiveRecord::Migration[4.2] t.date "start_date" t.integer "cached_markdown_version" t.integer "group_id" - t.index ["description"], name: "index_milestones_on_description_trigram", using: :gin, opclasses: {"description"=>"gin_trgm_ops"} + t.index ["description"], name: "index_milestones_on_description_trigram", using: :gin, opclass: {"description"=>"gin_trgm_ops"} t.index ["due_date"], name: "index_milestones_on_due_date", using: :btree t.index ["group_id"], name: "index_milestones_on_group_id", using: :btree t.index ["project_id", "iid"], name: "index_milestones_on_project_id_and_iid", unique: true, using: :btree t.index ["title"], name: "index_milestones_on_title", using: :btree - t.index ["title"], name: "index_milestones_on_title_trigram", using: :gin, opclasses: {"title"=>"gin_trgm_ops"} + t.index ["title"], name: "index_milestones_on_title_trigram", using: :gin, opclass: {"title"=>"gin_trgm_ops"} end create_table "namespaces", id: :serial do |t| t.string "name", null: false @@ -1054,11 +1054,11 @@ class InitSchema < ActiveRecord::Migration[4.2] t.string "runners_token" t.index ["created_at"], name: "index_namespaces_on_created_at", using: :btree t.index ["name", "parent_id"], name: "index_namespaces_on_name_and_parent_id", unique: true, using: :btree - t.index ["name"], name: "index_namespaces_on_name_trigram", using: :gin, opclasses: {"name"=>"gin_trgm_ops"} + t.index ["name"], name: "index_namespaces_on_name_trigram", using: :gin, opclass: {"name"=>"gin_trgm_ops"} t.index ["owner_id"], name: "index_namespaces_on_owner_id", using: :btree t.index ["parent_id", "id"], name: "index_namespaces_on_parent_id_and_id", unique: true, using: :btree t.index ["path"], name: "index_namespaces_on_path", using: :btree - t.index ["path"], name: "index_namespaces_on_path_trigram", using: :gin, opclasses: {"path"=>"gin_trgm_ops"} + t.index ["path"], name: "index_namespaces_on_path_trigram", using: :gin, opclass: {"path"=>"gin_trgm_ops"} t.index ["require_two_factor_authentication"], name: "index_namespaces_on_require_two_factor_authentication", using: :btree t.index ["type"], name: "index_namespaces_on_type", using: :btree end @@ -1091,7 +1091,7 @@ class InitSchema < ActiveRecord::Migration[4.2] t.index ["created_at"], name: "index_notes_on_created_at", using: :btree t.index ["discussion_id"], name: "index_notes_on_discussion_id", using: :btree t.index ["line_code"], name: "index_notes_on_line_code", using: :btree - t.index ["note"], name: "index_notes_on_note_trigram", using: :gin, opclasses: {"note"=>"gin_trgm_ops"} + t.index ["note"], name: "index_notes_on_note_trigram", using: :gin, opclass: {"note"=>"gin_trgm_ops"} t.index ["noteable_id", "noteable_type"], name: "index_notes_on_noteable_id_and_noteable_type", using: :btree t.index ["noteable_type"], name: "index_notes_on_noteable_type", using: :btree t.index ["project_id", "noteable_type"], name: "index_notes_on_project_id_and_noteable_type", using: :btree @@ -1304,14 +1304,14 @@ class InitSchema < ActiveRecord::Migration[4.2] t.index ["ci_id"], name: "index_projects_on_ci_id", using: :btree t.index ["created_at"], name: "index_projects_on_created_at", using: :btree t.index ["creator_id"], name: "index_projects_on_creator_id", using: :btree - t.index ["description"], name: "index_projects_on_description_trigram", using: :gin, opclasses: {"description"=>"gin_trgm_ops"} + t.index ["description"], name: "index_projects_on_description_trigram", using: :gin, opclass: {"description"=>"gin_trgm_ops"} t.index ["last_activity_at"], name: "index_projects_on_last_activity_at", using: :btree t.index ["last_repository_check_failed"], name: "index_projects_on_last_repository_check_failed", using: :btree t.index ["last_repository_updated_at"], name: "index_projects_on_last_repository_updated_at", using: :btree - t.index ["name"], name: "index_projects_on_name_trigram", using: :gin, opclasses: {"name"=>"gin_trgm_ops"} + t.index ["name"], name: "index_projects_on_name_trigram", using: :gin, opclass: {"name"=>"gin_trgm_ops"} t.index ["namespace_id"], name: "index_projects_on_namespace_id", using: :btree t.index ["path"], name: "index_projects_on_path", using: :btree - t.index ["path"], name: "index_projects_on_path_trigram", using: :gin, opclasses: {"path"=>"gin_trgm_ops"} + t.index ["path"], name: "index_projects_on_path_trigram", using: :gin, opclass: {"path"=>"gin_trgm_ops"} t.index ["pending_delete"], name: "index_projects_on_pending_delete", using: :btree t.index ["repository_storage"], name: "index_projects_on_repository_storage", using: :btree t.index ["runners_token"], name: "index_projects_on_runners_token", using: :btree @@ -1375,7 +1375,7 @@ class InitSchema < ActiveRecord::Migration[4.2] t.datetime "updated_at", null: false t.boolean "permanent" t.index ["path"], name: "index_redirect_routes_on_path", unique: true, using: :btree - t.index ["path"], name: "index_redirect_routes_on_path_text_pattern_ops", using: :btree, opclasses: {"path"=>"varchar_pattern_ops"} + t.index ["path"], name: "index_redirect_routes_on_path_text_pattern_ops", using: :btree, opclass: {"path"=>"varchar_pattern_ops"} t.index ["permanent"], name: "index_redirect_routes_on_permanent", using: :btree t.index ["source_type", "source_id"], name: "index_redirect_routes_on_source_type_and_source_id", using: :btree end @@ -1398,7 +1398,7 @@ class InitSchema < ActiveRecord::Migration[4.2] t.datetime "updated_at" t.string "name" t.index ["path"], name: "index_routes_on_path", unique: true, using: :btree - t.index ["path"], name: "index_routes_on_path_text_pattern_ops", using: :btree, opclasses: {"path"=>"varchar_pattern_ops"} + t.index ["path"], name: "index_routes_on_path_text_pattern_ops", using: :btree, opclass: {"path"=>"varchar_pattern_ops"} t.index ["source_type", "source_id"], name: "index_routes_on_source_type_and_source_id", unique: true, using: :btree end create_table "sent_notifications", id: :serial do |t| @@ -1454,9 +1454,9 @@ class InitSchema < ActiveRecord::Migration[4.2] t.text "description" t.text "description_html" t.index ["author_id"], name: "index_snippets_on_author_id", using: :btree - t.index ["file_name"], name: "index_snippets_on_file_name_trigram", using: :gin, opclasses: {"file_name"=>"gin_trgm_ops"} + t.index ["file_name"], name: "index_snippets_on_file_name_trigram", using: :gin, opclass: {"file_name"=>"gin_trgm_ops"} t.index ["project_id"], name: "index_snippets_on_project_id", using: :btree - t.index ["title"], name: "index_snippets_on_title_trigram", using: :gin, opclasses: {"title"=>"gin_trgm_ops"} + t.index ["title"], name: "index_snippets_on_title_trigram", using: :gin, opclass: {"title"=>"gin_trgm_ops"} t.index ["updated_at"], name: "index_snippets_on_updated_at", using: :btree t.index ["visibility_level"], name: "index_snippets_on_visibility_level", using: :btree end @@ -1663,16 +1663,16 @@ class InitSchema < ActiveRecord::Migration[4.2] t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true, using: :btree t.index ["created_at"], name: "index_users_on_created_at", using: :btree t.index ["email"], name: "index_users_on_email", unique: true, using: :btree - t.index ["email"], name: "index_users_on_email_trigram", using: :gin, opclasses: {"email"=>"gin_trgm_ops"} + t.index ["email"], name: "index_users_on_email_trigram", using: :gin, opclass: {"email"=>"gin_trgm_ops"} t.index ["ghost"], name: "index_users_on_ghost", using: :btree t.index ["incoming_email_token"], name: "index_users_on_incoming_email_token", using: :btree t.index ["name"], name: "index_users_on_name", using: :btree - t.index ["name"], name: "index_users_on_name_trigram", using: :gin, opclasses: {"name"=>"gin_trgm_ops"} + t.index ["name"], name: "index_users_on_name_trigram", using: :gin, opclass: {"name"=>"gin_trgm_ops"} t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree t.index ["rss_token"], name: "index_users_on_rss_token", using: :btree t.index ["state"], name: "index_users_on_state", using: :btree t.index ["username"], name: "index_users_on_username", using: :btree - t.index ["username"], name: "index_users_on_username_trigram", using: :gin, opclasses: {"username"=>"gin_trgm_ops"} + t.index ["username"], name: "index_users_on_username_trigram", using: :gin, opclass: {"username"=>"gin_trgm_ops"} end create_table "users_star_projects", id: :serial do |t| t.integer "project_id", null: false diff --git a/db/migrate/20180206200543_reset_events_primary_key_sequence.rb b/db/migrate/20180206200543_reset_events_primary_key_sequence.rb index d395c5725e4..e7a18e68395 100644 --- a/db/migrate/20180206200543_reset_events_primary_key_sequence.rb +++ b/db/migrate/20180206200543_reset_events_primary_key_sequence.rb @@ -12,24 +12,10 @@ class ResetEventsPrimaryKeySequence < ActiveRecord::Migration[4.2] end def up - if Gitlab::Database.postgresql? - reset_primary_key_for_postgresql - else - reset_primary_key_for_mysql - end + reset_pk_sequence!(Event.table_name) end def down # No-op end - - def reset_primary_key_for_postgresql - reset_pk_sequence!(Event.table_name) - end - - def reset_primary_key_for_mysql - amount = Event.pluck('COALESCE(MAX(id), 1)').first - - execute "ALTER TABLE #{Event.table_name} AUTO_INCREMENT = #{amount}" - end end diff --git a/db/migrate/20180403035759_create_project_ci_cd_settings.rb b/db/migrate/20180403035759_create_project_ci_cd_settings.rb index 00028689779..c630dd3c942 100644 --- a/db/migrate/20180403035759_create_project_ci_cd_settings.rb +++ b/db/migrate/20180403035759_create_project_ci_cd_settings.rb @@ -30,12 +30,6 @@ class CreateProjectCiCdSettings < ActiveRecord::Migration[4.2] end def add_foreign_key_with_retry - if Gitlab::Database.mysql? - # When using MySQL we don't support online upgrades, thus projects can't - # be deleted while we are running this migration. - return add_project_id_foreign_key - end - # Between the initial INSERT and the addition of the foreign key some # projects may have been removed, leaving orphaned rows in our new settings # table. diff --git a/db/migrate/20180406204716_add_limits_ci_build_trace_chunks_raw_data_for_mysql.rb b/db/migrate/20180406204716_add_limits_ci_build_trace_chunks_raw_data_for_mysql.rb deleted file mode 100644 index 0b541e94353..00000000000 --- a/db/migrate/20180406204716_add_limits_ci_build_trace_chunks_raw_data_for_mysql.rb +++ /dev/null @@ -1,13 +0,0 @@ -# See http://doc.gitlab.com/ce/development/migration_style_guide.html -# for more information on how to write migrations for GitLab. -require Rails.root.join('db/migrate/limits_ci_build_trace_chunks_raw_data_for_mysql') - -class AddLimitsCiBuildTraceChunksRawDataForMysql < ActiveRecord::Migration[4.2] - include Gitlab::Database::MigrationHelpers - - DOWNTIME = false - - def up - LimitsCiBuildTraceChunksRawDataForMysql.new.up - end -end diff --git a/db/migrate/20180521171529_increase_mysql_text_limit_for_gpg_keys.rb b/db/migrate/20180521171529_increase_mysql_text_limit_for_gpg_keys.rb deleted file mode 100644 index 08ce8cc3094..00000000000 --- a/db/migrate/20180521171529_increase_mysql_text_limit_for_gpg_keys.rb +++ /dev/null @@ -1 +0,0 @@ -require_relative 'gpg_keys_limits_to_mysql' diff --git a/db/migrate/20180824202952_add_outbound_requests_whitelist_to_application_settings.rb b/db/migrate/20180824202952_add_outbound_requests_whitelist_to_application_settings.rb new file mode 100644 index 00000000000..4ee654ce873 --- /dev/null +++ b/db/migrate/20180824202952_add_outbound_requests_whitelist_to_application_settings.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class AddOutboundRequestsWhitelistToApplicationSettings < ActiveRecord::Migration[5.1] + DOWNTIME = false + + def change + add_column :application_settings, :outbound_local_requests_whitelist, :string, array: true, limit: 255 + end +end diff --git a/db/migrate/20180831164904_fix_prometheus_metric_query_limits.rb b/db/migrate/20180831164904_fix_prometheus_metric_query_limits.rb deleted file mode 100644 index 80c4d11a38e..00000000000 --- a/db/migrate/20180831164904_fix_prometheus_metric_query_limits.rb +++ /dev/null @@ -1,19 +0,0 @@ -# frozen_string_literal: true - -# See http://doc.gitlab.com/ce/development/migration_style_guide.html -# for more information on how to write migrations for GitLab. -require Rails.root.join('db/migrate/prometheus_metrics_limits_to_mysql') - -class FixPrometheusMetricQueryLimits < ActiveRecord::Migration[4.2] - include Gitlab::Database::MigrationHelpers - - DOWNTIME = false - - def up - PrometheusMetricsLimitsToMysql.new.up - end - - def down - # no-op - end -end diff --git a/db/migrate/20181030154446_add_missing_indexes_for_foreign_keys.rb b/db/migrate/20181030154446_add_missing_indexes_for_foreign_keys.rb index 2b5cd45e92c..e21eb291282 100644 --- a/db/migrate/20181030154446_add_missing_indexes_for_foreign_keys.rb +++ b/db/migrate/20181030154446_add_missing_indexes_for_foreign_keys.rb @@ -34,10 +34,6 @@ class AddMissingIndexesForForeignKeys < ActiveRecord::Migration[4.2] end def down - # MySQL requires index for FK, - # thus removal of indexes does fail - return if Gitlab::Database.mysql? - remove_concurrent_index(:application_settings, :usage_stats_set_by_user_id) remove_concurrent_index(:ci_pipeline_schedules, :owner_id) remove_concurrent_index(:ci_trigger_requests, :trigger_id) diff --git a/db/migrate/20190206193120_add_index_to_tags.rb b/db/migrate/20190206193120_add_index_to_tags.rb index 5257ebba003..d6c0270cb4f 100644 --- a/db/migrate/20190206193120_add_index_to_tags.rb +++ b/db/migrate/20190206193120_add_index_to_tags.rb @@ -9,7 +9,7 @@ class AddIndexToTags < ActiveRecord::Migration[5.0] disable_ddl_transaction! def up - add_concurrent_index :tags, :name, name: INDEX_NAME, using: :gin, opclasses: { name: :gin_trgm_ops } + add_concurrent_index :tags, :name, name: INDEX_NAME, using: :gin, opclass: { name: :gin_trgm_ops } end def down diff --git a/db/migrate/20190222051615_add_indexes_for_merge_request_diffs_query.rb b/db/migrate/20190222051615_add_indexes_for_merge_request_diffs_query.rb index 0048268ca6f..bf7f7b44dec 100644 --- a/db/migrate/20190222051615_add_indexes_for_merge_request_diffs_query.rb +++ b/db/migrate/20190222051615_add_indexes_for_merge_request_diffs_query.rb @@ -35,7 +35,7 @@ class AddIndexesForMergeRequestDiffsQuery < ActiveRecord::Migration[5.0] end def down - INDEX_SPECS.reverse.each do |spec| + INDEX_SPECS.reverse_each do |spec| remove_concurrent_index(*spec) end end diff --git a/db/migrate/20190611100201_add_geo_container_repository_updated_events_table.rb b/db/migrate/20190611100201_add_geo_container_repository_updated_events_table.rb new file mode 100644 index 00000000000..8963e837e08 --- /dev/null +++ b/db/migrate/20190611100201_add_geo_container_repository_updated_events_table.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddGeoContainerRepositoryUpdatedEventsTable < ActiveRecord::Migration[5.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def change + create_table :geo_container_repository_updated_events, force: :cascade do |t| + t.integer :container_repository_id, null: false + + t.index :container_repository_id, name: :idx_geo_con_rep_updated_events_on_container_repository_id, using: :btree + end + + add_column :geo_event_log, :container_repository_updated_event_id, :bigint + end +end diff --git a/db/migrate/20190611100202_add_index_to_geo_event_log.rb b/db/migrate/20190611100202_add_index_to_geo_event_log.rb new file mode 100644 index 00000000000..c5c855fed61 --- /dev/null +++ b/db/migrate/20190611100202_add_index_to_geo_event_log.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddIndexToGeoEventLog < ActiveRecord::Migration[5.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + add_concurrent_index :geo_event_log, :container_repository_updated_event_id + end + + def down + remove_concurrent_index(:geo_event_log, :container_repository_updated_event_id) + end +end diff --git a/db/migrate/20190612111404_add_geo_container_sync_capacity.rb b/db/migrate/20190612111404_add_geo_container_sync_capacity.rb new file mode 100644 index 00000000000..d4cd569f460 --- /dev/null +++ b/db/migrate/20190612111404_add_geo_container_sync_capacity.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class AddGeoContainerSyncCapacity < ActiveRecord::Migration[5.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def change + change_table :geo_nodes do |t| + t.column :container_repositories_max_capacity, :integer, default: 10, null: false + end + end +end diff --git a/db/migrate/20190626175626_add_group_creation_level_to_namespaces.rb b/db/migrate/20190626175626_add_group_creation_level_to_namespaces.rb new file mode 100644 index 00000000000..3b75c92e518 --- /dev/null +++ b/db/migrate/20190626175626_add_group_creation_level_to_namespaces.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class AddGroupCreationLevelToNamespaces < ActiveRecord::Migration[5.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def up + add_column(:namespaces, :subgroup_creation_level, :integer) + change_column_default(:namespaces, + :subgroup_creation_level, + ::Gitlab::Access::MAINTAINER_SUBGROUP_ACCESS) + end + + def down + remove_column(:namespaces, :subgroup_creation_level) + end +end diff --git a/db/migrate/20190627122264_add_foreign_keys_for_container_repository.rb b/db/migrate/20190627122264_add_foreign_keys_for_container_repository.rb new file mode 100644 index 00000000000..cf7fd03e9af --- /dev/null +++ b/db/migrate/20190627122264_add_foreign_keys_for_container_repository.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class AddForeignKeysForContainerRepository < ActiveRecord::Migration[5.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + add_concurrent_foreign_key(:geo_container_repository_updated_events, :container_repositories, column: :container_repository_id, on_delete: :cascade) + + add_concurrent_foreign_key(:geo_event_log, :geo_container_repository_updated_events, column: :container_repository_updated_event_id, on_delete: :cascade) + end + + def down + if foreign_key_exists?(:geo_container_repository_updated_events, :container_repositories) + remove_foreign_key(:geo_container_repository_updated_events, :container_repositories) + end + + if foreign_key_exists?(:geo_event_log, :geo_container_repository_updated_events) + remove_foreign_key(:geo_event_log, :geo_container_repository_updated_events) + end + end +end diff --git a/db/migrate/20190703001120_default_milestone_to_nil.rb b/db/migrate/20190703001120_default_milestone_to_nil.rb new file mode 100644 index 00000000000..6a1c3603d9d --- /dev/null +++ b/db/migrate/20190703001120_default_milestone_to_nil.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +class DefaultMilestoneToNil < ActiveRecord::Migration[5.1] + DOWNTIME = false + + def up + execute(update_board_milestones_query) + end + + def down + # no-op + end + + private + + # Only 105 records to update, as of 2019/07/18 + def update_board_milestones_query + <<~HEREDOC + UPDATE boards + SET milestone_id = NULL + WHERE boards.milestone_id = -1 + HEREDOC + end +end diff --git a/db/migrate/20190703043358_add_commit_id_to_draft_notes.rb b/db/migrate/20190703043358_add_commit_id_to_draft_notes.rb new file mode 100644 index 00000000000..022400ce585 --- /dev/null +++ b/db/migrate/20190703043358_add_commit_id_to_draft_notes.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class AddCommitIdToDraftNotes < ActiveRecord::Migration[5.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def change + add_column :draft_notes, :commit_id, :binary + end +end diff --git a/db/migrate/20190709204413_add_rule_type_to_approval_project_rules.rb b/db/migrate/20190709204413_add_rule_type_to_approval_project_rules.rb new file mode 100644 index 00000000000..87a228c9bf9 --- /dev/null +++ b/db/migrate/20190709204413_add_rule_type_to_approval_project_rules.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddRuleTypeToApprovalProjectRules < ActiveRecord::Migration[5.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + add_column_with_default :approval_project_rules, :rule_type, :integer, limit: 2, default: 0, allow_null: false + end + + def down + remove_column :approval_project_rules, :rule_type + end +end diff --git a/db/migrate/20190709220014_import_common_metrics_y_axis.rb b/db/migrate/20190709220014_import_common_metrics_y_axis.rb new file mode 100644 index 00000000000..89ecf32ecc1 --- /dev/null +++ b/db/migrate/20190709220014_import_common_metrics_y_axis.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class ImportCommonMetricsYAxis < ActiveRecord::Migration[5.1] + DOWNTIME = false + + def up + ::Gitlab::DatabaseImporters::CommonMetrics::Importer.new.execute + end + + def down + # no-op + end +end diff --git a/db/migrate/20190709220143_add_index_to_issues_relative_position.rb b/db/migrate/20190709220143_add_index_to_issues_relative_position.rb new file mode 100644 index 00000000000..effab33ce4f --- /dev/null +++ b/db/migrate/20190709220143_add_index_to_issues_relative_position.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +class AddIndexToIssuesRelativePosition < ActiveRecord::Migration[5.1] + include Gitlab::Database::MigrationHelpers + + # Set this constant to true if this migration requires downtime. + DOWNTIME = false + + disable_ddl_transaction! + + INDEX_NAME = 'index_issues_on_project_id_and_state_and_rel_position_and_id'.freeze + + def up + add_concurrent_index :issues, [:project_id, :state, :relative_position, :id], order: { id: :desc }, name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :issues, INDEX_NAME + end +end diff --git a/db/migrate/20190710151229_add_index_to_approval_project_rules_rule_type.rb b/db/migrate/20190710151229_add_index_to_approval_project_rules_rule_type.rb new file mode 100644 index 00000000000..64123c53c4a --- /dev/null +++ b/db/migrate/20190710151229_add_index_to_approval_project_rules_rule_type.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddIndexToApprovalProjectRulesRuleType < ActiveRecord::Migration[5.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + add_concurrent_index :approval_project_rules, :rule_type + end + + def down + remove_concurrent_index :approval_project_rules, :rule_type + end +end diff --git a/db/migrate/20190711124721_create_job_variables.rb b/db/migrate/20190711124721_create_job_variables.rb new file mode 100644 index 00000000000..a860522f39e --- /dev/null +++ b/db/migrate/20190711124721_create_job_variables.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +# See http://doc.gitlab.com/ce/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class CreateJobVariables < ActiveRecord::Migration[5.1] + include Gitlab::Database::MigrationHelpers + + # Set this constant to true if this migration requires downtime. + DOWNTIME = false + + def change + create_table :ci_job_variables do |t| + t.string :key, null: false + t.text :encrypted_value + t.string :encrypted_value_iv + t.references :job, null: false, index: true, foreign_key: { to_table: :ci_builds, on_delete: :cascade } + t.integer :variable_type, null: false, limit: 2, default: 1 + end + + add_index :ci_job_variables, [:key, :job_id], unique: true + end +end diff --git a/db/migrate/20190715042813_add_issue_id_to_versions.rb b/db/migrate/20190715042813_add_issue_id_to_versions.rb new file mode 100644 index 00000000000..1cefdbc9df2 --- /dev/null +++ b/db/migrate/20190715042813_add_issue_id_to_versions.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class AddIssueIdToVersions < ActiveRecord::Migration[5.2] + DOWNTIME = false + + def up + add_reference :design_management_versions, :issue, index: true, foreign_key: { on_delete: :cascade } + end + + def down + remove_reference :design_management_versions, :issue + end +end diff --git a/db/migrate/20190715043954_set_issue_id_for_all_versions.rb b/db/migrate/20190715043954_set_issue_id_for_all_versions.rb new file mode 100644 index 00000000000..345b749f1a4 --- /dev/null +++ b/db/migrate/20190715043954_set_issue_id_for_all_versions.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class SetIssueIdForAllVersions < ActiveRecord::Migration[5.2] + DOWNTIME = false + + def up + execute('UPDATE design_management_versions as versions SET issue_id = ( + SELECT design_management_designs.issue_id + FROM design_management_designs + INNER JOIN design_management_designs_versions ON design_management_designs.id = design_management_designs_versions.design_id + WHERE design_management_designs_versions.version_id = versions.id + LIMIT 1 + )') + end + + def down + # no-op + end +end diff --git a/db/migrate/20190715140740_add_event_type_to_design_management_designs_versions.rb b/db/migrate/20190715140740_add_event_type_to_design_management_designs_versions.rb new file mode 100644 index 00000000000..81a8b0a3271 --- /dev/null +++ b/db/migrate/20190715140740_add_event_type_to_design_management_designs_versions.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +# This migration sets up a event enum on the DesignsVersions join table +class AddEventTypeToDesignManagementDesignsVersions < ActiveRecord::Migration[5.2] + include Gitlab::Database::MigrationHelpers + + # Set this constant to true if this migration requires downtime. + DOWNTIME = false + + # We disable these cops here because adding this column is safe. The table does not + # have any data in it. + # rubocop: disable Migration/AddIndex + # rubocop: disable Migration/AddColumn + def up + add_column(:design_management_designs_versions, :event, :integer, + limit: 2, + null: false, + default: 0) + add_index(:design_management_designs_versions, :event) + end + + # rubocop: disable Migration/RemoveIndex + def down + remove_index(:design_management_designs_versions, :event) + remove_column(:design_management_designs_versions, :event) + end +end diff --git a/db/migrate/20190715142138_add_raw_blob_request_limit_to_application_settings.rb b/db/migrate/20190715142138_add_raw_blob_request_limit_to_application_settings.rb new file mode 100644 index 00000000000..e8198e11ea7 --- /dev/null +++ b/db/migrate/20190715142138_add_raw_blob_request_limit_to_application_settings.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class AddRawBlobRequestLimitToApplicationSettings < ActiveRecord::Migration[5.2] + DOWNTIME = false + + def change + add_column :application_settings, :raw_blob_request_limit, :integer, default: 300, null: false + end +end diff --git a/db/migrate/20190725012225_change_outbound_local_requests_whitelist_default.rb b/db/migrate/20190725012225_change_outbound_local_requests_whitelist_default.rb new file mode 100644 index 00000000000..21b00e0b7d9 --- /dev/null +++ b/db/migrate/20190725012225_change_outbound_local_requests_whitelist_default.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +class ChangeOutboundLocalRequestsWhitelistDefault < ActiveRecord::Migration[5.2] + include Gitlab::Database::MigrationHelpers + + # Set this constant to true if this migration requires downtime. + DOWNTIME = false + + class ApplicationSetting < ActiveRecord::Base + self.table_name = 'application_settings' + end + + def up + default_value = [] + + change_column_default(:application_settings, :outbound_local_requests_whitelist, default_value) + + ApplicationSetting + .where(outbound_local_requests_whitelist: nil) + .update(outbound_local_requests_whitelist: default_value) + + change_column_null(:application_settings, :outbound_local_requests_whitelist, false) + end + + def down + change_column_null(:application_settings, :outbound_local_requests_whitelist, true) + + change_column_default(:application_settings, :outbound_local_requests_whitelist, nil) + end +end diff --git a/db/migrate/20190726101050_rename_allow_local_requests_from_hooks_and_services_application_setting.rb b/db/migrate/20190726101050_rename_allow_local_requests_from_hooks_and_services_application_setting.rb new file mode 100644 index 00000000000..ac65e8d745c --- /dev/null +++ b/db/migrate/20190726101050_rename_allow_local_requests_from_hooks_and_services_application_setting.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class RenameAllowLocalRequestsFromHooksAndServicesApplicationSetting < ActiveRecord::Migration[5.2] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + rename_column_concurrently :application_settings, :allow_local_requests_from_hooks_and_services, :allow_local_requests_from_web_hooks_and_services + end + + def down + cleanup_concurrent_column_rename :application_settings, :allow_local_requests_from_web_hooks_and_services, :allow_local_requests_from_hooks_and_services + end +end diff --git a/db/migrate/20190726101133_add_allow_local_requests_from_system_hooks_to_application_settings.rb b/db/migrate/20190726101133_add_allow_local_requests_from_system_hooks_to_application_settings.rb new file mode 100644 index 00000000000..95d4f956f93 --- /dev/null +++ b/db/migrate/20190726101133_add_allow_local_requests_from_system_hooks_to_application_settings.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class AddAllowLocalRequestsFromSystemHooksToApplicationSettings < ActiveRecord::Migration[5.2] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def up + add_column(:application_settings, :allow_local_requests_from_system_hooks, + :boolean, + default: true, + null: false) + end + + def down + remove_column(:application_settings, :allow_local_requests_from_system_hooks) + end +end diff --git a/db/migrate/20190729090456_add_index_on_environments_with_state.rb b/db/migrate/20190729090456_add_index_on_environments_with_state.rb new file mode 100644 index 00000000000..9a8d8391415 --- /dev/null +++ b/db/migrate/20190729090456_add_index_on_environments_with_state.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddIndexOnEnvironmentsWithState < ActiveRecord::Migration[5.2] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + add_concurrent_index :environments, [:project_id, :state] + end + + def down + remove_concurrent_index :environments, [:project_id, :state] + end +end diff --git a/db/migrate/20190731084415_add_build_need.rb b/db/migrate/20190731084415_add_build_need.rb new file mode 100644 index 00000000000..45b8abb480d --- /dev/null +++ b/db/migrate/20190731084415_add_build_need.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +# See http://doc.gitlab.com/ce/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class AddBuildNeed < ActiveRecord::Migration[5.2] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def change + create_table :ci_build_needs, id: :serial do |t| + t.integer :build_id, null: false + t.text :name, null: false + + t.index [:build_id, :name], unique: true + t.foreign_key :ci_builds, column: :build_id, on_delete: :cascade + end + end +end diff --git a/db/migrate/20190802012622_reorder_issues_project_id_relative_position_index.rb b/db/migrate/20190802012622_reorder_issues_project_id_relative_position_index.rb new file mode 100644 index 00000000000..12088dd763f --- /dev/null +++ b/db/migrate/20190802012622_reorder_issues_project_id_relative_position_index.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +class ReorderIssuesProjectIdRelativePositionIndex < ActiveRecord::Migration[5.2] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + OLD_INDEX_NAME = 'index_issues_on_project_id_and_state_and_rel_position_and_id' + NEW_INDEX_NAME = 'index_issues_on_project_id_and_rel_position_and_state_and_id' + + def up + add_concurrent_index :issues, [:project_id, :relative_position, :state, :id], order: { id: :desc }, name: NEW_INDEX_NAME + + remove_concurrent_index_by_name :issues, OLD_INDEX_NAME + end + + def down + add_concurrent_index :issues, [:project_id, :state, :relative_position, :id], order: { id: :desc }, name: OLD_INDEX_NAME + + remove_concurrent_index_by_name :issues, NEW_INDEX_NAME + end +end diff --git a/db/migrate/gpg_keys_limits_to_mysql.rb b/db/migrate/gpg_keys_limits_to_mysql.rb deleted file mode 100644 index 2cd347a0463..00000000000 --- a/db/migrate/gpg_keys_limits_to_mysql.rb +++ /dev/null @@ -1,14 +0,0 @@ -class IncreaseMysqlTextLimitForGpgKeys < ActiveRecord::Migration[4.2] - # Set this constant to true if this migration requires downtime. - DOWNTIME = false - - def up - return unless Gitlab::Database.mysql? - - change_column :gpg_keys, :key, :text, limit: 16.megabytes - 1 - end - - def down - # no-op - end -end diff --git a/db/migrate/limits_ci_build_trace_chunks_raw_data_for_mysql.rb b/db/migrate/limits_ci_build_trace_chunks_raw_data_for_mysql.rb deleted file mode 100644 index 92402cf387b..00000000000 --- a/db/migrate/limits_ci_build_trace_chunks_raw_data_for_mysql.rb +++ /dev/null @@ -1,9 +0,0 @@ -class LimitsCiBuildTraceChunksRawDataForMysql < ActiveRecord::Migration[4.2] - def up - return unless Gitlab::Database.mysql? - - # Mysql needs MEDIUMTEXT type (up to 16MB) rather than TEXT (up to 64KB) - # Because 'raw_data' is always capped by Ci::BuildTraceChunk::CHUNK_SIZE, which is 128KB - change_column :ci_build_trace_chunks, :raw_data, :binary, limit: 16.megabytes - 1 # MEDIUMTEXT - end -end diff --git a/db/migrate/limits_to_mysql.rb b/db/migrate/limits_to_mysql.rb deleted file mode 100644 index 33cb19aff9e..00000000000 --- a/db/migrate/limits_to_mysql.rb +++ /dev/null @@ -1,8 +0,0 @@ -class LimitsToMysql < ActiveRecord::Migration[4.2] - def up - return unless ActiveRecord::Base.configurations[Rails.env]['adapter'] =~ /^mysql/ - - change_column :snippets, :content, :text, limit: 2147483647 - change_column :notes, :st_diff, :text, limit: 2147483647 - end -end diff --git a/db/migrate/markdown_cache_limits_to_mysql.rb b/db/migrate/markdown_cache_limits_to_mysql.rb deleted file mode 100644 index f99d500a137..00000000000 --- a/db/migrate/markdown_cache_limits_to_mysql.rb +++ /dev/null @@ -1,13 +0,0 @@ -class MarkdownCacheLimitsToMysql < ActiveRecord::Migration[4.2] - DOWNTIME = false - - def up - return unless Gitlab::Database.mysql? - - change_column :snippets, :content_html, :text, limit: 2147483647 - end - - def down - # no-op - end -end diff --git a/db/migrate/merge_request_diff_file_limits_to_mysql.rb b/db/migrate/merge_request_diff_file_limits_to_mysql.rb deleted file mode 100644 index 65dd0b5b7f7..00000000000 --- a/db/migrate/merge_request_diff_file_limits_to_mysql.rb +++ /dev/null @@ -1,12 +0,0 @@ -class MergeRequestDiffFileLimitsToMysql < ActiveRecord::Migration[4.2] - DOWNTIME = false - - def up - return unless Gitlab::Database.mysql? - - change_column :merge_request_diff_files, :diff, :text, limit: 2147483647, default: nil - end - - def down - end -end diff --git a/db/migrate/prometheus_metrics_limits_to_mysql.rb b/db/migrate/prometheus_metrics_limits_to_mysql.rb deleted file mode 100644 index f7a2fcba8c2..00000000000 --- a/db/migrate/prometheus_metrics_limits_to_mysql.rb +++ /dev/null @@ -1,12 +0,0 @@ -class PrometheusMetricsLimitsToMysql < ActiveRecord::Migration[4.2] - DOWNTIME = false - - def up - return unless Gitlab::Database.mysql? - - change_column :prometheus_metrics, :query, :text, limit: 4096, default: nil - end - - def down - end -end diff --git a/db/post_migrate/20180409170809_populate_missing_project_ci_cd_settings.rb b/db/post_migrate/20180409170809_populate_missing_project_ci_cd_settings.rb index 0cda3d76a3d..a400a071e07 100644 --- a/db/post_migrate/20180409170809_populate_missing_project_ci_cd_settings.rb +++ b/db/post_migrate/20180409170809_populate_missing_project_ci_cd_settings.rb @@ -9,10 +9,6 @@ class PopulateMissingProjectCiCdSettings < ActiveRecord::Migration[4.2] disable_ddl_transaction! def up - # MySQL does not support online upgrades, thus there can't be any missing - # rows. - return if Gitlab::Database.mysql? - # Projects created after the initial migration but before the code started # using ProjectCiCdSetting won't have a corresponding row in # project_ci_cd_settings, so let's fix that. diff --git a/db/post_migrate/20181219130552_update_project_import_visibility_level.rb b/db/post_migrate/20181219130552_update_project_import_visibility_level.rb index 6209de88b31..bfa452578a3 100644 --- a/db/post_migrate/20181219130552_update_project_import_visibility_level.rb +++ b/db/post_migrate/20181219130552_update_project_import_visibility_level.rb @@ -49,7 +49,7 @@ class UpdateProjectImportVisibilityLevel < ActiveRecord::Migration[5.0] def update_projects_visibility(visibility) say_with_time("Updating project visibility to #{visibility} on #{Project::IMPORT_TYPE} imports.") do Project.with_group_visibility(visibility).select(:id).each_batch(of: BATCH_SIZE) do |batch, _index| - batch_sql = Gitlab::Database.mysql? ? batch.pluck(:id).join(', ') : batch.select(:id).to_sql + batch_sql = batch.select(:id).to_sql say("Updating #{batch.size} items.", true) diff --git a/db/post_migrate/20190204115450_migrate_auto_dev_ops_domain_to_cluster_domain.rb b/db/post_migrate/20190204115450_migrate_auto_dev_ops_domain_to_cluster_domain.rb index 392e64eeade..036b0b64b48 100644 --- a/db/post_migrate/20190204115450_migrate_auto_dev_ops_domain_to_cluster_domain.rb +++ b/db/post_migrate/20190204115450_migrate_auto_dev_ops_domain_to_cluster_domain.rb @@ -16,26 +16,6 @@ class MigrateAutoDevOpsDomainToClusterDomain < ActiveRecord::Migration[5.0] private def update_clusters_domain_query - if Gitlab::Database.mysql? - mysql_query - else - postgresql_query - end - end - - def mysql_query - <<~HEREDOC - UPDATE clusters, project_auto_devops, cluster_projects - SET - clusters.domain = project_auto_devops.domain - WHERE - cluster_projects.cluster_id = clusters.id - AND project_auto_devops.project_id = cluster_projects.project_id - AND project_auto_devops.domain != '' - HEREDOC - end - - def postgresql_query <<~HEREDOC UPDATE clusters SET domain = project_auto_devops.domain diff --git a/db/post_migrate/20190404143330_add_unique_constraint_to_approvals_user_id_and_merge_request_id.rb b/db/post_migrate/20190404143330_add_unique_constraint_to_approvals_user_id_and_merge_request_id.rb index 447f91ebc7e..dd85ebc8001 100644 --- a/db/post_migrate/20190404143330_add_unique_constraint_to_approvals_user_id_and_merge_request_id.rb +++ b/db/post_migrate/20190404143330_add_unique_constraint_to_approvals_user_id_and_merge_request_id.rb @@ -21,34 +21,18 @@ class AddUniqueConstraintToApprovalsUserIdAndMergeRequestId < ActiveRecord::Migr def remove_duplicates add_concurrent_index :approvals, [:user_id, :merge_request_id, :id] - if Gitlab::Database.mysql? - execute <<-SQL - DELETE FROM a - USING approvals AS a - INNER JOIN ( - SELECT user_id, merge_request_id, MIN(id) as min_id - FROM approvals - GROUP BY user_id, merge_request_id - HAVING COUNT(id) > 1 - ) as approvals_with_duplicates - ON approvals_with_duplicates.user_id = a.user_id - AND approvals_with_duplicates.merge_request_id = a.merge_request_id - WHERE approvals_with_duplicates.min_id <> a.id; - SQL - else - execute <<-SQL - DELETE FROM approvals - USING ( - SELECT user_id, merge_request_id, MIN(id) as min_id - FROM approvals - GROUP BY user_id, merge_request_id - HAVING COUNT(id) > 1 - ) as approvals_with_duplicates - WHERE approvals_with_duplicates.user_id = approvals.user_id - AND approvals_with_duplicates.merge_request_id = approvals.merge_request_id - AND approvals_with_duplicates.min_id <> approvals.id; - SQL - end + execute <<-SQL + DELETE FROM approvals + USING ( + SELECT user_id, merge_request_id, MIN(id) as min_id + FROM approvals + GROUP BY user_id, merge_request_id + HAVING COUNT(id) > 1 + ) as approvals_with_duplicates + WHERE approvals_with_duplicates.user_id = approvals.user_id + AND approvals_with_duplicates.merge_request_id = approvals.merge_request_id + AND approvals_with_duplicates.min_id <> approvals.id; + SQL remove_concurrent_index :approvals, [:user_id, :merge_request_id, :id] end diff --git a/db/post_migrate/20190703185326_fix_wrong_pages_access_level.rb b/db/post_migrate/20190703185326_fix_wrong_pages_access_level.rb new file mode 100644 index 00000000000..e5981956cf5 --- /dev/null +++ b/db/post_migrate/20190703185326_fix_wrong_pages_access_level.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +class FixWrongPagesAccessLevel < ActiveRecord::Migration[5.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + MIGRATION = 'FixPagesAccessLevel' + BATCH_SIZE = 20_000 + BATCH_TIME = 2.minutes + + disable_ddl_transaction! + + class ProjectFeature < ActiveRecord::Base + include ::EachBatch + + self.table_name = 'project_features' + self.inheritance_column = :_type_disabled + end + + def up + queue_background_migration_jobs_by_range_at_intervals( + ProjectFeature, + MIGRATION, + BATCH_TIME, + batch_size: BATCH_SIZE) + end +end diff --git a/db/post_migrate/20190715043944_remove_sha_index_from_versions.rb b/db/post_migrate/20190715043944_remove_sha_index_from_versions.rb new file mode 100644 index 00000000000..b23abb80dda --- /dev/null +++ b/db/post_migrate/20190715043944_remove_sha_index_from_versions.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class RemoveShaIndexFromVersions < ActiveRecord::Migration[5.2] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + remove_concurrent_index :design_management_versions, :sha + end + + def down + add_concurrent_index :design_management_versions, :sha, unique: true, using: :btree + end +end diff --git a/db/post_migrate/20190715044501_add_unique_issue_id_sha_index_to_versions.rb b/db/post_migrate/20190715044501_add_unique_issue_id_sha_index_to_versions.rb new file mode 100644 index 00000000000..27b0c9648f9 --- /dev/null +++ b/db/post_migrate/20190715044501_add_unique_issue_id_sha_index_to_versions.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddUniqueIssueIdShaIndexToVersions < ActiveRecord::Migration[5.2] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + add_concurrent_index :design_management_versions, [:sha, :issue_id], unique: true, using: :btree + end + + def down + remove_concurrent_index :design_management_versions, [:sha, :issue_id] + end +end diff --git a/db/post_migrate/20190715114644_drop_project_features_pages_access_level_default.rb b/db/post_migrate/20190715114644_drop_project_features_pages_access_level_default.rb new file mode 100644 index 00000000000..2fb0aa0f460 --- /dev/null +++ b/db/post_migrate/20190715114644_drop_project_features_pages_access_level_default.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +class DropProjectFeaturesPagesAccessLevelDefault < ActiveRecord::Migration[5.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + ENABLED_VALUE = 20 + + def change + change_column_default :project_features, :pages_access_level, from: ENABLED_VALUE, to: nil + end +end diff --git a/db/post_migrate/20190723105753_add_index_on_identities_lower_extern_uid_and_provider.rb b/db/post_migrate/20190723105753_add_index_on_identities_lower_extern_uid_and_provider.rb new file mode 100644 index 00000000000..36ecca4821f --- /dev/null +++ b/db/post_migrate/20190723105753_add_index_on_identities_lower_extern_uid_and_provider.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class AddIndexOnIdentitiesLowerExternUidAndProvider < ActiveRecord::Migration[5.2] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + INDEX_NAME = "index_on_identities_lower_extern_uid_and_provider" + + def up + add_concurrent_index(:identities, 'lower(extern_uid), provider', name: INDEX_NAME) + end + + def down + remove_concurrent_index_by_name(:identities, INDEX_NAME) + end +end diff --git a/db/post_migrate/20190801114109_cleanup_allow_local_requests_from_hooks_and_services_application_setting_rename.rb b/db/post_migrate/20190801114109_cleanup_allow_local_requests_from_hooks_and_services_application_setting_rename.rb new file mode 100644 index 00000000000..127e44254ac --- /dev/null +++ b/db/post_migrate/20190801114109_cleanup_allow_local_requests_from_hooks_and_services_application_setting_rename.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class CleanupAllowLocalRequestsFromHooksAndServicesApplicationSettingRename < ActiveRecord::Migration[5.2] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + cleanup_concurrent_column_rename :application_settings, :allow_local_requests_from_hooks_and_services, :allow_local_requests_from_web_hooks_and_services + end + + def down + rename_column_concurrently :application_settings, :allow_local_requests_from_web_hooks_and_services, :allow_local_requests_from_hooks_and_services + end +end diff --git a/db/schema.rb b/db/schema.rb index 644ca1fe970..a9b7c1930e3 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2019_07_03_130053) do +ActiveRecord::Schema.define(version: 2019_08_02_012622) do # These are extensions that must be enabled in order to support this database enable_extension "pg_trgm" @@ -183,7 +183,6 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "external_authorization_service_default_label" t.boolean "pages_domain_verification_enabled", default: true, null: false t.string "user_default_internal_regex" - t.boolean "allow_local_requests_from_hooks_and_services", default: false, null: false t.float "external_authorization_service_timeout", default: 0.5 t.text "external_auth_client_cert" t.text "encrypted_external_auth_client_key" @@ -228,16 +227,20 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.boolean "lock_memberships_to_ldap", default: false, null: false t.boolean "time_tracking_limit_to_hours", default: false, null: false t.string "grafana_url", default: "/-/grafana", null: false - t.index ["custom_project_templates_group_id"], name: "index_application_settings_on_custom_project_templates_group_id", using: :btree - t.index ["file_template_project_id"], name: "index_application_settings_on_file_template_project_id", using: :btree - t.index ["usage_stats_set_by_user_id"], name: "index_application_settings_on_usage_stats_set_by_user_id", using: :btree + t.string "outbound_local_requests_whitelist", limit: 255, default: [], null: false, array: true + t.integer "raw_blob_request_limit", default: 300, null: false + t.boolean "allow_local_requests_from_web_hooks_and_services", default: false, null: false + t.boolean "allow_local_requests_from_system_hooks", default: true, null: false + t.index ["custom_project_templates_group_id"], name: "index_application_settings_on_custom_project_templates_group_id" + t.index ["file_template_project_id"], name: "index_application_settings_on_file_template_project_id" + t.index ["usage_stats_set_by_user_id"], name: "index_application_settings_on_usage_stats_set_by_user_id" end create_table "approval_merge_request_rule_sources", force: :cascade do |t| t.bigint "approval_merge_request_rule_id", null: false t.bigint "approval_project_rule_id", null: false - t.index ["approval_merge_request_rule_id"], name: "index_approval_merge_request_rule_sources_1", unique: true, using: :btree - t.index ["approval_project_rule_id"], name: "index_approval_merge_request_rule_sources_2", using: :btree + t.index ["approval_merge_request_rule_id"], name: "index_approval_merge_request_rule_sources_1", unique: true + t.index ["approval_project_rule_id"], name: "index_approval_merge_request_rule_sources_2" end create_table "approval_merge_request_rules", force: :cascade do |t| @@ -249,31 +252,31 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "name", null: false t.integer "rule_type", limit: 2, default: 1, null: false t.integer "report_type", limit: 2 - t.index ["merge_request_id", "code_owner", "name"], name: "approval_rule_name_index_for_code_owners", unique: true, where: "(code_owner = true)", using: :btree - t.index ["merge_request_id", "code_owner"], name: "index_approval_merge_request_rules_1", using: :btree - t.index ["merge_request_id", "rule_type", "name"], name: "index_approval_rule_name_for_code_owners_rule_type", unique: true, where: "(rule_type = 2)", using: :btree - t.index ["merge_request_id", "rule_type"], name: "index_approval_rules_code_owners_rule_type", where: "(rule_type = 2)", using: :btree + t.index ["merge_request_id", "code_owner", "name"], name: "approval_rule_name_index_for_code_owners", unique: true, where: "(code_owner = true)" + t.index ["merge_request_id", "code_owner"], name: "index_approval_merge_request_rules_1" + t.index ["merge_request_id", "rule_type", "name"], name: "index_approval_rule_name_for_code_owners_rule_type", unique: true, where: "(rule_type = 2)" + t.index ["merge_request_id", "rule_type"], name: "index_approval_rules_code_owners_rule_type", where: "(rule_type = 2)" end create_table "approval_merge_request_rules_approved_approvers", force: :cascade do |t| t.bigint "approval_merge_request_rule_id", null: false t.integer "user_id", null: false - t.index ["approval_merge_request_rule_id", "user_id"], name: "index_approval_merge_request_rules_approved_approvers_1", unique: true, using: :btree - t.index ["user_id"], name: "index_approval_merge_request_rules_approved_approvers_2", using: :btree + t.index ["approval_merge_request_rule_id", "user_id"], name: "index_approval_merge_request_rules_approved_approvers_1", unique: true + t.index ["user_id"], name: "index_approval_merge_request_rules_approved_approvers_2" end create_table "approval_merge_request_rules_groups", force: :cascade do |t| t.bigint "approval_merge_request_rule_id", null: false t.integer "group_id", null: false - t.index ["approval_merge_request_rule_id", "group_id"], name: "index_approval_merge_request_rules_groups_1", unique: true, using: :btree - t.index ["group_id"], name: "index_approval_merge_request_rules_groups_2", using: :btree + t.index ["approval_merge_request_rule_id", "group_id"], name: "index_approval_merge_request_rules_groups_1", unique: true + t.index ["group_id"], name: "index_approval_merge_request_rules_groups_2" end create_table "approval_merge_request_rules_users", force: :cascade do |t| t.bigint "approval_merge_request_rule_id", null: false t.integer "user_id", null: false - t.index ["approval_merge_request_rule_id", "user_id"], name: "index_approval_merge_request_rules_users_1", unique: true, using: :btree - t.index ["user_id"], name: "index_approval_merge_request_rules_users_2", using: :btree + t.index ["approval_merge_request_rule_id", "user_id"], name: "index_approval_merge_request_rules_users_1", unique: true + t.index ["user_id"], name: "index_approval_merge_request_rules_users_2" end create_table "approval_project_rules", force: :cascade do |t| @@ -282,21 +285,23 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "project_id", null: false t.integer "approvals_required", limit: 2, default: 0, null: false t.string "name", null: false - t.index ["project_id"], name: "index_approval_project_rules_on_project_id", using: :btree + t.integer "rule_type", limit: 2, default: 0, null: false + t.index ["project_id"], name: "index_approval_project_rules_on_project_id" + t.index ["rule_type"], name: "index_approval_project_rules_on_rule_type" end create_table "approval_project_rules_groups", force: :cascade do |t| t.bigint "approval_project_rule_id", null: false t.integer "group_id", null: false - t.index ["approval_project_rule_id", "group_id"], name: "index_approval_project_rules_groups_1", unique: true, using: :btree - t.index ["group_id"], name: "index_approval_project_rules_groups_2", using: :btree + t.index ["approval_project_rule_id", "group_id"], name: "index_approval_project_rules_groups_1", unique: true + t.index ["group_id"], name: "index_approval_project_rules_groups_2" end create_table "approval_project_rules_users", force: :cascade do |t| t.bigint "approval_project_rule_id", null: false t.integer "user_id", null: false - t.index ["approval_project_rule_id", "user_id"], name: "index_approval_project_rules_users_1", unique: true, using: :btree - t.index ["user_id"], name: "index_approval_project_rules_users_2", using: :btree + t.index ["approval_project_rule_id", "user_id"], name: "index_approval_project_rules_users_1", unique: true + t.index ["user_id"], name: "index_approval_project_rules_users_2" end create_table "approvals", id: :serial, force: :cascade do |t| @@ -304,8 +309,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "user_id", null: false t.datetime "created_at" t.datetime "updated_at" - t.index ["merge_request_id"], name: "index_approvals_on_merge_request_id", using: :btree - t.index ["user_id", "merge_request_id"], name: "index_approvals_on_user_id_and_merge_request_id", unique: true, using: :btree + t.index ["merge_request_id"], name: "index_approvals_on_merge_request_id" + t.index ["user_id", "merge_request_id"], name: "index_approvals_on_user_id_and_merge_request_id", unique: true end create_table "approver_groups", id: :serial, force: :cascade do |t| @@ -314,8 +319,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "group_id", null: false t.datetime "created_at" t.datetime "updated_at" - t.index ["group_id"], name: "index_approver_groups_on_group_id", using: :btree - t.index ["target_id", "target_type"], name: "index_approver_groups_on_target_id_and_target_type", using: :btree + t.index ["group_id"], name: "index_approver_groups_on_group_id" + t.index ["target_id", "target_type"], name: "index_approver_groups_on_target_id_and_target_type" end create_table "approvers", id: :serial, force: :cascade do |t| @@ -324,8 +329,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "user_id", null: false t.datetime "created_at" t.datetime "updated_at" - t.index ["target_id", "target_type"], name: "index_approvers_on_target_id_and_target_type", using: :btree - t.index ["user_id"], name: "index_approvers_on_user_id", using: :btree + t.index ["target_id", "target_type"], name: "index_approvers_on_target_id_and_target_type" + t.index ["user_id"], name: "index_approvers_on_user_id" end create_table "audit_events", id: :serial, force: :cascade do |t| @@ -336,8 +341,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.text "details" t.datetime "created_at" t.datetime "updated_at" - t.index ["created_at", "author_id"], name: "analytics_index_audit_events_on_created_at_and_author_id", using: :btree - t.index ["entity_id", "entity_type"], name: "index_audit_events_on_entity_id_and_entity_type", using: :btree + t.index ["created_at", "author_id"], name: "analytics_index_audit_events_on_created_at_and_author_id" + t.index ["entity_id", "entity_type"], name: "index_audit_events_on_entity_id_and_entity_type" end create_table "award_emoji", id: :serial, force: :cascade do |t| @@ -347,8 +352,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "awardable_type" t.datetime "created_at" t.datetime "updated_at" - t.index ["awardable_type", "awardable_id"], name: "index_award_emoji_on_awardable_type_and_awardable_id", using: :btree - t.index ["user_id", "name"], name: "index_award_emoji_on_user_id_and_name", using: :btree + t.index ["awardable_type", "awardable_id"], name: "index_award_emoji_on_awardable_type_and_awardable_id" + t.index ["user_id", "name"], name: "index_award_emoji_on_user_id_and_name" end create_table "badges", id: :serial, force: :cascade do |t| @@ -359,15 +364,15 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "type", null: false t.datetime_with_timezone "created_at", null: false t.datetime_with_timezone "updated_at", null: false - t.index ["group_id"], name: "index_badges_on_group_id", using: :btree - t.index ["project_id"], name: "index_badges_on_project_id", using: :btree + t.index ["group_id"], name: "index_badges_on_group_id" + t.index ["project_id"], name: "index_badges_on_project_id" end create_table "board_assignees", id: :serial, force: :cascade do |t| t.integer "board_id", null: false t.integer "assignee_id", null: false - t.index ["assignee_id"], name: "index_board_assignees_on_assignee_id", using: :btree - t.index ["board_id", "assignee_id"], name: "index_board_assignees_on_board_id_and_assignee_id", unique: true, using: :btree + t.index ["assignee_id"], name: "index_board_assignees_on_assignee_id" + t.index ["board_id", "assignee_id"], name: "index_board_assignees_on_board_id_and_assignee_id", unique: true end create_table "board_group_recent_visits", force: :cascade do |t| @@ -376,17 +381,17 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "user_id" t.integer "board_id" t.integer "group_id" - t.index ["board_id"], name: "index_board_group_recent_visits_on_board_id", using: :btree - t.index ["group_id"], name: "index_board_group_recent_visits_on_group_id", using: :btree - t.index ["user_id", "group_id", "board_id"], name: "index_board_group_recent_visits_on_user_group_and_board", unique: true, using: :btree - t.index ["user_id"], name: "index_board_group_recent_visits_on_user_id", using: :btree + t.index ["board_id"], name: "index_board_group_recent_visits_on_board_id" + t.index ["group_id"], name: "index_board_group_recent_visits_on_group_id" + t.index ["user_id", "group_id", "board_id"], name: "index_board_group_recent_visits_on_user_group_and_board", unique: true + t.index ["user_id"], name: "index_board_group_recent_visits_on_user_id" end create_table "board_labels", id: :serial, force: :cascade do |t| t.integer "board_id", null: false t.integer "label_id", null: false - t.index ["board_id", "label_id"], name: "index_board_labels_on_board_id_and_label_id", unique: true, using: :btree - t.index ["label_id"], name: "index_board_labels_on_label_id", using: :btree + t.index ["board_id", "label_id"], name: "index_board_labels_on_board_id_and_label_id", unique: true + t.index ["label_id"], name: "index_board_labels_on_label_id" end create_table "board_project_recent_visits", force: :cascade do |t| @@ -395,10 +400,10 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "user_id" t.integer "project_id" t.integer "board_id" - t.index ["board_id"], name: "index_board_project_recent_visits_on_board_id", using: :btree - t.index ["project_id"], name: "index_board_project_recent_visits_on_project_id", using: :btree - t.index ["user_id", "project_id", "board_id"], name: "index_board_project_recent_visits_on_user_project_and_board", unique: true, using: :btree - t.index ["user_id"], name: "index_board_project_recent_visits_on_user_id", using: :btree + t.index ["board_id"], name: "index_board_project_recent_visits_on_board_id" + t.index ["project_id"], name: "index_board_project_recent_visits_on_project_id" + t.index ["user_id", "project_id", "board_id"], name: "index_board_project_recent_visits_on_user_project_and_board", unique: true + t.index ["user_id"], name: "index_board_project_recent_visits_on_user_id" end create_table "boards", id: :serial, force: :cascade do |t| @@ -409,9 +414,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "milestone_id" t.integer "group_id" t.integer "weight" - t.index ["group_id"], name: "index_boards_on_group_id", using: :btree - t.index ["milestone_id"], name: "index_boards_on_milestone_id", using: :btree - t.index ["project_id"], name: "index_boards_on_project_id", using: :btree + t.index ["group_id"], name: "index_boards_on_group_id" + t.index ["milestone_id"], name: "index_boards_on_milestone_id" + t.index ["project_id"], name: "index_boards_on_project_id" end create_table "broadcast_messages", id: :serial, force: :cascade do |t| @@ -424,7 +429,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "font" t.text "message_html", null: false t.integer "cached_markdown_version" - t.index ["starts_at", "ends_at", "id"], name: "index_broadcast_messages_on_starts_at_and_ends_at_and_id", using: :btree + t.index ["starts_at", "ends_at", "id"], name: "index_broadcast_messages_on_starts_at_and_ends_at_and_id" end create_table "chat_names", id: :serial, force: :cascade do |t| @@ -437,8 +442,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "last_used_at" t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.index ["service_id", "team_id", "chat_id"], name: "index_chat_names_on_service_id_and_team_id_and_chat_id", unique: true, using: :btree - t.index ["user_id", "service_id"], name: "index_chat_names_on_user_id_and_service_id", unique: true, using: :btree + t.index ["service_id", "team_id", "chat_id"], name: "index_chat_names_on_service_id_and_team_id_and_chat_id", unique: true + t.index ["user_id", "service_id"], name: "index_chat_names_on_user_id_and_service_id", unique: true end create_table "chat_teams", id: :serial, force: :cascade do |t| @@ -447,7 +452,13 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "name" t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.index ["namespace_id"], name: "index_chat_teams_on_namespace_id", unique: true, using: :btree + t.index ["namespace_id"], name: "index_chat_teams_on_namespace_id", unique: true + end + + create_table "ci_build_needs", id: :serial, force: :cascade do |t| + t.integer "build_id", null: false + t.text "name", null: false + t.index ["build_id", "name"], name: "index_ci_build_needs_on_build_id_and_name", unique: true end create_table "ci_build_trace_chunks", force: :cascade do |t| @@ -455,13 +466,13 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "chunk_index", null: false t.integer "data_store", null: false t.binary "raw_data" - t.index ["build_id", "chunk_index"], name: "index_ci_build_trace_chunks_on_build_id_and_chunk_index", unique: true, using: :btree + t.index ["build_id", "chunk_index"], name: "index_ci_build_trace_chunks_on_build_id_and_chunk_index", unique: true end create_table "ci_build_trace_section_names", id: :serial, force: :cascade do |t| t.integer "project_id", null: false t.string "name", null: false - t.index ["project_id", "name"], name: "index_ci_build_trace_section_names_on_project_id_and_name", unique: true, using: :btree + t.index ["project_id", "name"], name: "index_ci_build_trace_section_names_on_project_id_and_name", unique: true end create_table "ci_build_trace_sections", id: :serial, force: :cascade do |t| @@ -472,9 +483,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.bigint "byte_end", null: false t.integer "build_id", null: false t.integer "section_name_id", null: false - t.index ["build_id", "section_name_id"], name: "index_ci_build_trace_sections_on_build_id_and_section_name_id", unique: true, using: :btree - t.index ["project_id"], name: "index_ci_build_trace_sections_on_project_id", using: :btree - t.index ["section_name_id"], name: "index_ci_build_trace_sections_on_section_name_id", using: :btree + t.index ["build_id", "section_name_id"], name: "index_ci_build_trace_sections_on_build_id_and_section_name_id", unique: true + t.index ["project_id"], name: "index_ci_build_trace_sections_on_project_id" + t.index ["section_name_id"], name: "index_ci_build_trace_sections_on_section_name_id" end create_table "ci_builds", id: :serial, force: :cascade do |t| @@ -524,28 +535,28 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime_with_timezone "scheduled_at" t.string "token_encrypted" t.integer "upstream_pipeline_id" - t.index ["artifacts_expire_at"], name: "index_ci_builds_on_artifacts_expire_at", where: "(artifacts_file <> ''::text)", using: :btree - t.index ["auto_canceled_by_id"], name: "index_ci_builds_on_auto_canceled_by_id", using: :btree - t.index ["commit_id", "artifacts_expire_at", "id"], name: "index_ci_builds_on_commit_id_and_artifacts_expireatandidpartial", where: "(((type)::text = 'Ci::Build'::text) AND ((retried = false) OR (retried IS NULL)) AND ((name)::text = ANY (ARRAY[('sast'::character varying)::text, ('dependency_scanning'::character varying)::text, ('sast:container'::character varying)::text, ('container_scanning'::character varying)::text, ('dast'::character varying)::text])))", using: :btree - t.index ["commit_id", "stage_idx", "created_at"], name: "index_ci_builds_on_commit_id_and_stage_idx_and_created_at", using: :btree - t.index ["commit_id", "status", "type"], name: "index_ci_builds_on_commit_id_and_status_and_type", using: :btree - t.index ["commit_id", "type", "name", "ref"], name: "index_ci_builds_on_commit_id_and_type_and_name_and_ref", using: :btree - t.index ["commit_id", "type", "ref"], name: "index_ci_builds_on_commit_id_and_type_and_ref", using: :btree - t.index ["name"], name: "index_ci_builds_on_name_for_security_products_values", where: "((name)::text = ANY (ARRAY[('container_scanning'::character varying)::text, ('dast'::character varying)::text, ('dependency_scanning'::character varying)::text, ('license_management'::character varying)::text, ('sast'::character varying)::text]))", using: :btree - t.index ["project_id", "id"], name: "index_ci_builds_on_project_id_and_id", using: :btree - t.index ["project_id", "status"], name: "index_ci_builds_project_id_and_status_for_live_jobs_partial2", where: "(((type)::text = 'Ci::Build'::text) AND ((status)::text = ANY (ARRAY[('running'::character varying)::text, ('pending'::character varying)::text, ('created'::character varying)::text])))", using: :btree - t.index ["protected"], name: "index_ci_builds_on_protected", using: :btree - t.index ["queued_at"], name: "index_ci_builds_on_queued_at", using: :btree - t.index ["runner_id"], name: "index_ci_builds_on_runner_id", using: :btree - t.index ["scheduled_at"], name: "partial_index_ci_builds_on_scheduled_at_with_scheduled_jobs", where: "((scheduled_at IS NOT NULL) AND ((type)::text = 'Ci::Build'::text) AND ((status)::text = 'scheduled'::text))", using: :btree - t.index ["stage_id", "stage_idx"], name: "tmp_build_stage_position_index", where: "(stage_idx IS NOT NULL)", using: :btree - t.index ["stage_id"], name: "index_ci_builds_on_stage_id", using: :btree - t.index ["status", "type", "runner_id"], name: "index_ci_builds_on_status_and_type_and_runner_id", using: :btree - t.index ["token"], name: "index_ci_builds_on_token", unique: true, using: :btree - t.index ["token_encrypted"], name: "index_ci_builds_on_token_encrypted", unique: true, where: "(token_encrypted IS NOT NULL)", using: :btree - t.index ["updated_at"], name: "index_ci_builds_on_updated_at", using: :btree - t.index ["upstream_pipeline_id"], name: "index_ci_builds_on_upstream_pipeline_id", where: "(upstream_pipeline_id IS NOT NULL)", using: :btree - t.index ["user_id"], name: "index_ci_builds_on_user_id", using: :btree + t.index ["artifacts_expire_at"], name: "index_ci_builds_on_artifacts_expire_at", where: "(artifacts_file <> ''::text)" + t.index ["auto_canceled_by_id"], name: "index_ci_builds_on_auto_canceled_by_id" + t.index ["commit_id", "artifacts_expire_at", "id"], name: "index_ci_builds_on_commit_id_and_artifacts_expireatandidpartial", where: "(((type)::text = 'Ci::Build'::text) AND ((retried = false) OR (retried IS NULL)) AND ((name)::text = ANY (ARRAY[('sast'::character varying)::text, ('dependency_scanning'::character varying)::text, ('sast:container'::character varying)::text, ('container_scanning'::character varying)::text, ('dast'::character varying)::text])))" + t.index ["commit_id", "stage_idx", "created_at"], name: "index_ci_builds_on_commit_id_and_stage_idx_and_created_at" + t.index ["commit_id", "status", "type"], name: "index_ci_builds_on_commit_id_and_status_and_type" + t.index ["commit_id", "type", "name", "ref"], name: "index_ci_builds_on_commit_id_and_type_and_name_and_ref" + t.index ["commit_id", "type", "ref"], name: "index_ci_builds_on_commit_id_and_type_and_ref" + t.index ["name"], name: "index_ci_builds_on_name_for_security_products_values", where: "((name)::text = ANY (ARRAY[('container_scanning'::character varying)::text, ('dast'::character varying)::text, ('dependency_scanning'::character varying)::text, ('license_management'::character varying)::text, ('sast'::character varying)::text]))" + t.index ["project_id", "id"], name: "index_ci_builds_on_project_id_and_id" + t.index ["project_id", "status"], name: "index_ci_builds_project_id_and_status_for_live_jobs_partial2", where: "(((type)::text = 'Ci::Build'::text) AND ((status)::text = ANY (ARRAY[('running'::character varying)::text, ('pending'::character varying)::text, ('created'::character varying)::text])))" + t.index ["protected"], name: "index_ci_builds_on_protected" + t.index ["queued_at"], name: "index_ci_builds_on_queued_at" + t.index ["runner_id"], name: "index_ci_builds_on_runner_id" + t.index ["scheduled_at"], name: "partial_index_ci_builds_on_scheduled_at_with_scheduled_jobs", where: "((scheduled_at IS NOT NULL) AND ((type)::text = 'Ci::Build'::text) AND ((status)::text = 'scheduled'::text))" + t.index ["stage_id", "stage_idx"], name: "tmp_build_stage_position_index", where: "(stage_idx IS NOT NULL)" + t.index ["stage_id"], name: "index_ci_builds_on_stage_id" + t.index ["status", "type", "runner_id"], name: "index_ci_builds_on_status_and_type_and_runner_id" + t.index ["token"], name: "index_ci_builds_on_token", unique: true + t.index ["token_encrypted"], name: "index_ci_builds_on_token_encrypted", unique: true, where: "(token_encrypted IS NOT NULL)" + t.index ["updated_at"], name: "index_ci_builds_on_updated_at" + t.index ["upstream_pipeline_id"], name: "index_ci_builds_on_upstream_pipeline_id", where: "(upstream_pipeline_id IS NOT NULL)" + t.index ["user_id"], name: "index_ci_builds_on_user_id" end create_table "ci_builds_metadata", id: :serial, force: :cascade do |t| @@ -555,8 +566,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "timeout_source", default: 1, null: false t.jsonb "config_options" t.jsonb "config_variables" - t.index ["build_id"], name: "index_ci_builds_metadata_on_build_id", unique: true, using: :btree - t.index ["project_id"], name: "index_ci_builds_metadata_on_project_id", using: :btree + t.index ["build_id"], name: "index_ci_builds_metadata_on_build_id", unique: true + t.index ["project_id"], name: "index_ci_builds_metadata_on_project_id" end create_table "ci_builds_runner_session", force: :cascade do |t| @@ -564,7 +575,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "url", null: false t.string "certificate" t.string "authorization" - t.index ["build_id"], name: "index_ci_builds_runner_session_on_build_id", unique: true, using: :btree + t.index ["build_id"], name: "index_ci_builds_runner_session_on_build_id", unique: true end create_table "ci_group_variables", id: :serial, force: :cascade do |t| @@ -579,7 +590,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime_with_timezone "updated_at", null: false t.boolean "masked", default: false, null: false t.integer "variable_type", limit: 2, default: 1, null: false - t.index ["group_id", "key"], name: "index_ci_group_variables_on_group_id_and_key", unique: true, using: :btree + t.index ["group_id", "key"], name: "index_ci_group_variables_on_group_id_and_key", unique: true end create_table "ci_job_artifacts", id: :serial, force: :cascade do |t| @@ -595,18 +606,28 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.binary "file_sha256" t.integer "file_format", limit: 2 t.integer "file_location", limit: 2 - t.index ["expire_at", "job_id"], name: "index_ci_job_artifacts_on_expire_at_and_job_id", using: :btree - t.index ["file_store"], name: "index_ci_job_artifacts_on_file_store", using: :btree - t.index ["job_id", "file_type"], name: "index_ci_job_artifacts_on_job_id_and_file_type", unique: true, using: :btree - t.index ["project_id"], name: "index_ci_job_artifacts_on_project_id", using: :btree + t.index ["expire_at", "job_id"], name: "index_ci_job_artifacts_on_expire_at_and_job_id" + t.index ["file_store"], name: "index_ci_job_artifacts_on_file_store" + t.index ["job_id", "file_type"], name: "index_ci_job_artifacts_on_job_id_and_file_type", unique: true + t.index ["project_id"], name: "index_ci_job_artifacts_on_project_id" + end + + create_table "ci_job_variables", force: :cascade do |t| + t.string "key", null: false + t.text "encrypted_value" + t.string "encrypted_value_iv" + t.bigint "job_id", null: false + t.integer "variable_type", limit: 2, default: 1, null: false + t.index ["job_id"], name: "index_ci_job_variables_on_job_id" + t.index ["key", "job_id"], name: "index_ci_job_variables_on_key_and_job_id", unique: true end create_table "ci_pipeline_chat_data", force: :cascade do |t| t.integer "pipeline_id", null: false t.integer "chat_name_id", null: false t.text "response_url", null: false - t.index ["chat_name_id"], name: "index_ci_pipeline_chat_data_on_chat_name_id", using: :btree - t.index ["pipeline_id"], name: "index_ci_pipeline_chat_data_on_pipeline_id", unique: true, using: :btree + t.index ["chat_name_id"], name: "index_ci_pipeline_chat_data_on_chat_name_id" + t.index ["pipeline_id"], name: "index_ci_pipeline_chat_data_on_pipeline_id", unique: true end create_table "ci_pipeline_schedule_variables", force: :cascade do |t| @@ -619,7 +640,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime_with_timezone "created_at" t.datetime_with_timezone "updated_at" t.integer "variable_type", limit: 2, default: 1, null: false - t.index ["pipeline_schedule_id", "key"], name: "index_ci_pipeline_schedule_variables_on_schedule_id_and_key", unique: true, using: :btree + t.index ["pipeline_schedule_id", "key"], name: "index_ci_pipeline_schedule_variables_on_schedule_id_and_key", unique: true end create_table "ci_pipeline_schedules", id: :serial, force: :cascade do |t| @@ -633,9 +654,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.boolean "active", default: true t.datetime "created_at" t.datetime "updated_at" - t.index ["next_run_at", "active"], name: "index_ci_pipeline_schedules_on_next_run_at_and_active", using: :btree - t.index ["owner_id"], name: "index_ci_pipeline_schedules_on_owner_id", using: :btree - t.index ["project_id"], name: "index_ci_pipeline_schedules_on_project_id", using: :btree + t.index ["next_run_at", "active"], name: "index_ci_pipeline_schedules_on_next_run_at_and_active" + t.index ["owner_id"], name: "index_ci_pipeline_schedules_on_owner_id" + t.index ["project_id"], name: "index_ci_pipeline_schedules_on_project_id" end create_table "ci_pipeline_variables", id: :serial, force: :cascade do |t| @@ -646,7 +667,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "encrypted_value_iv" t.integer "pipeline_id", null: false t.integer "variable_type", limit: 2, default: 1, null: false - t.index ["pipeline_id", "key"], name: "index_ci_pipeline_variables_on_pipeline_id_and_key", unique: true, using: :btree + t.index ["pipeline_id", "key"], name: "index_ci_pipeline_variables_on_pipeline_id_and_key", unique: true end create_table "ci_pipelines", id: :serial, force: :cascade do |t| @@ -675,25 +696,25 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "merge_request_id" t.binary "source_sha" t.binary "target_sha" - t.index ["auto_canceled_by_id"], name: "index_ci_pipelines_on_auto_canceled_by_id", using: :btree - t.index ["merge_request_id"], name: "index_ci_pipelines_on_merge_request_id", where: "(merge_request_id IS NOT NULL)", using: :btree - t.index ["pipeline_schedule_id"], name: "index_ci_pipelines_on_pipeline_schedule_id", using: :btree - t.index ["project_id", "iid"], name: "index_ci_pipelines_on_project_id_and_iid", unique: true, where: "(iid IS NOT NULL)", using: :btree - t.index ["project_id", "ref", "id"], name: "index_ci_pipelines_on_project_idandrefandiddesc", order: { id: :desc }, using: :btree - t.index ["project_id", "ref", "status", "id"], name: "index_ci_pipelines_on_project_id_and_ref_and_status_and_id", using: :btree - t.index ["project_id", "sha"], name: "index_ci_pipelines_on_project_id_and_sha", using: :btree - t.index ["project_id", "source"], name: "index_ci_pipelines_on_project_id_and_source", using: :btree - t.index ["project_id", "status", "config_source"], name: "index_ci_pipelines_on_project_id_and_status_and_config_source", using: :btree - t.index ["project_id"], name: "index_ci_pipelines_on_project_id", using: :btree - t.index ["status"], name: "index_ci_pipelines_on_status", using: :btree - t.index ["user_id"], name: "index_ci_pipelines_on_user_id", using: :btree + t.index ["auto_canceled_by_id"], name: "index_ci_pipelines_on_auto_canceled_by_id" + t.index ["merge_request_id"], name: "index_ci_pipelines_on_merge_request_id", where: "(merge_request_id IS NOT NULL)" + t.index ["pipeline_schedule_id"], name: "index_ci_pipelines_on_pipeline_schedule_id" + t.index ["project_id", "iid"], name: "index_ci_pipelines_on_project_id_and_iid", unique: true, where: "(iid IS NOT NULL)" + t.index ["project_id", "ref", "id"], name: "index_ci_pipelines_on_project_idandrefandiddesc", order: { id: :desc } + t.index ["project_id", "ref", "status", "id"], name: "index_ci_pipelines_on_project_id_and_ref_and_status_and_id" + t.index ["project_id", "sha"], name: "index_ci_pipelines_on_project_id_and_sha" + t.index ["project_id", "source"], name: "index_ci_pipelines_on_project_id_and_source" + t.index ["project_id", "status", "config_source"], name: "index_ci_pipelines_on_project_id_and_status_and_config_source" + t.index ["project_id"], name: "index_ci_pipelines_on_project_id" + t.index ["status"], name: "index_ci_pipelines_on_status" + t.index ["user_id"], name: "index_ci_pipelines_on_user_id" end create_table "ci_runner_namespaces", id: :serial, force: :cascade do |t| t.integer "runner_id" t.integer "namespace_id" - t.index ["namespace_id"], name: "index_ci_runner_namespaces_on_namespace_id", using: :btree - t.index ["runner_id", "namespace_id"], name: "index_ci_runner_namespaces_on_runner_id_and_namespace_id", unique: true, using: :btree + t.index ["namespace_id"], name: "index_ci_runner_namespaces_on_namespace_id" + t.index ["runner_id", "namespace_id"], name: "index_ci_runner_namespaces_on_runner_id_and_namespace_id", unique: true end create_table "ci_runner_projects", id: :serial, force: :cascade do |t| @@ -701,8 +722,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "created_at" t.datetime "updated_at" t.integer "project_id" - t.index ["project_id"], name: "index_ci_runner_projects_on_project_id", using: :btree - t.index ["runner_id"], name: "index_ci_runner_projects_on_runner_id", using: :btree + t.index ["project_id"], name: "index_ci_runner_projects_on_project_id" + t.index ["runner_id"], name: "index_ci_runner_projects_on_runner_id" end create_table "ci_runners", id: :serial, force: :cascade do |t| @@ -725,12 +746,12 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "maximum_timeout" t.integer "runner_type", limit: 2, null: false t.string "token_encrypted" - t.index ["contacted_at"], name: "index_ci_runners_on_contacted_at", using: :btree - t.index ["is_shared"], name: "index_ci_runners_on_is_shared", using: :btree - t.index ["locked"], name: "index_ci_runners_on_locked", using: :btree - t.index ["runner_type"], name: "index_ci_runners_on_runner_type", using: :btree - t.index ["token"], name: "index_ci_runners_on_token", using: :btree - t.index ["token_encrypted"], name: "index_ci_runners_on_token_encrypted", using: :btree + t.index ["contacted_at"], name: "index_ci_runners_on_contacted_at" + t.index ["is_shared"], name: "index_ci_runners_on_is_shared" + t.index ["locked"], name: "index_ci_runners_on_locked" + t.index ["runner_type"], name: "index_ci_runners_on_runner_type" + t.index ["token"], name: "index_ci_runners_on_token" + t.index ["token_encrypted"], name: "index_ci_runners_on_token_encrypted" end create_table "ci_sources_pipelines", id: :serial, force: :cascade do |t| @@ -739,11 +760,11 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "source_project_id" t.integer "source_job_id" t.integer "source_pipeline_id" - t.index ["pipeline_id"], name: "index_ci_sources_pipelines_on_pipeline_id", using: :btree - t.index ["project_id"], name: "index_ci_sources_pipelines_on_project_id", using: :btree - t.index ["source_job_id"], name: "index_ci_sources_pipelines_on_source_job_id", using: :btree - t.index ["source_pipeline_id"], name: "index_ci_sources_pipelines_on_source_pipeline_id", using: :btree - t.index ["source_project_id"], name: "index_ci_sources_pipelines_on_source_project_id", using: :btree + t.index ["pipeline_id"], name: "index_ci_sources_pipelines_on_pipeline_id" + t.index ["project_id"], name: "index_ci_sources_pipelines_on_project_id" + t.index ["source_job_id"], name: "index_ci_sources_pipelines_on_source_job_id" + t.index ["source_pipeline_id"], name: "index_ci_sources_pipelines_on_source_pipeline_id" + t.index ["source_project_id"], name: "index_ci_sources_pipelines_on_source_project_id" end create_table "ci_stages", id: :serial, force: :cascade do |t| @@ -755,10 +776,10 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "status" t.integer "lock_version" t.integer "position" - t.index ["pipeline_id", "name"], name: "index_ci_stages_on_pipeline_id_and_name", unique: true, using: :btree - t.index ["pipeline_id", "position"], name: "index_ci_stages_on_pipeline_id_and_position", using: :btree - t.index ["pipeline_id"], name: "index_ci_stages_on_pipeline_id", using: :btree - t.index ["project_id"], name: "index_ci_stages_on_project_id", using: :btree + t.index ["pipeline_id", "name"], name: "index_ci_stages_on_pipeline_id_and_name", unique: true + t.index ["pipeline_id", "position"], name: "index_ci_stages_on_pipeline_id_and_position" + t.index ["pipeline_id"], name: "index_ci_stages_on_pipeline_id" + t.index ["project_id"], name: "index_ci_stages_on_project_id" end create_table "ci_trigger_requests", id: :serial, force: :cascade do |t| @@ -767,8 +788,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "created_at" t.datetime "updated_at" t.integer "commit_id" - t.index ["commit_id"], name: "index_ci_trigger_requests_on_commit_id", using: :btree - t.index ["trigger_id"], name: "index_ci_trigger_requests_on_trigger_id", using: :btree + t.index ["commit_id"], name: "index_ci_trigger_requests_on_commit_id" + t.index ["trigger_id"], name: "index_ci_trigger_requests_on_trigger_id" end create_table "ci_triggers", id: :serial, force: :cascade do |t| @@ -779,8 +800,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "owner_id" t.string "description" t.string "ref" - t.index ["owner_id"], name: "index_ci_triggers_on_owner_id", using: :btree - t.index ["project_id"], name: "index_ci_triggers_on_project_id", using: :btree + t.index ["owner_id"], name: "index_ci_triggers_on_owner_id" + t.index ["project_id"], name: "index_ci_triggers_on_project_id" end create_table "ci_variables", id: :serial, force: :cascade do |t| @@ -794,14 +815,14 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "environment_scope", default: "*", null: false t.boolean "masked", default: false, null: false t.integer "variable_type", limit: 2, default: 1, null: false - t.index ["project_id", "key", "environment_scope"], name: "index_ci_variables_on_project_id_and_key_and_environment_scope", unique: true, using: :btree + t.index ["project_id", "key", "environment_scope"], name: "index_ci_variables_on_project_id_and_key_and_environment_scope", unique: true end create_table "cluster_groups", id: :serial, force: :cascade do |t| t.integer "cluster_id", null: false t.integer "group_id", null: false - t.index ["cluster_id", "group_id"], name: "index_cluster_groups_on_cluster_id_and_group_id", unique: true, using: :btree - t.index ["group_id"], name: "index_cluster_groups_on_group_id", using: :btree + t.index ["cluster_id", "group_id"], name: "index_cluster_groups_on_cluster_id_and_group_id", unique: true + t.index ["group_id"], name: "index_cluster_groups_on_group_id" end create_table "cluster_platforms_kubernetes", id: :serial, force: :cascade do |t| @@ -817,7 +838,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.text "encrypted_token" t.string "encrypted_token_iv" t.integer "authorization_type", limit: 2 - t.index ["cluster_id"], name: "index_cluster_platforms_kubernetes_on_cluster_id", unique: true, using: :btree + t.index ["cluster_id"], name: "index_cluster_platforms_kubernetes_on_cluster_id", unique: true end create_table "cluster_projects", id: :serial, force: :cascade do |t| @@ -825,8 +846,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "cluster_id", null: false t.datetime_with_timezone "created_at", null: false t.datetime_with_timezone "updated_at", null: false - t.index ["cluster_id"], name: "index_cluster_projects_on_cluster_id", using: :btree - t.index ["project_id"], name: "index_cluster_projects_on_project_id", using: :btree + t.index ["cluster_id"], name: "index_cluster_projects_on_cluster_id" + t.index ["project_id"], name: "index_cluster_projects_on_project_id" end create_table "cluster_providers_gcp", id: :serial, force: :cascade do |t| @@ -844,7 +865,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.text "encrypted_access_token" t.string "encrypted_access_token_iv" t.boolean "legacy_abac", default: false, null: false - t.index ["cluster_id"], name: "index_cluster_providers_gcp_on_cluster_id", unique: true, using: :btree + t.index ["cluster_id"], name: "index_cluster_providers_gcp_on_cluster_id", unique: true end create_table "clusters", id: :serial, force: :cascade do |t| @@ -859,8 +880,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "cluster_type", limit: 2, default: 3, null: false t.string "domain" t.boolean "managed", default: true, null: false - t.index ["enabled"], name: "index_clusters_on_enabled", using: :btree - t.index ["user_id"], name: "index_clusters_on_user_id", using: :btree + t.index ["enabled"], name: "index_clusters_on_enabled" + t.index ["user_id"], name: "index_clusters_on_user_id" end create_table "clusters_applications_cert_managers", id: :serial, force: :cascade do |t| @@ -871,7 +892,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime_with_timezone "created_at", null: false t.datetime_with_timezone "updated_at", null: false t.text "status_reason" - t.index ["cluster_id"], name: "index_clusters_applications_cert_managers_on_cluster_id", unique: true, using: :btree + t.index ["cluster_id"], name: "index_clusters_applications_cert_managers_on_cluster_id", unique: true end create_table "clusters_applications_helm", id: :serial, force: :cascade do |t| @@ -884,7 +905,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.text "encrypted_ca_key" t.text "encrypted_ca_key_iv" t.text "ca_cert" - t.index ["cluster_id"], name: "index_clusters_applications_helm_on_cluster_id", unique: true, using: :btree + t.index ["cluster_id"], name: "index_clusters_applications_helm_on_cluster_id", unique: true end create_table "clusters_applications_ingress", id: :serial, force: :cascade do |t| @@ -898,7 +919,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.text "status_reason" t.string "external_ip" t.string "external_hostname" - t.index ["cluster_id"], name: "index_clusters_applications_ingress_on_cluster_id", unique: true, using: :btree + t.index ["cluster_id"], name: "index_clusters_applications_ingress_on_cluster_id", unique: true end create_table "clusters_applications_jupyter", id: :serial, force: :cascade do |t| @@ -910,8 +931,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime_with_timezone "created_at", null: false t.datetime_with_timezone "updated_at", null: false t.text "status_reason" - t.index ["cluster_id"], name: "index_clusters_applications_jupyter_on_cluster_id", unique: true, using: :btree - t.index ["oauth_application_id"], name: "index_clusters_applications_jupyter_on_oauth_application_id", using: :btree + t.index ["cluster_id"], name: "index_clusters_applications_jupyter_on_cluster_id", unique: true + t.index ["oauth_application_id"], name: "index_clusters_applications_jupyter_on_oauth_application_id" end create_table "clusters_applications_knative", id: :serial, force: :cascade do |t| @@ -924,7 +945,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.text "status_reason" t.string "external_ip" t.string "external_hostname" - t.index ["cluster_id"], name: "index_clusters_applications_knative_on_cluster_id", unique: true, using: :btree + t.index ["cluster_id"], name: "index_clusters_applications_knative_on_cluster_id", unique: true end create_table "clusters_applications_prometheus", id: :serial, force: :cascade do |t| @@ -937,7 +958,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "encrypted_alert_manager_token" t.string "encrypted_alert_manager_token_iv" t.datetime_with_timezone "last_update_started_at" - t.index ["cluster_id"], name: "index_clusters_applications_prometheus_on_cluster_id", unique: true, using: :btree + t.index ["cluster_id"], name: "index_clusters_applications_prometheus_on_cluster_id", unique: true end create_table "clusters_applications_runners", id: :serial, force: :cascade do |t| @@ -949,8 +970,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "version", null: false t.text "status_reason" t.boolean "privileged", default: true, null: false - t.index ["cluster_id"], name: "index_clusters_applications_runners_on_cluster_id", unique: true, using: :btree - t.index ["runner_id"], name: "index_clusters_applications_runners_on_runner_id", using: :btree + t.index ["cluster_id"], name: "index_clusters_applications_runners_on_cluster_id", unique: true + t.index ["runner_id"], name: "index_clusters_applications_runners_on_runner_id" end create_table "clusters_kubernetes_namespaces", force: :cascade do |t| @@ -963,10 +984,10 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "encrypted_service_account_token_iv" t.string "namespace", null: false t.string "service_account_name" - t.index ["cluster_id", "namespace"], name: "kubernetes_namespaces_cluster_and_namespace", unique: true, using: :btree - t.index ["cluster_id"], name: "index_clusters_kubernetes_namespaces_on_cluster_id", using: :btree - t.index ["cluster_project_id"], name: "index_clusters_kubernetes_namespaces_on_cluster_project_id", using: :btree - t.index ["project_id"], name: "index_clusters_kubernetes_namespaces_on_project_id", using: :btree + t.index ["cluster_id", "namespace"], name: "kubernetes_namespaces_cluster_and_namespace", unique: true + t.index ["cluster_id"], name: "index_clusters_kubernetes_namespaces_on_cluster_id" + t.index ["cluster_project_id"], name: "index_clusters_kubernetes_namespaces_on_cluster_project_id" + t.index ["project_id"], name: "index_clusters_kubernetes_namespaces_on_project_id" end create_table "container_repositories", id: :serial, force: :cascade do |t| @@ -974,8 +995,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "name", null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.index ["project_id", "name"], name: "index_container_repositories_on_project_id_and_name", unique: true, using: :btree - t.index ["project_id"], name: "index_container_repositories_on_project_id", using: :btree + t.index ["project_id", "name"], name: "index_container_repositories_on_project_id_and_name", unique: true + t.index ["project_id"], name: "index_container_repositories_on_project_id" end create_table "conversational_development_index_metrics", id: :serial, force: :cascade do |t| @@ -1021,7 +1042,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "group_id", null: false t.bigint "size" t.datetime_with_timezone "updated_at", null: false - t.index ["group_id", "file_name"], name: "index_dependency_proxy_blobs_on_group_id_and_file_name", using: :btree + t.index ["group_id", "file_name"], name: "index_dependency_proxy_blobs_on_group_id_and_file_name" end create_table "dependency_proxy_group_settings", id: :serial, force: :cascade do |t| @@ -1029,7 +1050,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.boolean "enabled", default: false, null: false t.integer "group_id", null: false t.datetime_with_timezone "updated_at", null: false - t.index ["group_id"], name: "index_dependency_proxy_group_settings_on_group_id", using: :btree + t.index ["group_id"], name: "index_dependency_proxy_group_settings_on_group_id" end create_table "deploy_keys_projects", id: :serial, force: :cascade do |t| @@ -1038,7 +1059,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "created_at" t.datetime "updated_at" t.boolean "can_push", default: false, null: false - t.index ["project_id"], name: "index_deploy_keys_projects_on_project_id", using: :btree + t.index ["project_id"], name: "index_deploy_keys_projects_on_project_id" end create_table "deploy_tokens", id: :serial, force: :cascade do |t| @@ -1050,8 +1071,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "name", null: false t.string "token", null: false t.string "username" - t.index ["token", "expires_at", "id"], name: "index_deploy_tokens_on_token_and_expires_at_and_id", where: "(revoked IS FALSE)", using: :btree - t.index ["token"], name: "index_deploy_tokens_on_token", unique: true, using: :btree + t.index ["token", "expires_at", "id"], name: "index_deploy_tokens_on_token_and_expires_at_and_id", where: "(revoked IS FALSE)" + t.index ["token"], name: "index_deploy_tokens_on_token", unique: true end create_table "deployments", id: :serial, force: :cascade do |t| @@ -1070,37 +1091,41 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "status", limit: 2, null: false t.datetime_with_timezone "finished_at" t.integer "cluster_id" - t.index ["cluster_id"], name: "index_deployments_on_cluster_id", using: :btree - t.index ["created_at"], name: "index_deployments_on_created_at", using: :btree - t.index ["deployable_type", "deployable_id"], name: "index_deployments_on_deployable_type_and_deployable_id", using: :btree - t.index ["environment_id", "id"], name: "index_deployments_on_environment_id_and_id", using: :btree - t.index ["environment_id", "iid", "project_id"], name: "index_deployments_on_environment_id_and_iid_and_project_id", using: :btree - t.index ["environment_id", "status"], name: "index_deployments_on_environment_id_and_status", using: :btree - t.index ["id"], name: "partial_index_deployments_for_legacy_successful_deployments", where: "((finished_at IS NULL) AND (status = 2))", using: :btree - t.index ["project_id", "iid"], name: "index_deployments_on_project_id_and_iid", unique: true, using: :btree - t.index ["project_id", "status", "created_at"], name: "index_deployments_on_project_id_and_status_and_created_at", using: :btree - t.index ["project_id", "status"], name: "index_deployments_on_project_id_and_status", using: :btree + t.index ["cluster_id"], name: "index_deployments_on_cluster_id" + t.index ["created_at"], name: "index_deployments_on_created_at" + t.index ["deployable_type", "deployable_id"], name: "index_deployments_on_deployable_type_and_deployable_id" + t.index ["environment_id", "id"], name: "index_deployments_on_environment_id_and_id" + t.index ["environment_id", "iid", "project_id"], name: "index_deployments_on_environment_id_and_iid_and_project_id" + t.index ["environment_id", "status"], name: "index_deployments_on_environment_id_and_status" + t.index ["id"], name: "partial_index_deployments_for_legacy_successful_deployments", where: "((finished_at IS NULL) AND (status = 2))" + t.index ["project_id", "iid"], name: "index_deployments_on_project_id_and_iid", unique: true + t.index ["project_id", "status", "created_at"], name: "index_deployments_on_project_id_and_status_and_created_at" + t.index ["project_id", "status"], name: "index_deployments_on_project_id_and_status" end create_table "design_management_designs", force: :cascade do |t| t.integer "project_id", null: false t.integer "issue_id", null: false t.string "filename", null: false - t.index ["issue_id", "filename"], name: "index_design_management_designs_on_issue_id_and_filename", unique: true, using: :btree - t.index ["project_id"], name: "index_design_management_designs_on_project_id", using: :btree + t.index ["issue_id", "filename"], name: "index_design_management_designs_on_issue_id_and_filename", unique: true + t.index ["project_id"], name: "index_design_management_designs_on_project_id" end create_table "design_management_designs_versions", id: false, force: :cascade do |t| t.bigint "design_id", null: false t.bigint "version_id", null: false - t.index ["design_id", "version_id"], name: "design_management_designs_versions_uniqueness", unique: true, using: :btree - t.index ["design_id"], name: "index_design_management_designs_versions_on_design_id", using: :btree - t.index ["version_id"], name: "index_design_management_designs_versions_on_version_id", using: :btree + t.integer "event", limit: 2, default: 0, null: false + t.index ["design_id", "version_id"], name: "design_management_designs_versions_uniqueness", unique: true + t.index ["design_id"], name: "index_design_management_designs_versions_on_design_id" + t.index ["event"], name: "index_design_management_designs_versions_on_event" + t.index ["version_id"], name: "index_design_management_designs_versions_on_version_id" end create_table "design_management_versions", force: :cascade do |t| t.binary "sha", null: false - t.index ["sha"], name: "index_design_management_versions_on_sha", unique: true, using: :btree + t.bigint "issue_id" + t.index ["issue_id"], name: "index_design_management_versions_on_issue_id" + t.index ["sha", "issue_id"], name: "index_design_management_versions_on_sha_and_issue_id", unique: true end create_table "draft_notes", force: :cascade do |t| @@ -1112,23 +1137,24 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.text "position" t.text "original_position" t.text "change_position" - t.index ["author_id"], name: "index_draft_notes_on_author_id", using: :btree - t.index ["discussion_id"], name: "index_draft_notes_on_discussion_id", using: :btree - t.index ["merge_request_id"], name: "index_draft_notes_on_merge_request_id", using: :btree + t.binary "commit_id" + t.index ["author_id"], name: "index_draft_notes_on_author_id" + t.index ["discussion_id"], name: "index_draft_notes_on_discussion_id" + t.index ["merge_request_id"], name: "index_draft_notes_on_merge_request_id" end create_table "elasticsearch_indexed_namespaces", id: false, force: :cascade do |t| t.datetime_with_timezone "created_at", null: false t.datetime_with_timezone "updated_at", null: false t.integer "namespace_id" - t.index ["namespace_id"], name: "index_elasticsearch_indexed_namespaces_on_namespace_id", unique: true, using: :btree + t.index ["namespace_id"], name: "index_elasticsearch_indexed_namespaces_on_namespace_id", unique: true end create_table "elasticsearch_indexed_projects", id: false, force: :cascade do |t| t.datetime_with_timezone "created_at", null: false t.datetime_with_timezone "updated_at", null: false t.integer "project_id" - t.index ["project_id"], name: "index_elasticsearch_indexed_projects_on_project_id", unique: true, using: :btree + t.index ["project_id"], name: "index_elasticsearch_indexed_projects_on_project_id", unique: true end create_table "emails", id: :serial, force: :cascade do |t| @@ -1139,9 +1165,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "confirmation_token" t.datetime_with_timezone "confirmed_at" t.datetime_with_timezone "confirmation_sent_at" - t.index ["confirmation_token"], name: "index_emails_on_confirmation_token", unique: true, using: :btree - t.index ["email"], name: "index_emails_on_email", unique: true, using: :btree - t.index ["user_id"], name: "index_emails_on_user_id", using: :btree + t.index ["confirmation_token"], name: "index_emails_on_confirmation_token", unique: true + t.index ["email"], name: "index_emails_on_email", unique: true + t.index ["user_id"], name: "index_emails_on_user_id" end create_table "environments", id: :serial, force: :cascade do |t| @@ -1153,24 +1179,25 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "environment_type" t.string "state", default: "available", null: false t.string "slug", null: false - t.index ["name"], name: "index_environments_on_name_varchar_pattern_ops", using: :btree, opclasses: {"name"=>"varchar_pattern_ops"} - t.index ["project_id", "name"], name: "index_environments_on_project_id_and_name", unique: true, using: :btree - t.index ["project_id", "slug"], name: "index_environments_on_project_id_and_slug", unique: true, using: :btree + t.index ["name"], name: "index_environments_on_name_varchar_pattern_ops", opclass: :varchar_pattern_ops + t.index ["project_id", "name"], name: "index_environments_on_project_id_and_name", unique: true + t.index ["project_id", "slug"], name: "index_environments_on_project_id_and_slug", unique: true + t.index ["project_id", "state"], name: "index_environments_on_project_id_and_state" end create_table "epic_issues", id: :serial, force: :cascade do |t| t.integer "epic_id", null: false t.integer "issue_id", null: false t.integer "relative_position", default: 1073741823, null: false - t.index ["epic_id"], name: "index_epic_issues_on_epic_id", using: :btree - t.index ["issue_id"], name: "index_epic_issues_on_issue_id", unique: true, using: :btree + t.index ["epic_id"], name: "index_epic_issues_on_epic_id" + t.index ["issue_id"], name: "index_epic_issues_on_issue_id", unique: true end create_table "epic_metrics", id: :serial, force: :cascade do |t| t.integer "epic_id", null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.index ["epic_id"], name: "index_epic_metrics", using: :btree + t.index ["epic_id"], name: "index_epic_metrics" end create_table "epics", id: :serial, force: :cascade do |t| @@ -1203,15 +1230,15 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "closed_at" t.integer "parent_id" t.integer "relative_position" - t.index ["assignee_id"], name: "index_epics_on_assignee_id", using: :btree - t.index ["author_id"], name: "index_epics_on_author_id", using: :btree - t.index ["closed_by_id"], name: "index_epics_on_closed_by_id", using: :btree - t.index ["end_date"], name: "index_epics_on_end_date", using: :btree - t.index ["group_id"], name: "index_epics_on_group_id", using: :btree - t.index ["iid"], name: "index_epics_on_iid", using: :btree - t.index ["milestone_id"], name: "index_milestone", using: :btree - t.index ["parent_id"], name: "index_epics_on_parent_id", using: :btree - t.index ["start_date"], name: "index_epics_on_start_date", using: :btree + t.index ["assignee_id"], name: "index_epics_on_assignee_id" + t.index ["author_id"], name: "index_epics_on_author_id" + t.index ["closed_by_id"], name: "index_epics_on_closed_by_id" + t.index ["end_date"], name: "index_epics_on_end_date" + t.index ["group_id"], name: "index_epics_on_group_id" + t.index ["iid"], name: "index_epics_on_iid" + t.index ["milestone_id"], name: "index_milestone" + t.index ["parent_id"], name: "index_epics_on_parent_id" + t.index ["start_date"], name: "index_epics_on_start_date" end create_table "events", id: :serial, force: :cascade do |t| @@ -1222,12 +1249,12 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime_with_timezone "updated_at", null: false t.integer "action", limit: 2, null: false t.string "target_type" - t.index ["action"], name: "index_events_on_action", using: :btree - t.index ["author_id", "project_id"], name: "index_events_on_author_id_and_project_id", using: :btree - t.index ["created_at", "author_id"], name: "analytics_index_events_on_created_at_and_author_id", using: :btree - t.index ["project_id", "created_at"], name: "index_events_on_project_id_and_created_at", using: :btree - t.index ["project_id", "id"], name: "index_events_on_project_id_and_id", using: :btree - t.index ["target_type", "target_id"], name: "index_events_on_target_type_and_target_id", using: :btree + t.index ["action"], name: "index_events_on_action" + t.index ["author_id", "project_id"], name: "index_events_on_author_id_and_project_id" + t.index ["created_at", "author_id"], name: "analytics_index_events_on_created_at_and_author_id" + t.index ["project_id", "created_at"], name: "index_events_on_project_id_and_created_at" + t.index ["project_id", "id"], name: "index_events_on_project_id_and_id" + t.index ["target_type", "target_id"], name: "index_events_on_target_type_and_target_id" end create_table "feature_gates", id: :serial, force: :cascade do |t| @@ -1236,29 +1263,29 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "value" t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.index ["feature_key", "key", "value"], name: "index_feature_gates_on_feature_key_and_key_and_value", unique: true, using: :btree + t.index ["feature_key", "key", "value"], name: "index_feature_gates_on_feature_key_and_key_and_value", unique: true end create_table "features", id: :serial, force: :cascade do |t| t.string "key", null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.index ["key"], name: "index_features_on_key", unique: true, using: :btree + t.index ["key"], name: "index_features_on_key", unique: true end create_table "fork_network_members", id: :serial, force: :cascade do |t| t.integer "fork_network_id", null: false t.integer "project_id", null: false t.integer "forked_from_project_id" - t.index ["fork_network_id"], name: "index_fork_network_members_on_fork_network_id", using: :btree - t.index ["forked_from_project_id"], name: "index_fork_network_members_on_forked_from_project_id", using: :btree - t.index ["project_id"], name: "index_fork_network_members_on_project_id", unique: true, using: :btree + t.index ["fork_network_id"], name: "index_fork_network_members_on_fork_network_id" + t.index ["forked_from_project_id"], name: "index_fork_network_members_on_forked_from_project_id" + t.index ["project_id"], name: "index_fork_network_members_on_project_id", unique: true end create_table "fork_networks", id: :serial, force: :cascade do |t| t.integer "root_project_id" t.string "deleted_root_project_name" - t.index ["root_project_id"], name: "index_fork_networks_on_root_project_id", unique: true, using: :btree + t.index ["root_project_id"], name: "index_fork_networks_on_root_project_id", unique: true end create_table "forked_project_links", id: :serial, force: :cascade do |t| @@ -1266,13 +1293,18 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "forked_from_project_id", null: false t.datetime "created_at" t.datetime "updated_at" - t.index ["forked_to_project_id"], name: "index_forked_project_links_on_forked_to_project_id", unique: true, using: :btree + t.index ["forked_to_project_id"], name: "index_forked_project_links_on_forked_to_project_id", unique: true end create_table "geo_cache_invalidation_events", force: :cascade do |t| t.string "key", null: false end + create_table "geo_container_repository_updated_events", force: :cascade do |t| + t.integer "container_repository_id", null: false + t.index ["container_repository_id"], name: "idx_geo_con_rep_updated_events_on_container_repository_id" + end + create_table "geo_event_log", force: :cascade do |t| t.datetime "created_at", null: false t.bigint "repository_updated_event_id" @@ -1287,25 +1319,27 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.bigint "job_artifact_deleted_event_id" t.bigint "reset_checksum_event_id" t.bigint "cache_invalidation_event_id" - t.index ["cache_invalidation_event_id"], name: "index_geo_event_log_on_cache_invalidation_event_id", where: "(cache_invalidation_event_id IS NOT NULL)", using: :btree - t.index ["hashed_storage_attachments_event_id"], name: "index_geo_event_log_on_hashed_storage_attachments_event_id", where: "(hashed_storage_attachments_event_id IS NOT NULL)", using: :btree - t.index ["hashed_storage_migrated_event_id"], name: "index_geo_event_log_on_hashed_storage_migrated_event_id", where: "(hashed_storage_migrated_event_id IS NOT NULL)", using: :btree - t.index ["job_artifact_deleted_event_id"], name: "index_geo_event_log_on_job_artifact_deleted_event_id", where: "(job_artifact_deleted_event_id IS NOT NULL)", using: :btree - t.index ["lfs_object_deleted_event_id"], name: "index_geo_event_log_on_lfs_object_deleted_event_id", where: "(lfs_object_deleted_event_id IS NOT NULL)", using: :btree - t.index ["repositories_changed_event_id"], name: "index_geo_event_log_on_repositories_changed_event_id", where: "(repositories_changed_event_id IS NOT NULL)", using: :btree - t.index ["repository_created_event_id"], name: "index_geo_event_log_on_repository_created_event_id", where: "(repository_created_event_id IS NOT NULL)", using: :btree - t.index ["repository_deleted_event_id"], name: "index_geo_event_log_on_repository_deleted_event_id", where: "(repository_deleted_event_id IS NOT NULL)", using: :btree - t.index ["repository_renamed_event_id"], name: "index_geo_event_log_on_repository_renamed_event_id", where: "(repository_renamed_event_id IS NOT NULL)", using: :btree - t.index ["repository_updated_event_id"], name: "index_geo_event_log_on_repository_updated_event_id", where: "(repository_updated_event_id IS NOT NULL)", using: :btree - t.index ["reset_checksum_event_id"], name: "index_geo_event_log_on_reset_checksum_event_id", where: "(reset_checksum_event_id IS NOT NULL)", using: :btree - t.index ["upload_deleted_event_id"], name: "index_geo_event_log_on_upload_deleted_event_id", where: "(upload_deleted_event_id IS NOT NULL)", using: :btree + t.bigint "container_repository_updated_event_id" + t.index ["cache_invalidation_event_id"], name: "index_geo_event_log_on_cache_invalidation_event_id", where: "(cache_invalidation_event_id IS NOT NULL)" + t.index ["container_repository_updated_event_id"], name: "index_geo_event_log_on_container_repository_updated_event_id" + t.index ["hashed_storage_attachments_event_id"], name: "index_geo_event_log_on_hashed_storage_attachments_event_id", where: "(hashed_storage_attachments_event_id IS NOT NULL)" + t.index ["hashed_storage_migrated_event_id"], name: "index_geo_event_log_on_hashed_storage_migrated_event_id", where: "(hashed_storage_migrated_event_id IS NOT NULL)" + t.index ["job_artifact_deleted_event_id"], name: "index_geo_event_log_on_job_artifact_deleted_event_id", where: "(job_artifact_deleted_event_id IS NOT NULL)" + t.index ["lfs_object_deleted_event_id"], name: "index_geo_event_log_on_lfs_object_deleted_event_id", where: "(lfs_object_deleted_event_id IS NOT NULL)" + t.index ["repositories_changed_event_id"], name: "index_geo_event_log_on_repositories_changed_event_id", where: "(repositories_changed_event_id IS NOT NULL)" + t.index ["repository_created_event_id"], name: "index_geo_event_log_on_repository_created_event_id", where: "(repository_created_event_id IS NOT NULL)" + t.index ["repository_deleted_event_id"], name: "index_geo_event_log_on_repository_deleted_event_id", where: "(repository_deleted_event_id IS NOT NULL)" + t.index ["repository_renamed_event_id"], name: "index_geo_event_log_on_repository_renamed_event_id", where: "(repository_renamed_event_id IS NOT NULL)" + t.index ["repository_updated_event_id"], name: "index_geo_event_log_on_repository_updated_event_id", where: "(repository_updated_event_id IS NOT NULL)" + t.index ["reset_checksum_event_id"], name: "index_geo_event_log_on_reset_checksum_event_id", where: "(reset_checksum_event_id IS NOT NULL)" + t.index ["upload_deleted_event_id"], name: "index_geo_event_log_on_upload_deleted_event_id", where: "(upload_deleted_event_id IS NOT NULL)" end create_table "geo_hashed_storage_attachments_events", force: :cascade do |t| t.integer "project_id", null: false t.text "old_attachments_path", null: false t.text "new_attachments_path", null: false - t.index ["project_id"], name: "index_geo_hashed_storage_attachments_events_on_project_id", using: :btree + t.index ["project_id"], name: "index_geo_hashed_storage_attachments_events_on_project_id" end create_table "geo_hashed_storage_migrated_events", force: :cascade do |t| @@ -1317,20 +1351,20 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.text "new_wiki_disk_path", null: false t.integer "old_storage_version", limit: 2 t.integer "new_storage_version", limit: 2, null: false - t.index ["project_id"], name: "index_geo_hashed_storage_migrated_events_on_project_id", using: :btree + t.index ["project_id"], name: "index_geo_hashed_storage_migrated_events_on_project_id" end create_table "geo_job_artifact_deleted_events", force: :cascade do |t| t.integer "job_artifact_id", null: false t.string "file_path", null: false - t.index ["job_artifact_id"], name: "index_geo_job_artifact_deleted_events_on_job_artifact_id", using: :btree + t.index ["job_artifact_id"], name: "index_geo_job_artifact_deleted_events_on_job_artifact_id" end create_table "geo_lfs_object_deleted_events", force: :cascade do |t| t.integer "lfs_object_id", null: false t.string "oid", null: false t.string "file_path", null: false - t.index ["lfs_object_id"], name: "index_geo_lfs_object_deleted_events_on_lfs_object_id", using: :btree + t.index ["lfs_object_id"], name: "index_geo_lfs_object_deleted_events_on_lfs_object_id" end create_table "geo_node_namespace_links", id: :serial, force: :cascade do |t| @@ -1338,9 +1372,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "namespace_id", null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.index ["geo_node_id", "namespace_id"], name: "index_geo_node_namespace_links_on_geo_node_id_and_namespace_id", unique: true, using: :btree - t.index ["geo_node_id"], name: "index_geo_node_namespace_links_on_geo_node_id", using: :btree - t.index ["namespace_id"], name: "index_geo_node_namespace_links_on_namespace_id", using: :btree + t.index ["geo_node_id", "namespace_id"], name: "index_geo_node_namespace_links_on_geo_node_id_and_namespace_id", unique: true + t.index ["geo_node_id"], name: "index_geo_node_namespace_links_on_geo_node_id" + t.index ["namespace_id"], name: "index_geo_node_namespace_links_on_namespace_id" end create_table "geo_node_statuses", id: :serial, force: :cascade do |t| @@ -1389,7 +1423,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "repositories_retrying_verification_count" t.integer "wikis_retrying_verification_count" t.integer "projects_count" - t.index ["geo_node_id"], name: "index_geo_node_statuses_on_geo_node_id", unique: true, using: :btree + t.index ["geo_node_id"], name: "index_geo_node_statuses_on_geo_node_id", unique: true end create_table "geo_nodes", id: :serial, force: :cascade do |t| @@ -1409,14 +1443,15 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "minimum_reverification_interval", default: 7, null: false t.string "internal_url" t.string "name", null: false - t.index ["access_key"], name: "index_geo_nodes_on_access_key", using: :btree - t.index ["name"], name: "index_geo_nodes_on_name", unique: true, using: :btree - t.index ["primary"], name: "index_geo_nodes_on_primary", using: :btree + t.integer "container_repositories_max_capacity", default: 10, null: false + t.index ["access_key"], name: "index_geo_nodes_on_access_key" + t.index ["name"], name: "index_geo_nodes_on_name", unique: true + t.index ["primary"], name: "index_geo_nodes_on_primary" end create_table "geo_repositories_changed_events", force: :cascade do |t| t.integer "geo_node_id", null: false - t.index ["geo_node_id"], name: "index_geo_repositories_changed_events_on_geo_node_id", using: :btree + t.index ["geo_node_id"], name: "index_geo_repositories_changed_events_on_geo_node_id" end create_table "geo_repository_created_events", force: :cascade do |t| @@ -1425,7 +1460,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.text "repo_path", null: false t.text "wiki_path" t.text "project_name", null: false - t.index ["project_id"], name: "index_geo_repository_created_events_on_project_id", using: :btree + t.index ["project_id"], name: "index_geo_repository_created_events_on_project_id" end create_table "geo_repository_deleted_events", force: :cascade do |t| @@ -1434,7 +1469,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.text "deleted_path", null: false t.text "deleted_wiki_path" t.text "deleted_project_name", null: false - t.index ["project_id"], name: "index_geo_repository_deleted_events_on_project_id", using: :btree + t.index ["project_id"], name: "index_geo_repository_deleted_events_on_project_id" end create_table "geo_repository_renamed_events", force: :cascade do |t| @@ -1446,7 +1481,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.text "new_wiki_path_with_namespace", null: false t.text "old_path", null: false t.text "new_path", null: false - t.index ["project_id"], name: "index_geo_repository_renamed_events_on_project_id", using: :btree + t.index ["project_id"], name: "index_geo_repository_renamed_events_on_project_id" end create_table "geo_repository_updated_events", force: :cascade do |t| @@ -1457,13 +1492,13 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.boolean "new_branch", default: false, null: false t.boolean "remove_branch", default: false, null: false t.text "ref" - t.index ["project_id"], name: "index_geo_repository_updated_events_on_project_id", using: :btree - t.index ["source"], name: "index_geo_repository_updated_events_on_source", using: :btree + t.index ["project_id"], name: "index_geo_repository_updated_events_on_project_id" + t.index ["source"], name: "index_geo_repository_updated_events_on_source" end create_table "geo_reset_checksum_events", force: :cascade do |t| t.integer "project_id", null: false - t.index ["project_id"], name: "index_geo_reset_checksum_events_on_project_id", using: :btree + t.index ["project_id"], name: "index_geo_reset_checksum_events_on_project_id" end create_table "geo_upload_deleted_events", force: :cascade do |t| @@ -1472,7 +1507,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "model_id", null: false t.string "model_type", null: false t.string "uploader", null: false - t.index ["upload_id"], name: "index_geo_upload_deleted_events_on_upload_id", using: :btree + t.index ["upload_id"], name: "index_geo_upload_deleted_events_on_upload_id" end create_table "gitlab_subscriptions", force: :cascade do |t| @@ -1486,17 +1521,17 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "max_seats_used", default: 0 t.integer "seats", default: 0 t.boolean "trial", default: false - t.index ["hosted_plan_id"], name: "index_gitlab_subscriptions_on_hosted_plan_id", using: :btree - t.index ["namespace_id"], name: "index_gitlab_subscriptions_on_namespace_id", unique: true, using: :btree + t.index ["hosted_plan_id"], name: "index_gitlab_subscriptions_on_hosted_plan_id" + t.index ["namespace_id"], name: "index_gitlab_subscriptions_on_namespace_id", unique: true end create_table "gpg_key_subkeys", id: :serial, force: :cascade do |t| t.integer "gpg_key_id", null: false t.binary "keyid" t.binary "fingerprint" - t.index ["fingerprint"], name: "index_gpg_key_subkeys_on_fingerprint", unique: true, using: :btree - t.index ["gpg_key_id"], name: "index_gpg_key_subkeys_on_gpg_key_id", using: :btree - t.index ["keyid"], name: "index_gpg_key_subkeys_on_keyid", unique: true, using: :btree + t.index ["fingerprint"], name: "index_gpg_key_subkeys_on_fingerprint", unique: true + t.index ["gpg_key_id"], name: "index_gpg_key_subkeys_on_gpg_key_id" + t.index ["keyid"], name: "index_gpg_key_subkeys_on_keyid", unique: true end create_table "gpg_keys", id: :serial, force: :cascade do |t| @@ -1506,9 +1541,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.binary "primary_keyid" t.binary "fingerprint" t.text "key" - t.index ["fingerprint"], name: "index_gpg_keys_on_fingerprint", unique: true, using: :btree - t.index ["primary_keyid"], name: "index_gpg_keys_on_primary_keyid", unique: true, using: :btree - t.index ["user_id"], name: "index_gpg_keys_on_user_id", using: :btree + t.index ["fingerprint"], name: "index_gpg_keys_on_fingerprint", unique: true + t.index ["primary_keyid"], name: "index_gpg_keys_on_primary_keyid", unique: true + t.index ["user_id"], name: "index_gpg_keys_on_user_id" end create_table "gpg_signatures", id: :serial, force: :cascade do |t| @@ -1522,11 +1557,11 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.text "gpg_key_user_email" t.integer "verification_status", limit: 2, default: 0, null: false t.integer "gpg_key_subkey_id" - t.index ["commit_sha"], name: "index_gpg_signatures_on_commit_sha", unique: true, using: :btree - t.index ["gpg_key_id"], name: "index_gpg_signatures_on_gpg_key_id", using: :btree - t.index ["gpg_key_primary_keyid"], name: "index_gpg_signatures_on_gpg_key_primary_keyid", using: :btree - t.index ["gpg_key_subkey_id"], name: "index_gpg_signatures_on_gpg_key_subkey_id", using: :btree - t.index ["project_id"], name: "index_gpg_signatures_on_project_id", using: :btree + t.index ["commit_sha"], name: "index_gpg_signatures_on_commit_sha", unique: true + t.index ["gpg_key_id"], name: "index_gpg_signatures_on_gpg_key_id" + t.index ["gpg_key_primary_keyid"], name: "index_gpg_signatures_on_gpg_key_primary_keyid" + t.index ["gpg_key_subkey_id"], name: "index_gpg_signatures_on_gpg_key_subkey_id" + t.index ["project_id"], name: "index_gpg_signatures_on_project_id" end create_table "group_custom_attributes", id: :serial, force: :cascade do |t| @@ -1535,8 +1570,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "group_id", null: false t.string "key", null: false t.string "value", null: false - t.index ["group_id", "key"], name: "index_group_custom_attributes_on_group_id_and_key", unique: true, using: :btree - t.index ["key", "value"], name: "index_group_custom_attributes_on_key_and_value", using: :btree + t.index ["group_id", "key"], name: "index_group_custom_attributes_on_group_id_and_key", unique: true + t.index ["key", "value"], name: "index_group_custom_attributes_on_key_and_value" end create_table "historical_data", id: :serial, force: :cascade do |t| @@ -1554,8 +1589,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "updated_at" t.integer "saml_provider_id" t.string "secondary_extern_uid" - t.index ["saml_provider_id"], name: "index_identities_on_saml_provider_id", where: "(saml_provider_id IS NOT NULL)", using: :btree - t.index ["user_id"], name: "index_identities_on_user_id", using: :btree + t.index "lower((extern_uid)::text), provider", name: "index_on_identities_lower_extern_uid_and_provider" + t.index ["saml_provider_id"], name: "index_identities_on_saml_provider_id", where: "(saml_provider_id IS NOT NULL)" + t.index ["user_id"], name: "index_identities_on_user_id" end create_table "import_export_uploads", id: :serial, force: :cascade do |t| @@ -1563,8 +1599,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "project_id" t.text "import_file" t.text "export_file" - t.index ["project_id"], name: "index_import_export_uploads_on_project_id", using: :btree - t.index ["updated_at"], name: "index_import_export_uploads_on_updated_at", using: :btree + t.index ["project_id"], name: "index_import_export_uploads_on_project_id" + t.index ["updated_at"], name: "index_import_export_uploads_on_updated_at" end create_table "index_statuses", id: :serial, force: :cascade do |t| @@ -1576,14 +1612,14 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "updated_at", null: false t.binary "last_wiki_commit" t.datetime_with_timezone "wiki_indexed_at" - t.index ["project_id"], name: "index_index_statuses_on_project_id", unique: true, using: :btree + t.index ["project_id"], name: "index_index_statuses_on_project_id", unique: true end create_table "insights", id: :serial, force: :cascade do |t| t.integer "namespace_id", null: false t.integer "project_id", null: false - t.index ["namespace_id"], name: "index_insights_on_namespace_id", using: :btree - t.index ["project_id"], name: "index_insights_on_project_id", using: :btree + t.index ["namespace_id"], name: "index_insights_on_namespace_id" + t.index ["project_id"], name: "index_insights_on_project_id" end create_table "internal_ids", force: :cascade do |t| @@ -1591,23 +1627,23 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "usage", null: false t.integer "last_value", null: false t.integer "namespace_id" - t.index ["namespace_id"], name: "index_internal_ids_on_namespace_id", using: :btree - t.index ["project_id"], name: "index_internal_ids_on_project_id", using: :btree - t.index ["usage", "namespace_id"], name: "index_internal_ids_on_usage_and_namespace_id", unique: true, where: "(namespace_id IS NOT NULL)", using: :btree - t.index ["usage", "project_id"], name: "index_internal_ids_on_usage_and_project_id", unique: true, where: "(project_id IS NOT NULL)", using: :btree + t.index ["namespace_id"], name: "index_internal_ids_on_namespace_id" + t.index ["project_id"], name: "index_internal_ids_on_project_id" + t.index ["usage", "namespace_id"], name: "index_internal_ids_on_usage_and_namespace_id", unique: true, where: "(namespace_id IS NOT NULL)" + t.index ["usage", "project_id"], name: "index_internal_ids_on_usage_and_project_id", unique: true, where: "(project_id IS NOT NULL)" end create_table "ip_restrictions", force: :cascade do |t| t.integer "group_id", null: false t.string "range", null: false - t.index ["group_id"], name: "index_ip_restrictions_on_group_id", using: :btree + t.index ["group_id"], name: "index_ip_restrictions_on_group_id" end create_table "issue_assignees", id: false, force: :cascade do |t| t.integer "user_id", null: false t.integer "issue_id", null: false - t.index ["issue_id", "user_id"], name: "index_issue_assignees_on_issue_id_and_user_id", unique: true, using: :btree - t.index ["user_id"], name: "index_issue_assignees_on_user_id", using: :btree + t.index ["issue_id", "user_id"], name: "index_issue_assignees_on_issue_id_and_user_id", unique: true + t.index ["user_id"], name: "index_issue_assignees_on_user_id" end create_table "issue_links", id: :serial, force: :cascade do |t| @@ -1615,9 +1651,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "target_id", null: false t.datetime "created_at" t.datetime "updated_at" - t.index ["source_id", "target_id"], name: "index_issue_links_on_source_id_and_target_id", unique: true, using: :btree - t.index ["source_id"], name: "index_issue_links_on_source_id", using: :btree - t.index ["target_id"], name: "index_issue_links_on_target_id", using: :btree + t.index ["source_id", "target_id"], name: "index_issue_links_on_source_id_and_target_id", unique: true + t.index ["source_id"], name: "index_issue_links_on_source_id" + t.index ["target_id"], name: "index_issue_links_on_target_id" end create_table "issue_metrics", id: :serial, force: :cascade do |t| @@ -1627,7 +1663,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "first_added_to_board_at" t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.index ["issue_id"], name: "index_issue_metrics", using: :btree + t.index ["issue_id"], name: "index_issue_metrics" end create_table "issue_tracker_data", force: :cascade do |t| @@ -1640,7 +1676,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "encrypted_issues_url_iv" t.string "encrypted_new_issue_url" t.string "encrypted_new_issue_url_iv" - t.index ["service_id"], name: "index_issue_tracker_data_on_service_id", using: :btree + t.index ["service_id"], name: "index_issue_tracker_data_on_service_id" end create_table "issues", id: :serial, force: :cascade do |t| @@ -1671,21 +1707,22 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "state_id", limit: 2 t.string "service_desk_reply_to" t.integer "weight" - t.index ["author_id"], name: "index_issues_on_author_id", using: :btree - t.index ["closed_by_id"], name: "index_issues_on_closed_by_id", using: :btree - t.index ["confidential"], name: "index_issues_on_confidential", using: :btree - t.index ["description"], name: "index_issues_on_description_trigram", using: :gin, opclasses: {"description"=>"gin_trgm_ops"} - t.index ["milestone_id"], name: "index_issues_on_milestone_id", using: :btree - t.index ["moved_to_id"], name: "index_issues_on_moved_to_id", where: "(moved_to_id IS NOT NULL)", using: :btree - t.index ["project_id", "created_at", "id", "state"], name: "index_issues_on_project_id_and_created_at_and_id_and_state", using: :btree - t.index ["project_id", "due_date", "id", "state"], name: "idx_issues_on_project_id_and_due_date_and_id_and_state_partial", where: "(due_date IS NOT NULL)", using: :btree - t.index ["project_id", "iid"], name: "index_issues_on_project_id_and_iid", unique: true, using: :btree - t.index ["project_id", "updated_at", "id", "state"], name: "index_issues_on_project_id_and_updated_at_and_id_and_state", using: :btree - t.index ["relative_position"], name: "index_issues_on_relative_position", using: :btree - t.index ["state"], name: "index_issues_on_state", using: :btree - t.index ["title"], name: "index_issues_on_title_trigram", using: :gin, opclasses: {"title"=>"gin_trgm_ops"} - t.index ["updated_at"], name: "index_issues_on_updated_at", using: :btree - t.index ["updated_by_id"], name: "index_issues_on_updated_by_id", where: "(updated_by_id IS NOT NULL)", using: :btree + t.index ["author_id"], name: "index_issues_on_author_id" + t.index ["closed_by_id"], name: "index_issues_on_closed_by_id" + t.index ["confidential"], name: "index_issues_on_confidential" + t.index ["description"], name: "index_issues_on_description_trigram", opclass: :gin_trgm_ops, using: :gin + t.index ["milestone_id"], name: "index_issues_on_milestone_id" + t.index ["moved_to_id"], name: "index_issues_on_moved_to_id", where: "(moved_to_id IS NOT NULL)" + t.index ["project_id", "created_at", "id", "state"], name: "index_issues_on_project_id_and_created_at_and_id_and_state" + t.index ["project_id", "due_date", "id", "state"], name: "idx_issues_on_project_id_and_due_date_and_id_and_state_partial", where: "(due_date IS NOT NULL)" + t.index ["project_id", "iid"], name: "index_issues_on_project_id_and_iid", unique: true + t.index ["project_id", "relative_position", "state", "id"], name: "index_issues_on_project_id_and_rel_position_and_state_and_id", order: { id: :desc } + t.index ["project_id", "updated_at", "id", "state"], name: "index_issues_on_project_id_and_updated_at_and_id_and_state" + t.index ["relative_position"], name: "index_issues_on_relative_position" + t.index ["state"], name: "index_issues_on_state" + t.index ["title"], name: "index_issues_on_title_trigram", opclass: :gin_trgm_ops, using: :gin + t.index ["updated_at"], name: "index_issues_on_updated_at" + t.index ["updated_by_id"], name: "index_issues_on_updated_by_id", where: "(updated_by_id IS NOT NULL)" end create_table "jira_connect_installations", force: :cascade do |t| @@ -1693,7 +1730,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "encrypted_shared_secret" t.string "encrypted_shared_secret_iv" t.string "base_url" - t.index ["client_key"], name: "index_jira_connect_installations_on_client_key", unique: true, using: :btree + t.index ["client_key"], name: "index_jira_connect_installations_on_client_key", unique: true end create_table "jira_connect_subscriptions", force: :cascade do |t| @@ -1701,9 +1738,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.bigint "jira_connect_installation_id", null: false t.integer "namespace_id", null: false t.datetime_with_timezone "updated_at", null: false - t.index ["jira_connect_installation_id", "namespace_id"], name: "idx_jira_connect_subscriptions_on_installation_id_namespace_id", unique: true, using: :btree - t.index ["jira_connect_installation_id"], name: "idx_jira_connect_subscriptions_on_installation_id", using: :btree - t.index ["namespace_id"], name: "index_jira_connect_subscriptions_on_namespace_id", using: :btree + t.index ["jira_connect_installation_id", "namespace_id"], name: "idx_jira_connect_subscriptions_on_installation_id_namespace_id", unique: true + t.index ["jira_connect_installation_id"], name: "idx_jira_connect_subscriptions_on_installation_id" + t.index ["namespace_id"], name: "index_jira_connect_subscriptions_on_namespace_id" end create_table "jira_tracker_data", force: :cascade do |t| @@ -1719,7 +1756,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "encrypted_password" t.string "encrypted_password_iv" t.string "jira_issue_transition_id" - t.index ["service_id"], name: "index_jira_tracker_data_on_service_id", using: :btree + t.index ["service_id"], name: "index_jira_tracker_data_on_service_id" end create_table "keys", id: :serial, force: :cascade do |t| @@ -1732,8 +1769,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "fingerprint" t.boolean "public", default: false, null: false t.datetime "last_used_at" - t.index ["fingerprint"], name: "index_keys_on_fingerprint", unique: true, using: :btree - t.index ["user_id"], name: "index_keys_on_user_id", using: :btree + t.index ["fingerprint"], name: "index_keys_on_fingerprint", unique: true + t.index ["user_id"], name: "index_keys_on_user_id" end create_table "label_links", id: :serial, force: :cascade do |t| @@ -1742,8 +1779,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "target_type" t.datetime "created_at" t.datetime "updated_at" - t.index ["label_id"], name: "index_label_links_on_label_id", using: :btree - t.index ["target_id", "target_type"], name: "index_label_links_on_target_id_and_target_type", using: :btree + t.index ["label_id"], name: "index_label_links_on_label_id" + t.index ["target_id", "target_type"], name: "index_label_links_on_target_id_and_target_type" end create_table "label_priorities", id: :serial, force: :cascade do |t| @@ -1752,9 +1789,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "priority", null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.index ["label_id"], name: "index_label_priorities_on_label_id", using: :btree - t.index ["priority"], name: "index_label_priorities_on_priority", using: :btree - t.index ["project_id", "label_id"], name: "index_label_priorities_on_project_id_and_label_id", unique: true, using: :btree + t.index ["label_id"], name: "index_label_priorities_on_label_id" + t.index ["priority"], name: "index_label_priorities_on_priority" + t.index ["project_id", "label_id"], name: "index_label_priorities_on_project_id_and_label_id", unique: true end create_table "labels", id: :serial, force: :cascade do |t| @@ -1769,11 +1806,11 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "type" t.integer "group_id" t.integer "cached_markdown_version" - t.index ["group_id", "project_id", "title"], name: "index_labels_on_group_id_and_project_id_and_title", unique: true, using: :btree - t.index ["project_id"], name: "index_labels_on_project_id", using: :btree - t.index ["template"], name: "index_labels_on_template", where: "template", using: :btree - t.index ["title"], name: "index_labels_on_title", using: :btree - t.index ["type", "project_id"], name: "index_labels_on_type_and_project_id", using: :btree + t.index ["group_id", "project_id", "title"], name: "index_labels_on_group_id_and_project_id_and_title", unique: true + t.index ["project_id"], name: "index_labels_on_project_id" + t.index ["template"], name: "index_labels_on_template", where: "template" + t.index ["title"], name: "index_labels_on_title" + t.index ["type", "project_id"], name: "index_labels_on_type_and_project_id" end create_table "ldap_group_links", id: :serial, force: :cascade do |t| @@ -1791,8 +1828,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "user_id", null: false t.datetime "created_at", null: false t.string "path", limit: 511 - t.index ["project_id", "path"], name: "index_lfs_file_locks_on_project_id_and_path", unique: true, using: :btree - t.index ["user_id"], name: "index_lfs_file_locks_on_user_id", using: :btree + t.index ["project_id", "path"], name: "index_lfs_file_locks_on_project_id_and_path", unique: true + t.index ["user_id"], name: "index_lfs_file_locks_on_user_id" end create_table "lfs_objects", id: :serial, force: :cascade do |t| @@ -1802,8 +1839,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "updated_at" t.string "file" t.integer "file_store" - t.index ["file_store"], name: "index_lfs_objects_on_file_store", using: :btree - t.index ["oid"], name: "index_lfs_objects_on_oid", unique: true, using: :btree + t.index ["file_store"], name: "index_lfs_objects_on_file_store" + t.index ["oid"], name: "index_lfs_objects_on_oid", unique: true end create_table "lfs_objects_projects", id: :serial, force: :cascade do |t| @@ -1812,8 +1849,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "created_at" t.datetime "updated_at" t.integer "repository_type", limit: 2 - t.index ["lfs_object_id"], name: "index_lfs_objects_projects_on_lfs_object_id", using: :btree - t.index ["project_id"], name: "index_lfs_objects_projects_on_project_id", using: :btree + t.index ["lfs_object_id"], name: "index_lfs_objects_projects_on_lfs_object_id" + t.index ["project_id"], name: "index_lfs_objects_projects_on_project_id" end create_table "licenses", id: :serial, force: :cascade do |t| @@ -1831,11 +1868,11 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "updated_at", null: false t.integer "milestone_id" t.integer "user_id" - t.index ["board_id", "label_id"], name: "index_lists_on_board_id_and_label_id", unique: true, using: :btree - t.index ["label_id"], name: "index_lists_on_label_id", using: :btree - t.index ["list_type"], name: "index_lists_on_list_type", using: :btree - t.index ["milestone_id"], name: "index_lists_on_milestone_id", using: :btree - t.index ["user_id"], name: "index_lists_on_user_id", using: :btree + t.index ["board_id", "label_id"], name: "index_lists_on_board_id_and_label_id", unique: true + t.index ["label_id"], name: "index_lists_on_label_id" + t.index ["list_type"], name: "index_lists_on_list_type" + t.index ["milestone_id"], name: "index_lists_on_milestone_id" + t.index ["user_id"], name: "index_lists_on_user_id" end create_table "members", id: :serial, force: :cascade do |t| @@ -1855,20 +1892,20 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.date "expires_at" t.boolean "ldap", default: false, null: false t.boolean "override", default: false, null: false - t.index ["access_level"], name: "index_members_on_access_level", using: :btree - t.index ["invite_email"], name: "index_members_on_invite_email", using: :btree - t.index ["invite_token"], name: "index_members_on_invite_token", unique: true, using: :btree - t.index ["requested_at"], name: "index_members_on_requested_at", using: :btree - t.index ["source_id", "source_type"], name: "index_members_on_source_id_and_source_type", using: :btree - t.index ["user_id"], name: "index_members_on_user_id", using: :btree + t.index ["access_level"], name: "index_members_on_access_level" + t.index ["invite_email"], name: "index_members_on_invite_email" + t.index ["invite_token"], name: "index_members_on_invite_token", unique: true + t.index ["requested_at"], name: "index_members_on_requested_at" + t.index ["source_id", "source_type"], name: "index_members_on_source_id_and_source_type" + t.index ["user_id"], name: "index_members_on_user_id" end create_table "merge_request_assignees", force: :cascade do |t| t.integer "user_id", null: false t.integer "merge_request_id", null: false - t.index ["merge_request_id", "user_id"], name: "index_merge_request_assignees_on_merge_request_id_and_user_id", unique: true, using: :btree - t.index ["merge_request_id"], name: "index_merge_request_assignees_on_merge_request_id", using: :btree - t.index ["user_id"], name: "index_merge_request_assignees_on_user_id", using: :btree + t.index ["merge_request_id", "user_id"], name: "index_merge_request_assignees_on_merge_request_id_and_user_id", unique: true + t.index ["merge_request_id"], name: "index_merge_request_assignees_on_merge_request_id" + t.index ["user_id"], name: "index_merge_request_assignees_on_user_id" end create_table "merge_request_blocks", force: :cascade do |t| @@ -1876,8 +1913,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "blocked_merge_request_id", null: false t.datetime_with_timezone "created_at", null: false t.datetime_with_timezone "updated_at", null: false - t.index ["blocked_merge_request_id"], name: "index_merge_request_blocks_on_blocked_merge_request_id", using: :btree - t.index ["blocking_merge_request_id", "blocked_merge_request_id"], name: "index_mr_blocks_on_blocking_and_blocked_mr_ids", unique: true, using: :btree + t.index ["blocked_merge_request_id"], name: "index_merge_request_blocks_on_blocked_merge_request_id" + t.index ["blocking_merge_request_id", "blocked_merge_request_id"], name: "index_mr_blocks_on_blocking_and_blocked_mr_ids", unique: true end create_table "merge_request_diff_commits", id: false, force: :cascade do |t| @@ -1891,8 +1928,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.text "committer_name" t.text "committer_email" t.text "message" - t.index ["merge_request_diff_id", "relative_order"], name: "index_merge_request_diff_commits_on_mr_diff_id_and_order", unique: true, using: :btree - t.index ["sha"], name: "index_merge_request_diff_commits_on_sha", using: :btree + t.index ["merge_request_diff_id", "relative_order"], name: "index_merge_request_diff_commits_on_mr_diff_id_and_order", unique: true + t.index ["sha"], name: "index_merge_request_diff_commits_on_sha" end create_table "merge_request_diff_files", id: false, force: :cascade do |t| @@ -1910,7 +1947,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.boolean "binary" t.integer "external_diff_offset" t.integer "external_diff_size" - t.index ["merge_request_diff_id", "relative_order"], name: "index_merge_request_diff_files_on_mr_diff_id_and_order", unique: true, using: :btree + t.index ["merge_request_diff_id", "relative_order"], name: "index_merge_request_diff_files_on_mr_diff_id_and_order", unique: true end create_table "merge_request_diffs", id: :serial, force: :cascade do |t| @@ -1926,8 +1963,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "external_diff" t.integer "external_diff_store" t.boolean "stored_externally" - t.index ["merge_request_id", "id"], name: "index_merge_request_diffs_on_merge_request_id_and_id", using: :btree - t.index ["merge_request_id", "id"], name: "index_merge_request_diffs_on_merge_request_id_and_id_partial", where: "((NOT stored_externally) OR (stored_externally IS NULL))", using: :btree + t.index ["merge_request_id", "id"], name: "index_merge_request_diffs_on_merge_request_id_and_id" + t.index ["merge_request_id", "id"], name: "index_merge_request_diffs_on_merge_request_id_and_id_partial", where: "((NOT stored_externally) OR (stored_externally IS NULL))" end create_table "merge_request_metrics", id: :serial, force: :cascade do |t| @@ -1942,13 +1979,13 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "merged_by_id" t.integer "latest_closed_by_id" t.datetime_with_timezone "latest_closed_at" - t.index ["first_deployed_to_production_at"], name: "index_merge_request_metrics_on_first_deployed_to_production_at", using: :btree - t.index ["latest_closed_at"], name: "index_merge_request_metrics_on_latest_closed_at", where: "(latest_closed_at IS NOT NULL)", using: :btree - t.index ["latest_closed_by_id"], name: "index_merge_request_metrics_on_latest_closed_by_id", using: :btree - t.index ["merge_request_id", "merged_at"], name: "index_merge_request_metrics_on_merge_request_id_and_merged_at", where: "(merged_at IS NOT NULL)", using: :btree - t.index ["merge_request_id"], name: "index_merge_request_metrics", using: :btree - t.index ["merged_by_id"], name: "index_merge_request_metrics_on_merged_by_id", using: :btree - t.index ["pipeline_id"], name: "index_merge_request_metrics_on_pipeline_id", using: :btree + t.index ["first_deployed_to_production_at"], name: "index_merge_request_metrics_on_first_deployed_to_production_at" + t.index ["latest_closed_at"], name: "index_merge_request_metrics_on_latest_closed_at", where: "(latest_closed_at IS NOT NULL)" + t.index ["latest_closed_by_id"], name: "index_merge_request_metrics_on_latest_closed_by_id" + t.index ["merge_request_id", "merged_at"], name: "index_merge_request_metrics_on_merge_request_id_and_merged_at", where: "(merged_at IS NOT NULL)" + t.index ["merge_request_id"], name: "index_merge_request_metrics" + t.index ["merged_by_id"], name: "index_merge_request_metrics_on_merged_by_id" + t.index ["pipeline_id"], name: "index_merge_request_metrics_on_pipeline_id" end create_table "merge_requests", id: :serial, force: :cascade do |t| @@ -1990,26 +2027,26 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "state_id", limit: 2 t.integer "approvals_before_merge" t.string "rebase_jid" - t.index ["assignee_id"], name: "index_merge_requests_on_assignee_id", using: :btree - t.index ["author_id"], name: "index_merge_requests_on_author_id", using: :btree - t.index ["created_at"], name: "index_merge_requests_on_created_at", using: :btree - t.index ["description"], name: "index_merge_requests_on_description_trigram", using: :gin, opclasses: {"description"=>"gin_trgm_ops"} - t.index ["head_pipeline_id"], name: "index_merge_requests_on_head_pipeline_id", using: :btree - t.index ["id", "merge_jid"], name: "index_merge_requests_on_id_and_merge_jid", where: "((merge_jid IS NOT NULL) AND ((state)::text = 'locked'::text))", using: :btree - t.index ["latest_merge_request_diff_id"], name: "index_merge_requests_on_latest_merge_request_diff_id", using: :btree - t.index ["merge_user_id"], name: "index_merge_requests_on_merge_user_id", where: "(merge_user_id IS NOT NULL)", using: :btree - t.index ["milestone_id"], name: "index_merge_requests_on_milestone_id", using: :btree - t.index ["source_branch"], name: "index_merge_requests_on_source_branch", using: :btree - t.index ["source_project_id", "source_branch"], name: "index_merge_requests_on_source_project_and_branch_state_opened", where: "((state)::text = 'opened'::text)", using: :btree - t.index ["source_project_id", "source_branch"], name: "index_merge_requests_on_source_project_id_and_source_branch", using: :btree - t.index ["state", "merge_status"], name: "index_merge_requests_on_state_and_merge_status", where: "(((state)::text = 'opened'::text) AND ((merge_status)::text = 'can_be_merged'::text))", using: :btree - t.index ["target_branch"], name: "index_merge_requests_on_target_branch", using: :btree - t.index ["target_project_id", "iid"], name: "index_merge_requests_on_target_project_id_and_iid", unique: true, using: :btree - t.index ["target_project_id", "iid"], name: "index_merge_requests_on_target_project_id_and_iid_opened", where: "((state)::text = 'opened'::text)", using: :btree - t.index ["target_project_id", "merge_commit_sha", "id"], name: "index_merge_requests_on_tp_id_and_merge_commit_sha_and_id", using: :btree - t.index ["title"], name: "index_merge_requests_on_title", using: :btree - t.index ["title"], name: "index_merge_requests_on_title_trigram", using: :gin, opclasses: {"title"=>"gin_trgm_ops"} - t.index ["updated_by_id"], name: "index_merge_requests_on_updated_by_id", where: "(updated_by_id IS NOT NULL)", using: :btree + t.index ["assignee_id"], name: "index_merge_requests_on_assignee_id" + t.index ["author_id"], name: "index_merge_requests_on_author_id" + t.index ["created_at"], name: "index_merge_requests_on_created_at" + t.index ["description"], name: "index_merge_requests_on_description_trigram", opclass: :gin_trgm_ops, using: :gin + t.index ["head_pipeline_id"], name: "index_merge_requests_on_head_pipeline_id" + t.index ["id", "merge_jid"], name: "index_merge_requests_on_id_and_merge_jid", where: "((merge_jid IS NOT NULL) AND ((state)::text = 'locked'::text))" + t.index ["latest_merge_request_diff_id"], name: "index_merge_requests_on_latest_merge_request_diff_id" + t.index ["merge_user_id"], name: "index_merge_requests_on_merge_user_id", where: "(merge_user_id IS NOT NULL)" + t.index ["milestone_id"], name: "index_merge_requests_on_milestone_id" + t.index ["source_branch"], name: "index_merge_requests_on_source_branch" + t.index ["source_project_id", "source_branch"], name: "index_merge_requests_on_source_project_and_branch_state_opened", where: "((state)::text = 'opened'::text)" + t.index ["source_project_id", "source_branch"], name: "index_merge_requests_on_source_project_id_and_source_branch" + t.index ["state", "merge_status"], name: "index_merge_requests_on_state_and_merge_status", where: "(((state)::text = 'opened'::text) AND ((merge_status)::text = 'can_be_merged'::text))" + t.index ["target_branch"], name: "index_merge_requests_on_target_branch" + t.index ["target_project_id", "iid"], name: "index_merge_requests_on_target_project_id_and_iid", unique: true + t.index ["target_project_id", "iid"], name: "index_merge_requests_on_target_project_id_and_iid_opened", where: "((state)::text = 'opened'::text)" + t.index ["target_project_id", "merge_commit_sha", "id"], name: "index_merge_requests_on_tp_id_and_merge_commit_sha_and_id" + t.index ["title"], name: "index_merge_requests_on_title" + t.index ["title"], name: "index_merge_requests_on_title_trigram", opclass: :gin_trgm_ops, using: :gin + t.index ["updated_by_id"], name: "index_merge_requests_on_updated_by_id", where: "(updated_by_id IS NOT NULL)" end create_table "merge_requests_closing_issues", id: :serial, force: :cascade do |t| @@ -2017,8 +2054,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "issue_id", null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.index ["issue_id"], name: "index_merge_requests_closing_issues_on_issue_id", using: :btree - t.index ["merge_request_id"], name: "index_merge_requests_closing_issues_on_merge_request_id", using: :btree + t.index ["issue_id"], name: "index_merge_requests_closing_issues_on_issue_id" + t.index ["merge_request_id"], name: "index_merge_requests_closing_issues_on_merge_request_id" end create_table "merge_trains", force: :cascade do |t| @@ -2029,10 +2066,10 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime_with_timezone "updated_at", null: false t.integer "target_project_id", null: false t.text "target_branch", null: false - t.index ["merge_request_id"], name: "index_merge_trains_on_merge_request_id", unique: true, using: :btree - t.index ["pipeline_id"], name: "index_merge_trains_on_pipeline_id", using: :btree - t.index ["target_project_id"], name: "index_merge_trains_on_target_project_id", using: :btree - t.index ["user_id"], name: "index_merge_trains_on_user_id", using: :btree + t.index ["merge_request_id"], name: "index_merge_trains_on_merge_request_id", unique: true + t.index ["pipeline_id"], name: "index_merge_trains_on_pipeline_id" + t.index ["target_project_id"], name: "index_merge_trains_on_target_project_id" + t.index ["user_id"], name: "index_merge_trains_on_user_id" end create_table "milestones", id: :serial, force: :cascade do |t| @@ -2049,16 +2086,16 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.date "start_date" t.integer "cached_markdown_version" t.integer "group_id" - t.index ["description"], name: "index_milestones_on_description_trigram", using: :gin, opclasses: {"description"=>"gin_trgm_ops"} - t.index ["due_date"], name: "index_milestones_on_due_date", using: :btree - t.index ["group_id"], name: "index_milestones_on_group_id", using: :btree - t.index ["project_id", "iid"], name: "index_milestones_on_project_id_and_iid", unique: true, using: :btree - t.index ["title"], name: "index_milestones_on_title", using: :btree - t.index ["title"], name: "index_milestones_on_title_trigram", using: :gin, opclasses: {"title"=>"gin_trgm_ops"} + t.index ["description"], name: "index_milestones_on_description_trigram", opclass: :gin_trgm_ops, using: :gin + t.index ["due_date"], name: "index_milestones_on_due_date" + t.index ["group_id"], name: "index_milestones_on_group_id" + t.index ["project_id", "iid"], name: "index_milestones_on_project_id_and_iid", unique: true + t.index ["title"], name: "index_milestones_on_title" + t.index ["title"], name: "index_milestones_on_title_trigram", opclass: :gin_trgm_ops, using: :gin end create_table "namespace_aggregation_schedules", primary_key: "namespace_id", id: :integer, default: nil, force: :cascade do |t| - t.index ["namespace_id"], name: "index_namespace_aggregation_schedules_on_namespace_id", unique: true, using: :btree + t.index ["namespace_id"], name: "index_namespace_aggregation_schedules_on_namespace_id", unique: true end create_table "namespace_root_storage_statistics", primary_key: "namespace_id", id: :integer, default: nil, force: :cascade do |t| @@ -2069,14 +2106,14 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.bigint "build_artifacts_size", default: 0, null: false t.bigint "storage_size", default: 0, null: false t.bigint "packages_size", default: 0, null: false - t.index ["namespace_id"], name: "index_namespace_root_storage_statistics_on_namespace_id", unique: true, using: :btree + t.index ["namespace_id"], name: "index_namespace_root_storage_statistics_on_namespace_id", unique: true end create_table "namespace_statistics", id: :serial, force: :cascade do |t| t.integer "namespace_id", null: false t.integer "shared_runners_seconds", default: 0, null: false t.datetime "shared_runners_seconds_last_reset" - t.index ["namespace_id"], name: "index_namespace_statistics_on_namespace_id", unique: true, using: :btree + t.index ["namespace_id"], name: "index_namespace_statistics_on_namespace_id", unique: true end create_table "namespaces", id: :serial, force: :cascade do |t| @@ -2117,24 +2154,25 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "ldap_sync_status", default: "ready", null: false t.boolean "membership_lock", default: false t.integer "last_ci_minutes_usage_notification_level" - t.index ["created_at"], name: "index_namespaces_on_created_at", using: :btree - t.index ["custom_project_templates_group_id", "type"], name: "index_namespaces_on_custom_project_templates_group_id_and_type", where: "(custom_project_templates_group_id IS NOT NULL)", using: :btree - t.index ["file_template_project_id"], name: "index_namespaces_on_file_template_project_id", using: :btree - t.index ["ldap_sync_last_successful_update_at"], name: "index_namespaces_on_ldap_sync_last_successful_update_at", using: :btree - t.index ["ldap_sync_last_update_at"], name: "index_namespaces_on_ldap_sync_last_update_at", using: :btree - t.index ["name", "parent_id"], name: "index_namespaces_on_name_and_parent_id", unique: true, using: :btree - t.index ["name"], name: "index_namespaces_on_name_trigram", using: :gin, opclasses: {"name"=>"gin_trgm_ops"} - t.index ["owner_id"], name: "index_namespaces_on_owner_id", using: :btree - t.index ["parent_id", "id"], name: "index_namespaces_on_parent_id_and_id", unique: true, using: :btree - t.index ["path"], name: "index_namespaces_on_path", using: :btree - t.index ["path"], name: "index_namespaces_on_path_trigram", using: :gin, opclasses: {"path"=>"gin_trgm_ops"} - t.index ["plan_id"], name: "index_namespaces_on_plan_id", using: :btree - t.index ["require_two_factor_authentication"], name: "index_namespaces_on_require_two_factor_authentication", using: :btree - t.index ["runners_token"], name: "index_namespaces_on_runners_token", unique: true, using: :btree - t.index ["runners_token_encrypted"], name: "index_namespaces_on_runners_token_encrypted", unique: true, using: :btree - t.index ["shared_runners_minutes_limit", "extra_shared_runners_minutes_limit"], name: "index_namespaces_on_shared_and_extra_runners_minutes_limit", using: :btree - t.index ["trial_ends_on"], name: "index_namespaces_on_trial_ends_on", where: "(trial_ends_on IS NOT NULL)", using: :btree - t.index ["type"], name: "index_namespaces_on_type", using: :btree + t.integer "subgroup_creation_level", default: 1 + t.index ["created_at"], name: "index_namespaces_on_created_at" + t.index ["custom_project_templates_group_id", "type"], name: "index_namespaces_on_custom_project_templates_group_id_and_type", where: "(custom_project_templates_group_id IS NOT NULL)" + t.index ["file_template_project_id"], name: "index_namespaces_on_file_template_project_id" + t.index ["ldap_sync_last_successful_update_at"], name: "index_namespaces_on_ldap_sync_last_successful_update_at" + t.index ["ldap_sync_last_update_at"], name: "index_namespaces_on_ldap_sync_last_update_at" + t.index ["name", "parent_id"], name: "index_namespaces_on_name_and_parent_id", unique: true + t.index ["name"], name: "index_namespaces_on_name_trigram", opclass: :gin_trgm_ops, using: :gin + t.index ["owner_id"], name: "index_namespaces_on_owner_id" + t.index ["parent_id", "id"], name: "index_namespaces_on_parent_id_and_id", unique: true + t.index ["path"], name: "index_namespaces_on_path" + t.index ["path"], name: "index_namespaces_on_path_trigram", opclass: :gin_trgm_ops, using: :gin + t.index ["plan_id"], name: "index_namespaces_on_plan_id" + t.index ["require_two_factor_authentication"], name: "index_namespaces_on_require_two_factor_authentication" + t.index ["runners_token"], name: "index_namespaces_on_runners_token", unique: true + t.index ["runners_token_encrypted"], name: "index_namespaces_on_runners_token_encrypted", unique: true + t.index ["shared_runners_minutes_limit", "extra_shared_runners_minutes_limit"], name: "index_namespaces_on_shared_and_extra_runners_minutes_limit" + t.index ["trial_ends_on"], name: "index_namespaces_on_trial_ends_on", where: "(trial_ends_on IS NOT NULL)" + t.index ["type"], name: "index_namespaces_on_type" end create_table "note_diff_files", id: :serial, force: :cascade do |t| @@ -2147,7 +2185,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "b_mode", null: false t.text "new_path", null: false t.text "old_path", null: false - t.index ["diff_note_id"], name: "index_note_diff_files_on_diff_note_id", unique: true, using: :btree + t.index ["diff_note_id"], name: "index_note_diff_files_on_diff_note_id", unique: true end create_table "notes", id: :serial, force: :cascade do |t| @@ -2175,16 +2213,16 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.text "change_position" t.boolean "resolved_by_push" t.bigint "review_id" - t.index ["author_id"], name: "index_notes_on_author_id", using: :btree - t.index ["commit_id"], name: "index_notes_on_commit_id", using: :btree - t.index ["created_at"], name: "index_notes_on_created_at", using: :btree - t.index ["discussion_id"], name: "index_notes_on_discussion_id", using: :btree - t.index ["line_code"], name: "index_notes_on_line_code", using: :btree - t.index ["note"], name: "index_notes_on_note_trigram", using: :gin, opclasses: {"note"=>"gin_trgm_ops"} - t.index ["noteable_id", "noteable_type"], name: "index_notes_on_noteable_id_and_noteable_type", using: :btree - t.index ["noteable_type"], name: "index_notes_on_noteable_type", using: :btree - t.index ["project_id", "noteable_type"], name: "index_notes_on_project_id_and_noteable_type", using: :btree - t.index ["review_id"], name: "index_notes_on_review_id", using: :btree + t.index ["author_id"], name: "index_notes_on_author_id" + t.index ["commit_id"], name: "index_notes_on_commit_id" + t.index ["created_at"], name: "index_notes_on_created_at" + t.index ["discussion_id"], name: "index_notes_on_discussion_id" + t.index ["line_code"], name: "index_notes_on_line_code" + t.index ["note"], name: "index_notes_on_note_trigram", opclass: :gin_trgm_ops, using: :gin + t.index ["noteable_id", "noteable_type"], name: "index_notes_on_noteable_id_and_noteable_type" + t.index ["noteable_type"], name: "index_notes_on_noteable_type" + t.index ["project_id", "noteable_type"], name: "index_notes_on_project_id_and_noteable_type" + t.index ["review_id"], name: "index_notes_on_review_id" end create_table "notification_settings", id: :serial, force: :cascade do |t| @@ -2210,9 +2248,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.boolean "issue_due" t.string "notification_email" t.boolean "new_epic" - t.index ["source_id", "source_type"], name: "index_notification_settings_on_source_id_and_source_type", using: :btree - t.index ["user_id", "source_id", "source_type"], name: "index_notifications_on_user_id_and_source_id_and_source_type", unique: true, using: :btree - t.index ["user_id"], name: "index_notification_settings_on_user_id", using: :btree + t.index ["source_id", "source_type"], name: "index_notification_settings_on_source_id_and_source_type" + t.index ["user_id", "source_id", "source_type"], name: "index_notifications_on_user_id_and_source_id_and_source_type", unique: true + t.index ["user_id"], name: "index_notification_settings_on_user_id" end create_table "oauth_access_grants", id: :serial, force: :cascade do |t| @@ -2224,7 +2262,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "created_at", null: false t.datetime "revoked_at" t.string "scopes" - t.index ["token"], name: "index_oauth_access_grants_on_token", unique: true, using: :btree + t.index ["token"], name: "index_oauth_access_grants_on_token", unique: true end create_table "oauth_access_tokens", id: :serial, force: :cascade do |t| @@ -2236,9 +2274,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "revoked_at" t.datetime "created_at", null: false t.string "scopes" - t.index ["refresh_token"], name: "index_oauth_access_tokens_on_refresh_token", unique: true, using: :btree - t.index ["resource_owner_id"], name: "index_oauth_access_tokens_on_resource_owner_id", using: :btree - t.index ["token"], name: "index_oauth_access_tokens_on_token", unique: true, using: :btree + t.index ["refresh_token"], name: "index_oauth_access_tokens_on_refresh_token", unique: true + t.index ["resource_owner_id"], name: "index_oauth_access_tokens_on_resource_owner_id" + t.index ["token"], name: "index_oauth_access_tokens_on_token", unique: true end create_table "oauth_applications", id: :serial, force: :cascade do |t| @@ -2252,14 +2290,14 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "owner_id" t.string "owner_type" t.boolean "trusted", default: false, null: false - t.index ["owner_id", "owner_type"], name: "index_oauth_applications_on_owner_id_and_owner_type", using: :btree - t.index ["uid"], name: "index_oauth_applications_on_uid", unique: true, using: :btree + t.index ["owner_id", "owner_type"], name: "index_oauth_applications_on_owner_id_and_owner_type" + t.index ["uid"], name: "index_oauth_applications_on_uid", unique: true end create_table "oauth_openid_requests", id: :serial, force: :cascade do |t| t.integer "access_grant_id", null: false t.string "nonce", null: false - t.index ["access_grant_id"], name: "index_oauth_openid_requests_on_access_grant_id", using: :btree + t.index ["access_grant_id"], name: "index_oauth_openid_requests_on_access_grant_id" end create_table "operations_feature_flag_scopes", force: :cascade do |t| @@ -2269,7 +2307,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.boolean "active", null: false t.string "environment_scope", default: "*", null: false t.jsonb "strategies", default: [{"name"=>"default", "parameters"=>{}}], null: false - t.index ["feature_flag_id", "environment_scope"], name: "index_feature_flag_scopes_on_flag_id_and_environment_scope", unique: true, using: :btree + t.index ["feature_flag_id", "environment_scope"], name: "index_feature_flag_scopes_on_flag_id_and_environment_scope", unique: true end create_table "operations_feature_flags", force: :cascade do |t| @@ -2279,15 +2317,15 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime_with_timezone "updated_at", null: false t.string "name", null: false t.text "description" - t.index ["project_id", "name"], name: "index_operations_feature_flags_on_project_id_and_name", unique: true, using: :btree + t.index ["project_id", "name"], name: "index_operations_feature_flags_on_project_id_and_name", unique: true end create_table "operations_feature_flags_clients", force: :cascade do |t| t.integer "project_id", null: false t.string "token" t.string "token_encrypted" - t.index ["project_id", "token"], name: "index_operations_feature_flags_clients_on_project_id_and_token", unique: true, using: :btree - t.index ["project_id", "token_encrypted"], name: "index_feature_flags_clients_on_project_id_and_token_encrypted", unique: true, using: :btree + t.index ["project_id", "token"], name: "index_operations_feature_flags_clients_on_project_id_and_token", unique: true + t.index ["project_id", "token_encrypted"], name: "index_feature_flags_clients_on_project_id_and_token_encrypted", unique: true end create_table "packages_maven_metadata", force: :cascade do |t| @@ -2298,7 +2336,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "app_name", null: false t.string "app_version" t.string "path", limit: 512, null: false - t.index ["package_id", "path"], name: "index_packages_maven_metadata_on_package_id_and_path", using: :btree + t.index ["package_id", "path"], name: "index_packages_maven_metadata_on_package_id_and_path" end create_table "packages_package_files", force: :cascade do |t| @@ -2312,7 +2350,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.binary "file_sha1" t.string "file_name", null: false t.text "file", null: false - t.index ["package_id", "file_name"], name: "index_packages_package_files_on_package_id_and_file_name", using: :btree + t.index ["package_id", "file_name"], name: "index_packages_package_files_on_package_id_and_file_name" end create_table "packages_packages", force: :cascade do |t| @@ -2322,7 +2360,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "name", null: false t.string "version" t.integer "package_type", limit: 2, null: false - t.index ["project_id"], name: "index_packages_packages_on_project_id", using: :btree + t.index ["project_id"], name: "index_packages_packages_on_project_id" end create_table "pages_domain_acme_orders", force: :cascade do |t| @@ -2335,8 +2373,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.text "challenge_file_content", null: false t.text "encrypted_private_key", null: false t.text "encrypted_private_key_iv", null: false - t.index ["challenge_token"], name: "index_pages_domain_acme_orders_on_challenge_token", using: :btree - t.index ["pages_domain_id"], name: "index_pages_domain_acme_orders_on_pages_domain_id", using: :btree + t.index ["challenge_token"], name: "index_pages_domain_acme_orders_on_challenge_token" + t.index ["pages_domain_id"], name: "index_pages_domain_acme_orders_on_pages_domain_id" end create_table "pages_domains", id: :serial, force: :cascade do |t| @@ -2354,13 +2392,13 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime_with_timezone "certificate_valid_not_before" t.datetime_with_timezone "certificate_valid_not_after" t.integer "certificate_source", limit: 2, default: 0, null: false - t.index ["certificate_source", "certificate_valid_not_after"], name: "index_pages_domains_need_auto_ssl_renewal", where: "(auto_ssl_enabled = true)", using: :btree - t.index ["domain"], name: "index_pages_domains_on_domain", unique: true, using: :btree - t.index ["project_id", "enabled_until"], name: "index_pages_domains_on_project_id_and_enabled_until", using: :btree - t.index ["project_id"], name: "index_pages_domains_on_project_id", using: :btree - t.index ["remove_at"], name: "index_pages_domains_on_remove_at", using: :btree - t.index ["verified_at", "enabled_until"], name: "index_pages_domains_on_verified_at_and_enabled_until", using: :btree - t.index ["verified_at"], name: "index_pages_domains_on_verified_at", using: :btree + t.index ["certificate_source", "certificate_valid_not_after"], name: "index_pages_domains_need_auto_ssl_renewal", where: "(auto_ssl_enabled = true)" + t.index ["domain"], name: "index_pages_domains_on_domain", unique: true + t.index ["project_id", "enabled_until"], name: "index_pages_domains_on_project_id_and_enabled_until" + t.index ["project_id"], name: "index_pages_domains_on_project_id" + t.index ["remove_at"], name: "index_pages_domains_on_remove_at" + t.index ["verified_at", "enabled_until"], name: "index_pages_domains_on_verified_at_and_enabled_until" + t.index ["verified_at"], name: "index_pages_domains_on_verified_at" end create_table "path_locks", id: :serial, force: :cascade do |t| @@ -2369,9 +2407,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "user_id" t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.index ["path"], name: "index_path_locks_on_path", using: :btree - t.index ["project_id"], name: "index_path_locks_on_project_id", using: :btree - t.index ["user_id"], name: "index_path_locks_on_user_id", using: :btree + t.index ["path"], name: "index_path_locks_on_path" + t.index ["project_id"], name: "index_path_locks_on_project_id" + t.index ["user_id"], name: "index_path_locks_on_user_id" end create_table "personal_access_tokens", id: :serial, force: :cascade do |t| @@ -2384,8 +2422,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "scopes", default: "--- []\n", null: false t.boolean "impersonation", default: false, null: false t.string "token_digest" - t.index ["token_digest"], name: "index_personal_access_tokens_on_token_digest", unique: true, using: :btree - t.index ["user_id"], name: "index_personal_access_tokens_on_user_id", using: :btree + t.index ["token_digest"], name: "index_personal_access_tokens_on_token_digest", unique: true + t.index ["user_id"], name: "index_personal_access_tokens_on_user_id" end create_table "plans", id: :serial, force: :cascade do |t| @@ -2395,7 +2433,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "title" t.integer "active_pipelines_limit" t.integer "pipeline_size_limit" - t.index ["name"], name: "index_plans_on_name", using: :btree + t.index ["name"], name: "index_plans_on_name" end create_table "pool_repositories", force: :cascade do |t| @@ -2403,16 +2441,16 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "disk_path" t.string "state" t.integer "source_project_id" - t.index ["disk_path"], name: "index_pool_repositories_on_disk_path", unique: true, using: :btree - t.index ["shard_id"], name: "index_pool_repositories_on_shard_id", using: :btree - t.index ["source_project_id"], name: "index_pool_repositories_on_source_project_id", unique: true, using: :btree + t.index ["disk_path"], name: "index_pool_repositories_on_disk_path", unique: true + t.index ["shard_id"], name: "index_pool_repositories_on_shard_id" + t.index ["source_project_id"], name: "index_pool_repositories_on_source_project_id", unique: true end create_table "programming_languages", id: :serial, force: :cascade do |t| t.string "name", null: false t.string "color", null: false t.datetime_with_timezone "created_at", null: false - t.index ["name"], name: "index_programming_languages_on_name", unique: true, using: :btree + t.index ["name"], name: "index_programming_languages_on_name", unique: true end create_table "project_alerting_settings", primary_key: "project_id", id: :integer, default: nil, force: :cascade do |t| @@ -2425,16 +2463,16 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "name", null: false t.datetime_with_timezone "created_at", null: false t.datetime_with_timezone "updated_at", null: false - t.index ["name"], name: "index_project_aliases_on_name", unique: true, using: :btree - t.index ["project_id"], name: "index_project_aliases_on_project_id", using: :btree + t.index ["name"], name: "index_project_aliases_on_name", unique: true + t.index ["project_id"], name: "index_project_aliases_on_project_id" end create_table "project_authorizations", id: false, force: :cascade do |t| t.integer "user_id", null: false t.integer "project_id", null: false t.integer "access_level", null: false - t.index ["project_id"], name: "index_project_authorizations_on_project_id", using: :btree - t.index ["user_id", "project_id", "access_level"], name: "index_project_authorizations_on_user_id_project_id_access_level", unique: true, using: :btree + t.index ["project_id"], name: "index_project_authorizations_on_project_id" + t.index ["user_id", "project_id", "access_level"], name: "index_project_authorizations_on_user_id_project_id_access_level", unique: true end create_table "project_auto_devops", id: :serial, force: :cascade do |t| @@ -2443,7 +2481,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime_with_timezone "updated_at", null: false t.boolean "enabled" t.integer "deploy_strategy", default: 0, null: false - t.index ["project_id"], name: "index_project_auto_devops_on_project_id", unique: true, using: :btree + t.index ["project_id"], name: "index_project_auto_devops_on_project_id", unique: true end create_table "project_ci_cd_settings", id: :serial, force: :cascade do |t| @@ -2452,7 +2490,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.boolean "merge_pipelines_enabled" t.boolean "merge_trains_enabled", default: false, null: false t.integer "default_git_depth" - t.index ["project_id"], name: "index_project_ci_cd_settings_on_project_id", unique: true, using: :btree + t.index ["project_id"], name: "index_project_ci_cd_settings_on_project_id", unique: true end create_table "project_custom_attributes", id: :serial, force: :cascade do |t| @@ -2461,23 +2499,23 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "project_id", null: false t.string "key", null: false t.string "value", null: false - t.index ["key", "value"], name: "index_project_custom_attributes_on_key_and_value", using: :btree - t.index ["project_id", "key"], name: "index_project_custom_attributes_on_project_id_and_key", unique: true, using: :btree + t.index ["key", "value"], name: "index_project_custom_attributes_on_key_and_value" + t.index ["project_id", "key"], name: "index_project_custom_attributes_on_project_id_and_key", unique: true end create_table "project_daily_statistics", force: :cascade do |t| t.integer "project_id", null: false t.integer "fetch_count", null: false t.date "date" - t.index ["project_id", "date"], name: "index_project_daily_statistics_on_project_id_and_date", unique: true, order: { date: :desc }, using: :btree + t.index ["project_id", "date"], name: "index_project_daily_statistics_on_project_id_and_date", unique: true, order: { date: :desc } end create_table "project_deploy_tokens", id: :serial, force: :cascade do |t| t.integer "project_id", null: false t.integer "deploy_token_id", null: false t.datetime_with_timezone "created_at", null: false - t.index ["deploy_token_id"], name: "index_project_deploy_tokens_on_deploy_token_id", using: :btree - t.index ["project_id", "deploy_token_id"], name: "index_project_deploy_tokens_on_project_id_and_deploy_token_id", unique: true, using: :btree + t.index ["deploy_token_id"], name: "index_project_deploy_tokens_on_deploy_token_id" + t.index ["project_id", "deploy_token_id"], name: "index_project_deploy_tokens_on_project_id_and_deploy_token_id", unique: true end create_table "project_error_tracking_settings", primary_key: "project_id", id: :integer, default: nil, force: :cascade do |t| @@ -2492,9 +2530,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do create_table "project_feature_usages", primary_key: "project_id", id: :integer, default: nil, force: :cascade do |t| t.datetime "jira_dvcs_cloud_last_sync_at" t.datetime "jira_dvcs_server_last_sync_at" - t.index ["jira_dvcs_cloud_last_sync_at", "project_id"], name: "idx_proj_feat_usg_on_jira_dvcs_cloud_last_sync_at_and_proj_id", where: "(jira_dvcs_cloud_last_sync_at IS NOT NULL)", using: :btree - t.index ["jira_dvcs_server_last_sync_at", "project_id"], name: "idx_proj_feat_usg_on_jira_dvcs_server_last_sync_at_and_proj_id", where: "(jira_dvcs_server_last_sync_at IS NOT NULL)", using: :btree - t.index ["project_id"], name: "index_project_feature_usages_on_project_id", using: :btree + t.index ["jira_dvcs_cloud_last_sync_at", "project_id"], name: "idx_proj_feat_usg_on_jira_dvcs_cloud_last_sync_at_and_proj_id", where: "(jira_dvcs_cloud_last_sync_at IS NOT NULL)" + t.index ["jira_dvcs_server_last_sync_at", "project_id"], name: "idx_proj_feat_usg_on_jira_dvcs_server_last_sync_at_and_proj_id", where: "(jira_dvcs_server_last_sync_at IS NOT NULL)" + t.index ["project_id"], name: "index_project_feature_usages_on_project_id" end create_table "project_features", id: :serial, force: :cascade do |t| @@ -2507,8 +2545,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "created_at" t.datetime "updated_at" t.integer "repository_access_level", default: 20, null: false - t.integer "pages_access_level", default: 20, null: false - t.index ["project_id"], name: "index_project_features_on_project_id", unique: true, using: :btree + t.integer "pages_access_level", null: false + t.index ["project_id"], name: "index_project_features_on_project_id", unique: true end create_table "project_group_links", id: :serial, force: :cascade do |t| @@ -2518,8 +2556,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "updated_at" t.integer "group_access", default: 30, null: false t.date "expires_at" - t.index ["group_id"], name: "index_project_group_links_on_group_id", using: :btree - t.index ["project_id"], name: "index_project_group_links_on_project_id", using: :btree + t.index ["group_id"], name: "index_project_group_links_on_group_id" + t.index ["project_id"], name: "index_project_group_links_on_project_id" end create_table "project_import_data", id: :serial, force: :cascade do |t| @@ -2528,7 +2566,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.text "encrypted_credentials" t.string "encrypted_credentials_iv" t.string "encrypted_credentials_salt" - t.index ["project_id"], name: "index_project_import_data_on_project_id", using: :btree + t.index ["project_id"], name: "index_project_import_data_on_project_id" end create_table "project_incident_management_settings", primary_key: "project_id", id: :serial, force: :cascade do |t| @@ -2552,21 +2590,21 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "last_update_started_at" t.datetime "next_execution_timestamp" t.integer "retry_count", default: 0, null: false - t.index ["jid"], name: "index_project_mirror_data_on_jid", using: :btree - t.index ["last_successful_update_at"], name: "index_project_mirror_data_on_last_successful_update_at", using: :btree - t.index ["last_update_at", "retry_count"], name: "index_project_mirror_data_on_last_update_at_and_retry_count", using: :btree - t.index ["next_execution_timestamp", "retry_count"], name: "index_mirror_data_on_next_execution_and_retry_count", using: :btree - t.index ["project_id"], name: "index_project_mirror_data_on_project_id", unique: true, using: :btree - t.index ["status"], name: "index_project_mirror_data_on_status", using: :btree + t.index ["jid"], name: "index_project_mirror_data_on_jid" + t.index ["last_successful_update_at"], name: "index_project_mirror_data_on_last_successful_update_at" + t.index ["last_update_at", "retry_count"], name: "index_project_mirror_data_on_last_update_at_and_retry_count" + t.index ["next_execution_timestamp", "retry_count"], name: "index_mirror_data_on_next_execution_and_retry_count" + t.index ["project_id"], name: "index_project_mirror_data_on_project_id", unique: true + t.index ["status"], name: "index_project_mirror_data_on_status" end create_table "project_repositories", force: :cascade do |t| t.integer "shard_id", null: false t.string "disk_path", null: false t.integer "project_id", null: false - t.index ["disk_path"], name: "index_project_repositories_on_disk_path", unique: true, using: :btree - t.index ["project_id"], name: "index_project_repositories_on_project_id", unique: true, using: :btree - t.index ["shard_id"], name: "index_project_repositories_on_shard_id", using: :btree + t.index ["disk_path"], name: "index_project_repositories_on_disk_path", unique: true + t.index ["project_id"], name: "index_project_repositories_on_project_id", unique: true + t.index ["shard_id"], name: "index_project_repositories_on_shard_id" end create_table "project_repository_states", id: :serial, force: :cascade do |t| @@ -2581,12 +2619,12 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "wiki_retry_count" t.datetime_with_timezone "last_repository_verification_ran_at" t.datetime_with_timezone "last_wiki_verification_ran_at" - t.index ["last_repository_verification_failure"], name: "idx_repository_states_on_repository_failure_partial", where: "(last_repository_verification_failure IS NOT NULL)", using: :btree - t.index ["last_wiki_verification_failure"], name: "idx_repository_states_on_wiki_failure_partial", where: "(last_wiki_verification_failure IS NOT NULL)", using: :btree - t.index ["project_id", "last_repository_verification_ran_at"], name: "idx_repository_states_on_last_repository_verification_ran_at", where: "((repository_verification_checksum IS NOT NULL) AND (last_repository_verification_failure IS NULL))", using: :btree - t.index ["project_id", "last_wiki_verification_ran_at"], name: "idx_repository_states_on_last_wiki_verification_ran_at", where: "((wiki_verification_checksum IS NOT NULL) AND (last_wiki_verification_failure IS NULL))", using: :btree - t.index ["project_id"], name: "idx_repository_states_outdated_checksums", where: "(((repository_verification_checksum IS NULL) AND (last_repository_verification_failure IS NULL)) OR ((wiki_verification_checksum IS NULL) AND (last_wiki_verification_failure IS NULL)))", using: :btree - t.index ["project_id"], name: "index_project_repository_states_on_project_id", unique: true, using: :btree + t.index ["last_repository_verification_failure"], name: "idx_repository_states_on_repository_failure_partial", where: "(last_repository_verification_failure IS NOT NULL)" + t.index ["last_wiki_verification_failure"], name: "idx_repository_states_on_wiki_failure_partial", where: "(last_wiki_verification_failure IS NOT NULL)" + t.index ["project_id", "last_repository_verification_ran_at"], name: "idx_repository_states_on_last_repository_verification_ran_at", where: "((repository_verification_checksum IS NOT NULL) AND (last_repository_verification_failure IS NULL))" + t.index ["project_id", "last_wiki_verification_ran_at"], name: "idx_repository_states_on_last_wiki_verification_ran_at", where: "((wiki_verification_checksum IS NOT NULL) AND (last_wiki_verification_failure IS NULL))" + t.index ["project_id"], name: "idx_repository_states_outdated_checksums", where: "(((repository_verification_checksum IS NULL) AND (last_repository_verification_failure IS NULL)) OR ((wiki_verification_checksum IS NULL) AND (last_wiki_verification_failure IS NULL)))" + t.index ["project_id"], name: "index_project_repository_states_on_project_id", unique: true end create_table "project_statistics", id: :serial, force: :cascade do |t| @@ -2601,8 +2639,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.bigint "wiki_size" t.bigint "shared_runners_seconds", default: 0, null: false t.datetime "shared_runners_seconds_last_reset" - t.index ["namespace_id"], name: "index_project_statistics_on_namespace_id", using: :btree - t.index ["project_id"], name: "index_project_statistics_on_project_id", unique: true, using: :btree + t.index ["namespace_id"], name: "index_project_statistics_on_namespace_id" + t.index ["project_id"], name: "index_project_statistics_on_project_id", unique: true end create_table "project_tracing_settings", force: :cascade do |t| @@ -2610,7 +2648,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime_with_timezone "updated_at", null: false t.integer "project_id", null: false t.string "external_url", null: false - t.index ["project_id"], name: "index_project_tracing_settings_on_project_id", unique: true, using: :btree + t.index ["project_id"], name: "index_project_tracing_settings_on_project_id", unique: true end create_table "projects", id: :serial, force: :cascade do |t| @@ -2687,31 +2725,31 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.boolean "reset_approvals_on_push", default: true t.boolean "service_desk_enabled", default: true t.integer "approvals_before_merge", default: 0, null: false - t.index ["archived", "pending_delete", "merge_requests_require_code_owner_approval"], name: "projects_requiring_code_owner_approval", where: "((pending_delete = false) AND (archived = false) AND (merge_requests_require_code_owner_approval = true))", using: :btree - t.index ["created_at"], name: "index_projects_on_created_at", using: :btree - t.index ["creator_id"], name: "index_projects_on_creator_id", using: :btree - t.index ["description"], name: "index_projects_on_description_trigram", using: :gin, opclasses: {"description"=>"gin_trgm_ops"} - t.index ["id", "repository_storage", "last_repository_updated_at"], name: "idx_projects_on_repository_storage_last_repository_updated_at", using: :btree - t.index ["id"], name: "index_projects_on_id_partial_for_visibility", unique: true, where: "(visibility_level = ANY (ARRAY[10, 20]))", using: :btree - t.index ["id"], name: "index_projects_on_mirror_and_mirror_trigger_builds_both_true", where: "((mirror IS TRUE) AND (mirror_trigger_builds IS TRUE))", using: :btree - t.index ["last_activity_at"], name: "index_projects_on_last_activity_at", using: :btree - t.index ["last_repository_check_at"], name: "index_projects_on_last_repository_check_at", where: "(last_repository_check_at IS NOT NULL)", using: :btree - t.index ["last_repository_check_failed"], name: "index_projects_on_last_repository_check_failed", using: :btree - t.index ["last_repository_updated_at"], name: "index_projects_on_last_repository_updated_at", using: :btree - t.index ["mirror_last_successful_update_at"], name: "index_projects_on_mirror_last_successful_update_at", using: :btree - t.index ["mirror_user_id"], name: "index_projects_on_mirror_user_id", using: :btree - t.index ["name"], name: "index_projects_on_name_trigram", using: :gin, opclasses: {"name"=>"gin_trgm_ops"} - t.index ["namespace_id"], name: "index_projects_on_namespace_id", using: :btree - t.index ["path"], name: "index_projects_on_path", using: :btree - t.index ["path"], name: "index_projects_on_path_trigram", using: :gin, opclasses: {"path"=>"gin_trgm_ops"} - t.index ["pending_delete"], name: "index_projects_on_pending_delete", using: :btree - t.index ["pool_repository_id"], name: "index_projects_on_pool_repository_id", where: "(pool_repository_id IS NOT NULL)", using: :btree - t.index ["repository_storage", "created_at"], name: "idx_project_repository_check_partial", where: "(last_repository_check_at IS NULL)", using: :btree - t.index ["repository_storage"], name: "index_projects_on_repository_storage", using: :btree - t.index ["runners_token"], name: "index_projects_on_runners_token", using: :btree - t.index ["runners_token_encrypted"], name: "index_projects_on_runners_token_encrypted", using: :btree - t.index ["star_count"], name: "index_projects_on_star_count", using: :btree - t.index ["visibility_level"], name: "index_projects_on_visibility_level", using: :btree + t.index ["archived", "pending_delete", "merge_requests_require_code_owner_approval"], name: "projects_requiring_code_owner_approval", where: "((pending_delete = false) AND (archived = false) AND (merge_requests_require_code_owner_approval = true))" + t.index ["created_at"], name: "index_projects_on_created_at" + t.index ["creator_id"], name: "index_projects_on_creator_id" + t.index ["description"], name: "index_projects_on_description_trigram", opclass: :gin_trgm_ops, using: :gin + t.index ["id", "repository_storage", "last_repository_updated_at"], name: "idx_projects_on_repository_storage_last_repository_updated_at" + t.index ["id"], name: "index_projects_on_id_partial_for_visibility", unique: true, where: "(visibility_level = ANY (ARRAY[10, 20]))" + t.index ["id"], name: "index_projects_on_mirror_and_mirror_trigger_builds_both_true", where: "((mirror IS TRUE) AND (mirror_trigger_builds IS TRUE))" + t.index ["last_activity_at"], name: "index_projects_on_last_activity_at" + t.index ["last_repository_check_at"], name: "index_projects_on_last_repository_check_at", where: "(last_repository_check_at IS NOT NULL)" + t.index ["last_repository_check_failed"], name: "index_projects_on_last_repository_check_failed" + t.index ["last_repository_updated_at"], name: "index_projects_on_last_repository_updated_at" + t.index ["mirror_last_successful_update_at"], name: "index_projects_on_mirror_last_successful_update_at" + t.index ["mirror_user_id"], name: "index_projects_on_mirror_user_id" + t.index ["name"], name: "index_projects_on_name_trigram", opclass: :gin_trgm_ops, using: :gin + t.index ["namespace_id"], name: "index_projects_on_namespace_id" + t.index ["path"], name: "index_projects_on_path" + t.index ["path"], name: "index_projects_on_path_trigram", opclass: :gin_trgm_ops, using: :gin + t.index ["pending_delete"], name: "index_projects_on_pending_delete" + t.index ["pool_repository_id"], name: "index_projects_on_pool_repository_id", where: "(pool_repository_id IS NOT NULL)" + t.index ["repository_storage", "created_at"], name: "idx_project_repository_check_partial", where: "(last_repository_check_at IS NULL)" + t.index ["repository_storage"], name: "index_projects_on_repository_storage" + t.index ["runners_token"], name: "index_projects_on_runners_token" + t.index ["runners_token_encrypted"], name: "index_projects_on_runners_token_encrypted" + t.index ["star_count"], name: "index_projects_on_star_count" + t.index ["visibility_level"], name: "index_projects_on_visibility_level" end create_table "prometheus_alert_events", force: :cascade do |t| @@ -2721,8 +2759,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime_with_timezone "ended_at" t.integer "status", limit: 2 t.string "payload_key" - t.index ["project_id", "status"], name: "index_prometheus_alert_events_on_project_id_and_status", using: :btree - t.index ["prometheus_alert_id", "payload_key"], name: "index_prometheus_alert_event_scoped_payload_key", unique: true, using: :btree + t.index ["project_id", "status"], name: "index_prometheus_alert_events_on_project_id_and_status" + t.index ["prometheus_alert_id", "payload_key"], name: "index_prometheus_alert_event_scoped_payload_key", unique: true end create_table "prometheus_alerts", id: :serial, force: :cascade do |t| @@ -2733,9 +2771,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "environment_id", null: false t.integer "project_id", null: false t.integer "prometheus_metric_id", null: false - t.index ["environment_id"], name: "index_prometheus_alerts_on_environment_id", using: :btree - t.index ["project_id", "prometheus_metric_id", "environment_id"], name: "index_prometheus_alerts_metric_environment", unique: true, using: :btree - t.index ["prometheus_metric_id"], name: "index_prometheus_alerts_on_prometheus_metric_id", using: :btree + t.index ["environment_id"], name: "index_prometheus_alerts_on_environment_id" + t.index ["project_id", "prometheus_metric_id", "environment_id"], name: "index_prometheus_alerts_metric_environment", unique: true + t.index ["prometheus_metric_id"], name: "index_prometheus_alerts_on_prometheus_metric_id" end create_table "prometheus_metrics", id: :serial, force: :cascade do |t| @@ -2750,10 +2788,10 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime_with_timezone "updated_at", null: false t.boolean "common", default: false, null: false t.string "identifier" - t.index ["common"], name: "index_prometheus_metrics_on_common", using: :btree - t.index ["group"], name: "index_prometheus_metrics_on_group", using: :btree - t.index ["identifier"], name: "index_prometheus_metrics_on_identifier", unique: true, using: :btree - t.index ["project_id"], name: "index_prometheus_metrics_on_project_id", using: :btree + t.index ["common"], name: "index_prometheus_metrics_on_common" + t.index ["group"], name: "index_prometheus_metrics_on_group" + t.index ["identifier"], name: "index_prometheus_metrics_on_identifier", unique: true + t.index ["project_id"], name: "index_prometheus_metrics_on_project_id" end create_table "protected_branch_merge_access_levels", id: :serial, force: :cascade do |t| @@ -2763,9 +2801,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "updated_at", null: false t.integer "group_id" t.integer "user_id" - t.index ["group_id"], name: "index_protected_branch_merge_access_levels_on_group_id", using: :btree - t.index ["protected_branch_id"], name: "index_protected_branch_merge_access", using: :btree - t.index ["user_id"], name: "index_protected_branch_merge_access_levels_on_user_id", using: :btree + t.index ["group_id"], name: "index_protected_branch_merge_access_levels_on_group_id" + t.index ["protected_branch_id"], name: "index_protected_branch_merge_access" + t.index ["user_id"], name: "index_protected_branch_merge_access_levels_on_user_id" end create_table "protected_branch_push_access_levels", id: :serial, force: :cascade do |t| @@ -2775,9 +2813,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "updated_at", null: false t.integer "group_id" t.integer "user_id" - t.index ["group_id"], name: "index_protected_branch_push_access_levels_on_group_id", using: :btree - t.index ["protected_branch_id"], name: "index_protected_branch_push_access", using: :btree - t.index ["user_id"], name: "index_protected_branch_push_access_levels_on_user_id", using: :btree + t.index ["group_id"], name: "index_protected_branch_push_access_levels_on_group_id" + t.index ["protected_branch_id"], name: "index_protected_branch_push_access" + t.index ["user_id"], name: "index_protected_branch_push_access_levels_on_user_id" end create_table "protected_branch_unprotect_access_levels", id: :serial, force: :cascade do |t| @@ -2785,9 +2823,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "access_level", default: 40 t.integer "user_id" t.integer "group_id" - t.index ["group_id"], name: "index_protected_branch_unprotect_access_levels_on_group_id", using: :btree - t.index ["protected_branch_id"], name: "index_protected_branch_unprotect_access", using: :btree - t.index ["user_id"], name: "index_protected_branch_unprotect_access_levels_on_user_id", using: :btree + t.index ["group_id"], name: "index_protected_branch_unprotect_access_levels_on_group_id" + t.index ["protected_branch_id"], name: "index_protected_branch_unprotect_access" + t.index ["user_id"], name: "index_protected_branch_unprotect_access_levels_on_user_id" end create_table "protected_branches", id: :serial, force: :cascade do |t| @@ -2795,7 +2833,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "name", null: false t.datetime "created_at" t.datetime "updated_at" - t.index ["project_id"], name: "index_protected_branches_on_project_id", using: :btree + t.index ["project_id"], name: "index_protected_branches_on_project_id" end create_table "protected_environment_deploy_access_levels", id: :serial, force: :cascade do |t| @@ -2805,9 +2843,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "protected_environment_id", null: false t.integer "user_id" t.integer "group_id" - t.index ["group_id"], name: "index_protected_environment_deploy_access_levels_on_group_id", using: :btree - t.index ["protected_environment_id"], name: "index_protected_environment_deploy_access", using: :btree - t.index ["user_id"], name: "index_protected_environment_deploy_access_levels_on_user_id", using: :btree + t.index ["group_id"], name: "index_protected_environment_deploy_access_levels_on_group_id" + t.index ["protected_environment_id"], name: "index_protected_environment_deploy_access" + t.index ["user_id"], name: "index_protected_environment_deploy_access_levels_on_user_id" end create_table "protected_environments", id: :serial, force: :cascade do |t| @@ -2815,8 +2853,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime_with_timezone "created_at", null: false t.datetime_with_timezone "updated_at", null: false t.string "name", null: false - t.index ["project_id", "name"], name: "index_protected_environments_on_project_id_and_name", unique: true, using: :btree - t.index ["project_id"], name: "index_protected_environments_on_project_id", using: :btree + t.index ["project_id", "name"], name: "index_protected_environments_on_project_id_and_name", unique: true + t.index ["project_id"], name: "index_protected_environments_on_project_id" end create_table "protected_tag_create_access_levels", id: :serial, force: :cascade do |t| @@ -2826,9 +2864,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "group_id" t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.index ["group_id"], name: "index_protected_tag_create_access_levels_on_group_id", using: :btree - t.index ["protected_tag_id"], name: "index_protected_tag_create_access", using: :btree - t.index ["user_id"], name: "index_protected_tag_create_access_levels_on_user_id", using: :btree + t.index ["group_id"], name: "index_protected_tag_create_access_levels_on_group_id" + t.index ["protected_tag_id"], name: "index_protected_tag_create_access" + t.index ["user_id"], name: "index_protected_tag_create_access_levels_on_user_id" end create_table "protected_tags", id: :serial, force: :cascade do |t| @@ -2836,8 +2874,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "name", null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.index ["project_id", "name"], name: "index_protected_tags_on_project_id_and_name", unique: true, using: :btree - t.index ["project_id"], name: "index_protected_tags_on_project_id", using: :btree + t.index ["project_id", "name"], name: "index_protected_tags_on_project_id_and_name", unique: true + t.index ["project_id"], name: "index_protected_tags_on_project_id" end create_table "push_event_payloads", id: false, force: :cascade do |t| @@ -2849,7 +2887,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.binary "commit_to" t.text "ref" t.string "commit_title", limit: 70 - t.index ["event_id"], name: "index_push_event_payloads_on_event_id", unique: true, using: :btree + t.index ["event_id"], name: "index_push_event_payloads_on_event_id", unique: true end create_table "push_rules", id: :serial, force: :cascade do |t| @@ -2871,8 +2909,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.boolean "commit_committer_check" t.boolean "regexp_uses_re2", default: true t.string "commit_message_negative_regex" - t.index ["is_sample"], name: "index_push_rules_on_is_sample", where: "is_sample", using: :btree - t.index ["project_id"], name: "index_push_rules_on_project_id", using: :btree + t.index ["is_sample"], name: "index_push_rules_on_is_sample", where: "is_sample" + t.index ["project_id"], name: "index_push_rules_on_project_id" end create_table "redirect_routes", id: :serial, force: :cascade do |t| @@ -2881,8 +2919,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "path", null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.index ["path"], name: "index_redirect_routes_on_path", unique: true, using: :btree - t.index ["source_type", "source_id"], name: "index_redirect_routes_on_source_type_and_source_id", using: :btree + t.index ["path"], name: "index_redirect_routes_on_path", unique: true + t.index ["source_type", "source_id"], name: "index_redirect_routes_on_source_type_and_source_id" end create_table "release_links", force: :cascade do |t| @@ -2891,8 +2929,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "name", null: false t.datetime_with_timezone "created_at", null: false t.datetime_with_timezone "updated_at", null: false - t.index ["release_id", "name"], name: "index_release_links_on_release_id_and_name", unique: true, using: :btree - t.index ["release_id", "url"], name: "index_release_links_on_release_id_and_url", unique: true, using: :btree + t.index ["release_id", "name"], name: "index_release_links_on_release_id_and_name", unique: true + t.index ["release_id", "url"], name: "index_release_links_on_release_id_and_url", unique: true end create_table "releases", id: :serial, force: :cascade do |t| @@ -2907,9 +2945,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "name" t.string "sha" t.datetime_with_timezone "released_at", null: false - t.index ["author_id"], name: "index_releases_on_author_id", using: :btree - t.index ["project_id", "tag"], name: "index_releases_on_project_id_and_tag", using: :btree - t.index ["project_id"], name: "index_releases_on_project_id", using: :btree + t.index ["author_id"], name: "index_releases_on_author_id" + t.index ["project_id", "tag"], name: "index_releases_on_project_id_and_tag" + t.index ["project_id"], name: "index_releases_on_project_id" end create_table "remote_mirrors", id: :serial, force: :cascade do |t| @@ -2929,15 +2967,15 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "created_at", null: false t.datetime "updated_at", null: false t.boolean "error_notification_sent" - t.index ["last_successful_update_at"], name: "index_remote_mirrors_on_last_successful_update_at", using: :btree - t.index ["project_id"], name: "index_remote_mirrors_on_project_id", using: :btree + t.index ["last_successful_update_at"], name: "index_remote_mirrors_on_last_successful_update_at" + t.index ["project_id"], name: "index_remote_mirrors_on_project_id" end create_table "repository_languages", id: false, force: :cascade do |t| t.integer "project_id", null: false t.integer "programming_language_id", null: false t.float "share", null: false - t.index ["project_id", "programming_language_id"], name: "index_repository_languages_on_project_and_languages_id", unique: true, using: :btree + t.index ["project_id", "programming_language_id"], name: "index_repository_languages_on_project_and_languages_id", unique: true end create_table "resource_label_events", force: :cascade do |t| @@ -2951,11 +2989,11 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.text "reference" t.text "reference_html" t.integer "epic_id" - t.index ["epic_id"], name: "index_resource_label_events_on_epic_id", using: :btree - t.index ["issue_id"], name: "index_resource_label_events_on_issue_id", using: :btree - t.index ["label_id"], name: "index_resource_label_events_on_label_id", using: :btree - t.index ["merge_request_id"], name: "index_resource_label_events_on_merge_request_id", using: :btree - t.index ["user_id"], name: "index_resource_label_events_on_user_id", using: :btree + t.index ["epic_id"], name: "index_resource_label_events_on_epic_id" + t.index ["issue_id"], name: "index_resource_label_events_on_issue_id" + t.index ["label_id"], name: "index_resource_label_events_on_label_id" + t.index ["merge_request_id"], name: "index_resource_label_events_on_merge_request_id" + t.index ["user_id"], name: "index_resource_label_events_on_user_id" end create_table "reviews", force: :cascade do |t| @@ -2963,9 +3001,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "merge_request_id", null: false t.integer "project_id", null: false t.datetime_with_timezone "created_at", null: false - t.index ["author_id"], name: "index_reviews_on_author_id", using: :btree - t.index ["merge_request_id"], name: "index_reviews_on_merge_request_id", using: :btree - t.index ["project_id"], name: "index_reviews_on_project_id", using: :btree + t.index ["author_id"], name: "index_reviews_on_author_id" + t.index ["merge_request_id"], name: "index_reviews_on_merge_request_id" + t.index ["project_id"], name: "index_reviews_on_project_id" end create_table "routes", id: :serial, force: :cascade do |t| @@ -2975,9 +3013,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "created_at" t.datetime "updated_at" t.string "name" - t.index ["path"], name: "index_routes_on_path", unique: true, using: :btree - t.index ["path"], name: "index_routes_on_path_text_pattern_ops", using: :btree, opclasses: {"path"=>"varchar_pattern_ops"} - t.index ["source_type", "source_id"], name: "index_routes_on_source_type_and_source_id", unique: true, using: :btree + t.index ["path"], name: "index_routes_on_path", unique: true + t.index ["path"], name: "index_routes_on_path_text_pattern_ops", opclass: :varchar_pattern_ops + t.index ["source_type", "source_id"], name: "index_routes_on_source_type_and_source_id", unique: true end create_table "saml_providers", id: :serial, force: :cascade do |t| @@ -2987,7 +3025,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "sso_url", null: false t.boolean "enforced_sso", default: false, null: false t.boolean "enforced_group_managed_accounts", default: false, null: false - t.index ["group_id"], name: "index_saml_providers_on_group_id", using: :btree + t.index ["group_id"], name: "index_saml_providers_on_group_id" end create_table "scim_oauth_access_tokens", id: :serial, force: :cascade do |t| @@ -2995,7 +3033,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime_with_timezone "updated_at", null: false t.integer "group_id", null: false t.string "token_encrypted", null: false - t.index ["group_id", "token_encrypted"], name: "index_scim_oauth_access_tokens_on_group_id_and_token_encrypted", unique: true, using: :btree + t.index ["group_id", "token_encrypted"], name: "index_scim_oauth_access_tokens_on_group_id_and_token_encrypted", unique: true end create_table "sent_notifications", id: :serial, force: :cascade do |t| @@ -3009,7 +3047,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "note_type" t.text "position" t.string "in_reply_to_discussion_id" - t.index ["reply_key"], name: "index_sent_notifications_on_reply_key", unique: true, using: :btree + t.index ["reply_key"], name: "index_sent_notifications_on_reply_key", unique: true end create_table "services", id: :serial, force: :cascade do |t| @@ -3036,14 +3074,14 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.boolean "confidential_note_events", default: true t.boolean "deployment_events", default: false, null: false t.string "description", limit: 500 - t.index ["project_id"], name: "index_services_on_project_id", using: :btree - t.index ["template"], name: "index_services_on_template", using: :btree - t.index ["type"], name: "index_services_on_type", using: :btree + t.index ["project_id"], name: "index_services_on_project_id" + t.index ["template"], name: "index_services_on_template" + t.index ["type"], name: "index_services_on_type" end create_table "shards", id: :serial, force: :cascade do |t| t.string "name", null: false - t.index ["name"], name: "index_shards_on_name", unique: true, using: :btree + t.index ["name"], name: "index_shards_on_name", unique: true end create_table "slack_integrations", id: :serial, force: :cascade do |t| @@ -3054,16 +3092,16 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "user_id", null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.index ["service_id"], name: "index_slack_integrations_on_service_id", using: :btree - t.index ["team_id", "alias"], name: "index_slack_integrations_on_team_id_and_alias", unique: true, using: :btree + t.index ["service_id"], name: "index_slack_integrations_on_service_id" + t.index ["team_id", "alias"], name: "index_slack_integrations_on_team_id_and_alias", unique: true end create_table "smartcard_identities", force: :cascade do |t| t.integer "user_id", null: false t.string "subject", null: false t.string "issuer", null: false - t.index ["subject", "issuer"], name: "index_smartcard_identities_on_subject_and_issuer", unique: true, using: :btree - t.index ["user_id"], name: "index_smartcard_identities_on_user_id", using: :btree + t.index ["subject", "issuer"], name: "index_smartcard_identities_on_subject_and_issuer", unique: true + t.index ["user_id"], name: "index_smartcard_identities_on_user_id" end create_table "snippets", id: :serial, force: :cascade do |t| @@ -3081,25 +3119,25 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "cached_markdown_version" t.text "description" t.text "description_html" - t.index ["author_id"], name: "index_snippets_on_author_id", using: :btree - t.index ["file_name"], name: "index_snippets_on_file_name_trigram", using: :gin, opclasses: {"file_name"=>"gin_trgm_ops"} - t.index ["project_id"], name: "index_snippets_on_project_id", using: :btree - t.index ["title"], name: "index_snippets_on_title_trigram", using: :gin, opclasses: {"title"=>"gin_trgm_ops"} - t.index ["updated_at"], name: "index_snippets_on_updated_at", using: :btree - t.index ["visibility_level"], name: "index_snippets_on_visibility_level", using: :btree + t.index ["author_id"], name: "index_snippets_on_author_id" + t.index ["file_name"], name: "index_snippets_on_file_name_trigram", opclass: :gin_trgm_ops, using: :gin + t.index ["project_id"], name: "index_snippets_on_project_id" + t.index ["title"], name: "index_snippets_on_title_trigram", opclass: :gin_trgm_ops, using: :gin + t.index ["updated_at"], name: "index_snippets_on_updated_at" + t.index ["visibility_level"], name: "index_snippets_on_visibility_level" end create_table "software_license_policies", id: :serial, force: :cascade do |t| t.integer "project_id", null: false t.integer "software_license_id", null: false t.integer "approval_status", default: 0, null: false - t.index ["project_id", "software_license_id"], name: "index_software_license_policies_unique_per_project", unique: true, using: :btree - t.index ["software_license_id"], name: "index_software_license_policies_on_software_license_id", using: :btree + t.index ["project_id", "software_license_id"], name: "index_software_license_policies_unique_per_project", unique: true + t.index ["software_license_id"], name: "index_software_license_policies_on_software_license_id" end create_table "software_licenses", id: :serial, force: :cascade do |t| t.string "name", null: false - t.index ["name"], name: "index_software_licenses_on_name", using: :btree + t.index ["name"], name: "index_software_licenses_on_name" end create_table "spam_logs", id: :serial, force: :cascade do |t| @@ -3124,8 +3162,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "created_at" t.datetime "updated_at" t.integer "project_id" - t.index ["project_id"], name: "index_subscriptions_on_project_id", using: :btree - t.index ["subscribable_id", "subscribable_type", "user_id", "project_id"], name: "index_subscriptions_on_subscribable_and_user_id_and_project_id", unique: true, using: :btree + t.index ["project_id"], name: "index_subscriptions_on_project_id" + t.index ["subscribable_id", "subscribable_type", "user_id", "project_id"], name: "index_subscriptions_on_subscribable_and_user_id_and_project_id", unique: true end create_table "suggestions", force: :cascade do |t| @@ -3138,7 +3176,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "lines_above", default: 0, null: false t.integer "lines_below", default: 0, null: false t.boolean "outdated", default: false, null: false - t.index ["note_id", "relative_order"], name: "index_suggestions_on_note_id_and_relative_order", unique: true, using: :btree + t.index ["note_id", "relative_order"], name: "index_suggestions_on_note_id_and_relative_order", unique: true end create_table "system_note_metadata", id: :serial, force: :cascade do |t| @@ -3147,7 +3185,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "action" t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.index ["note_id"], name: "index_system_note_metadata_on_note_id", unique: true, using: :btree + t.index ["note_id"], name: "index_system_note_metadata_on_note_id", unique: true end create_table "taggings", id: :serial, force: :cascade do |t| @@ -3158,17 +3196,17 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "tagger_type" t.string "context" t.datetime "created_at" - t.index ["tag_id", "taggable_id", "taggable_type", "context", "tagger_id", "tagger_type"], name: "taggings_idx", unique: true, using: :btree - t.index ["tag_id"], name: "index_taggings_on_tag_id", using: :btree - t.index ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context", using: :btree - t.index ["taggable_id", "taggable_type"], name: "index_taggings_on_taggable_id_and_taggable_type", using: :btree + t.index ["tag_id", "taggable_id", "taggable_type", "context", "tagger_id", "tagger_type"], name: "taggings_idx", unique: true + t.index ["tag_id"], name: "index_taggings_on_tag_id" + t.index ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context" + t.index ["taggable_id", "taggable_type"], name: "index_taggings_on_taggable_id_and_taggable_type" end create_table "tags", id: :serial, force: :cascade do |t| t.string "name" t.integer "taggings_count", default: 0 - t.index ["name"], name: "index_tags_on_name", unique: true, using: :btree - t.index ["name"], name: "index_tags_on_name_trigram", using: :gin, opclasses: {"name"=>"gin_trgm_ops"} + t.index ["name"], name: "index_tags_on_name", unique: true + t.index ["name"], name: "index_tags_on_name_trigram", opclass: :gin_trgm_ops, using: :gin end create_table "term_agreements", id: :serial, force: :cascade do |t| @@ -3177,9 +3215,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.boolean "accepted", default: false, null: false t.datetime_with_timezone "created_at", null: false t.datetime_with_timezone "updated_at", null: false - t.index ["term_id"], name: "index_term_agreements_on_term_id", using: :btree - t.index ["user_id", "term_id"], name: "term_agreements_unique_index", unique: true, using: :btree - t.index ["user_id"], name: "index_term_agreements_on_user_id", using: :btree + t.index ["term_id"], name: "index_term_agreements_on_term_id" + t.index ["user_id", "term_id"], name: "term_agreements_unique_index", unique: true + t.index ["user_id"], name: "index_term_agreements_on_user_id" end create_table "timelogs", id: :serial, force: :cascade do |t| @@ -3190,9 +3228,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "issue_id" t.integer "merge_request_id" t.datetime_with_timezone "spent_at" - t.index ["issue_id"], name: "index_timelogs_on_issue_id", using: :btree - t.index ["merge_request_id"], name: "index_timelogs_on_merge_request_id", using: :btree - t.index ["user_id"], name: "index_timelogs_on_user_id", using: :btree + t.index ["issue_id"], name: "index_timelogs_on_issue_id" + t.index ["merge_request_id"], name: "index_timelogs_on_merge_request_id" + t.index ["user_id"], name: "index_timelogs_on_user_id" end create_table "todos", id: :serial, force: :cascade do |t| @@ -3208,20 +3246,20 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "note_id" t.string "commit_id" t.integer "group_id" - t.index ["author_id"], name: "index_todos_on_author_id", using: :btree - t.index ["commit_id"], name: "index_todos_on_commit_id", using: :btree - t.index ["group_id"], name: "index_todos_on_group_id", using: :btree - t.index ["note_id"], name: "index_todos_on_note_id", using: :btree - t.index ["project_id"], name: "index_todos_on_project_id", using: :btree - t.index ["target_type", "target_id"], name: "index_todos_on_target_type_and_target_id", using: :btree - t.index ["user_id", "id"], name: "index_todos_on_user_id_and_id_done", where: "((state)::text = 'done'::text)", using: :btree - t.index ["user_id", "id"], name: "index_todos_on_user_id_and_id_pending", where: "((state)::text = 'pending'::text)", using: :btree - t.index ["user_id"], name: "index_todos_on_user_id", using: :btree + t.index ["author_id"], name: "index_todos_on_author_id" + t.index ["commit_id"], name: "index_todos_on_commit_id" + t.index ["group_id"], name: "index_todos_on_group_id" + t.index ["note_id"], name: "index_todos_on_note_id" + t.index ["project_id"], name: "index_todos_on_project_id" + t.index ["target_type", "target_id"], name: "index_todos_on_target_type_and_target_id" + t.index ["user_id", "id"], name: "index_todos_on_user_id_and_id_done", where: "((state)::text = 'done'::text)" + t.index ["user_id", "id"], name: "index_todos_on_user_id_and_id_pending", where: "((state)::text = 'pending'::text)" + t.index ["user_id"], name: "index_todos_on_user_id" end create_table "trending_projects", id: :serial, force: :cascade do |t| t.integer "project_id", null: false - t.index ["project_id"], name: "index_trending_projects_on_project_id", unique: true, using: :btree + t.index ["project_id"], name: "index_trending_projects_on_project_id", unique: true end create_table "u2f_registrations", id: :serial, force: :cascade do |t| @@ -3233,8 +3271,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime "created_at", null: false t.datetime "updated_at", null: false t.string "name" - t.index ["key_handle"], name: "index_u2f_registrations_on_key_handle", using: :btree - t.index ["user_id"], name: "index_u2f_registrations_on_user_id", using: :btree + t.index ["key_handle"], name: "index_u2f_registrations_on_key_handle" + t.index ["user_id"], name: "index_u2f_registrations_on_user_id" end create_table "uploads", id: :serial, force: :cascade do |t| @@ -3248,10 +3286,10 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "mount_point" t.string "secret" t.integer "store" - t.index ["checksum"], name: "index_uploads_on_checksum", using: :btree - t.index ["model_id", "model_type"], name: "index_uploads_on_model_id_and_model_type", using: :btree - t.index ["store"], name: "index_uploads_on_store", using: :btree - t.index ["uploader", "path"], name: "index_uploads_on_uploader_and_path", using: :btree + t.index ["checksum"], name: "index_uploads_on_checksum" + t.index ["model_id", "model_type"], name: "index_uploads_on_model_id_and_model_type" + t.index ["store"], name: "index_uploads_on_store" + t.index ["uploader", "path"], name: "index_uploads_on_uploader_and_path" end create_table "user_agent_details", id: :serial, force: :cascade do |t| @@ -3262,14 +3300,14 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.boolean "submitted", default: false, null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.index ["subject_id", "subject_type"], name: "index_user_agent_details_on_subject_id_and_subject_type", using: :btree + t.index ["subject_id", "subject_type"], name: "index_user_agent_details_on_subject_id_and_subject_type" end create_table "user_callouts", id: :serial, force: :cascade do |t| t.integer "feature_name", null: false t.integer "user_id", null: false - t.index ["user_id", "feature_name"], name: "index_user_callouts_on_user_id_and_feature_name", unique: true, using: :btree - t.index ["user_id"], name: "index_user_callouts_on_user_id", using: :btree + t.index ["user_id", "feature_name"], name: "index_user_callouts_on_user_id_and_feature_name", unique: true + t.index ["user_id"], name: "index_user_callouts_on_user_id" end create_table "user_custom_attributes", id: :serial, force: :cascade do |t| @@ -3278,15 +3316,15 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "user_id", null: false t.string "key", null: false t.string "value", null: false - t.index ["key", "value"], name: "index_user_custom_attributes_on_key_and_value", using: :btree - t.index ["user_id", "key"], name: "index_user_custom_attributes_on_user_id_and_key", unique: true, using: :btree + t.index ["key", "value"], name: "index_user_custom_attributes_on_key_and_value" + t.index ["user_id", "key"], name: "index_user_custom_attributes_on_user_id_and_key", unique: true end create_table "user_interacted_projects", id: false, force: :cascade do |t| t.integer "user_id", null: false t.integer "project_id", null: false - t.index ["project_id", "user_id"], name: "index_user_interacted_projects_on_project_id_and_user_id", unique: true, using: :btree - t.index ["user_id"], name: "index_user_interacted_projects_on_user_id", using: :btree + t.index ["project_id", "user_id"], name: "index_user_interacted_projects_on_project_id_and_user_id", unique: true + t.index ["user_id"], name: "index_user_interacted_projects_on_user_id" end create_table "user_preferences", id: :serial, force: :cascade do |t| @@ -3305,7 +3343,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "epics_sort" t.integer "roadmap_epics_state" t.string "roadmaps_sort" - t.index ["user_id"], name: "index_user_preferences_on_user_id", unique: true, using: :btree + t.index ["user_id"], name: "index_user_preferences_on_user_id", unique: true end create_table "user_statuses", primary_key: "user_id", id: :serial, force: :cascade do |t| @@ -3313,7 +3351,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "emoji", default: "speech_balloon", null: false t.string "message", limit: 100 t.string "message_html" - t.index ["user_id"], name: "index_user_statuses_on_user_id", using: :btree + t.index ["user_id"], name: "index_user_statuses_on_user_id" end create_table "user_synced_attributes_metadata", id: :serial, force: :cascade do |t| @@ -3322,7 +3360,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.boolean "location_synced", default: false t.integer "user_id", null: false t.string "provider" - t.index ["user_id"], name: "index_user_synced_attributes_metadata_on_user_id", unique: true, using: :btree + t.index ["user_id"], name: "index_user_synced_attributes_metadata_on_user_id", unique: true end create_table "users", id: :serial, force: :cascade do |t| @@ -3405,26 +3443,26 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.text "note" t.integer "roadmap_layout", limit: 2 t.integer "bot_type", limit: 2 - t.index ["accepted_term_id"], name: "index_users_on_accepted_term_id", using: :btree - t.index ["admin"], name: "index_users_on_admin", using: :btree - t.index ["bot_type"], name: "index_users_on_bot_type", using: :btree - t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true, using: :btree - t.index ["created_at"], name: "index_users_on_created_at", using: :btree - t.index ["email"], name: "index_users_on_email", unique: true, using: :btree - t.index ["email"], name: "index_users_on_email_trigram", using: :gin, opclasses: {"email"=>"gin_trgm_ops"} - t.index ["feed_token"], name: "index_users_on_feed_token", using: :btree - t.index ["ghost"], name: "index_users_on_ghost", using: :btree - t.index ["group_view"], name: "index_users_on_group_view", using: :btree - t.index ["incoming_email_token"], name: "index_users_on_incoming_email_token", using: :btree - t.index ["managing_group_id"], name: "index_users_on_managing_group_id", using: :btree - t.index ["name"], name: "index_users_on_name", using: :btree - t.index ["name"], name: "index_users_on_name_trigram", using: :gin, opclasses: {"name"=>"gin_trgm_ops"} - t.index ["public_email"], name: "index_users_on_public_email", where: "((public_email)::text <> ''::text)", using: :btree - t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree - t.index ["state"], name: "index_users_on_state", using: :btree - t.index ["state"], name: "index_users_on_state_and_internal", where: "((ghost <> true) AND (bot_type IS NULL))", using: :btree - t.index ["username"], name: "index_users_on_username", using: :btree - t.index ["username"], name: "index_users_on_username_trigram", using: :gin, opclasses: {"username"=>"gin_trgm_ops"} + t.index ["accepted_term_id"], name: "index_users_on_accepted_term_id" + t.index ["admin"], name: "index_users_on_admin" + t.index ["bot_type"], name: "index_users_on_bot_type" + t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true + t.index ["created_at"], name: "index_users_on_created_at" + t.index ["email"], name: "index_users_on_email", unique: true + t.index ["email"], name: "index_users_on_email_trigram", opclass: :gin_trgm_ops, using: :gin + t.index ["feed_token"], name: "index_users_on_feed_token" + t.index ["ghost"], name: "index_users_on_ghost" + t.index ["group_view"], name: "index_users_on_group_view" + t.index ["incoming_email_token"], name: "index_users_on_incoming_email_token" + t.index ["managing_group_id"], name: "index_users_on_managing_group_id" + t.index ["name"], name: "index_users_on_name" + t.index ["name"], name: "index_users_on_name_trigram", opclass: :gin_trgm_ops, using: :gin + t.index ["public_email"], name: "index_users_on_public_email", where: "((public_email)::text <> ''::text)" + t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true + t.index ["state"], name: "index_users_on_state" + t.index ["state"], name: "index_users_on_state_and_internal", where: "((ghost <> true) AND (bot_type IS NULL))" + t.index ["username"], name: "index_users_on_username" + t.index ["username"], name: "index_users_on_username_trigram", opclass: :gin_trgm_ops, using: :gin end create_table "users_ops_dashboard_projects", force: :cascade do |t| @@ -3432,8 +3470,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime_with_timezone "updated_at", null: false t.integer "user_id", null: false t.integer "project_id", null: false - t.index ["project_id"], name: "index_users_ops_dashboard_projects_on_project_id", using: :btree - t.index ["user_id", "project_id"], name: "index_users_ops_dashboard_projects_on_user_id_and_project_id", unique: true, using: :btree + t.index ["project_id"], name: "index_users_ops_dashboard_projects_on_project_id" + t.index ["user_id", "project_id"], name: "index_users_ops_dashboard_projects_on_user_id_and_project_id", unique: true end create_table "users_star_projects", id: :serial, force: :cascade do |t| @@ -3441,8 +3479,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "user_id", null: false t.datetime "created_at" t.datetime "updated_at" - t.index ["project_id"], name: "index_users_star_projects_on_project_id", using: :btree - t.index ["user_id", "project_id"], name: "index_users_star_projects_on_user_id_and_project_id", unique: true, using: :btree + t.index ["project_id"], name: "index_users_star_projects_on_project_id" + t.index ["user_id", "project_id"], name: "index_users_star_projects_on_user_id_and_project_id", unique: true end create_table "vulnerability_feedback", id: :serial, force: :cascade do |t| @@ -3459,12 +3497,12 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "comment_author_id" t.text "comment" t.datetime_with_timezone "comment_timestamp" - t.index ["author_id"], name: "index_vulnerability_feedback_on_author_id", using: :btree - t.index ["comment_author_id"], name: "index_vulnerability_feedback_on_comment_author_id", using: :btree - t.index ["issue_id"], name: "index_vulnerability_feedback_on_issue_id", using: :btree - t.index ["merge_request_id"], name: "index_vulnerability_feedback_on_merge_request_id", using: :btree - t.index ["pipeline_id"], name: "index_vulnerability_feedback_on_pipeline_id", using: :btree - t.index ["project_id", "category", "feedback_type", "project_fingerprint"], name: "vulnerability_feedback_unique_idx", unique: true, using: :btree + t.index ["author_id"], name: "index_vulnerability_feedback_on_author_id" + t.index ["comment_author_id"], name: "index_vulnerability_feedback_on_comment_author_id" + t.index ["issue_id"], name: "index_vulnerability_feedback_on_issue_id" + t.index ["merge_request_id"], name: "index_vulnerability_feedback_on_merge_request_id" + t.index ["pipeline_id"], name: "index_vulnerability_feedback_on_pipeline_id" + t.index ["project_id", "category", "feedback_type", "project_fingerprint"], name: "vulnerability_feedback_unique_idx", unique: true end create_table "vulnerability_identifiers", force: :cascade do |t| @@ -3476,7 +3514,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "external_id", null: false t.string "name", null: false t.text "url" - t.index ["project_id", "fingerprint"], name: "index_vulnerability_identifiers_on_project_id_and_fingerprint", unique: true, using: :btree + t.index ["project_id", "fingerprint"], name: "index_vulnerability_identifiers_on_project_id_and_fingerprint", unique: true end create_table "vulnerability_occurrence_identifiers", force: :cascade do |t| @@ -3484,8 +3522,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime_with_timezone "updated_at", null: false t.bigint "occurrence_id", null: false t.bigint "identifier_id", null: false - t.index ["identifier_id"], name: "index_vulnerability_occurrence_identifiers_on_identifier_id", using: :btree - t.index ["occurrence_id", "identifier_id"], name: "index_vulnerability_occurrence_identifiers_on_unique_keys", unique: true, using: :btree + t.index ["identifier_id"], name: "index_vulnerability_occurrence_identifiers_on_identifier_id" + t.index ["occurrence_id", "identifier_id"], name: "index_vulnerability_occurrence_identifiers_on_unique_keys", unique: true end create_table "vulnerability_occurrence_pipelines", force: :cascade do |t| @@ -3493,8 +3531,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.datetime_with_timezone "updated_at", null: false t.bigint "occurrence_id", null: false t.integer "pipeline_id", null: false - t.index ["occurrence_id", "pipeline_id"], name: "vulnerability_occurrence_pipelines_on_unique_keys", unique: true, using: :btree - t.index ["pipeline_id"], name: "index_vulnerability_occurrence_pipelines_on_pipeline_id", using: :btree + t.index ["occurrence_id", "pipeline_id"], name: "vulnerability_occurrence_pipelines_on_unique_keys", unique: true + t.index ["pipeline_id"], name: "index_vulnerability_occurrence_pipelines_on_pipeline_id" end create_table "vulnerability_occurrences", force: :cascade do |t| @@ -3512,10 +3550,10 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "name", null: false t.string "metadata_version", null: false t.text "raw_metadata", null: false - t.index ["primary_identifier_id"], name: "index_vulnerability_occurrences_on_primary_identifier_id", using: :btree - t.index ["project_id", "primary_identifier_id", "location_fingerprint", "scanner_id"], name: "index_vulnerability_occurrences_on_unique_keys", unique: true, using: :btree - t.index ["scanner_id"], name: "index_vulnerability_occurrences_on_scanner_id", using: :btree - t.index ["uuid"], name: "index_vulnerability_occurrences_on_uuid", unique: true, using: :btree + t.index ["primary_identifier_id"], name: "index_vulnerability_occurrences_on_primary_identifier_id" + t.index ["project_id", "primary_identifier_id", "location_fingerprint", "scanner_id"], name: "index_vulnerability_occurrences_on_unique_keys", unique: true + t.index ["scanner_id"], name: "index_vulnerability_occurrences_on_scanner_id" + t.index ["uuid"], name: "index_vulnerability_occurrences_on_uuid", unique: true end create_table "vulnerability_scanners", force: :cascade do |t| @@ -3524,7 +3562,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.integer "project_id", null: false t.string "external_id", null: false t.string "name", null: false - t.index ["project_id", "external_id"], name: "index_vulnerability_scanners_on_project_id_and_external_id", unique: true, using: :btree + t.index ["project_id", "external_id"], name: "index_vulnerability_scanners_on_project_id_and_external_id", unique: true end create_table "web_hook_logs", id: :serial, force: :cascade do |t| @@ -3540,8 +3578,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "internal_error_message" t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.index ["created_at", "web_hook_id"], name: "index_web_hook_logs_on_created_at_and_web_hook_id", using: :btree - t.index ["web_hook_id"], name: "index_web_hook_logs_on_web_hook_id", using: :btree + t.index ["created_at", "web_hook_id"], name: "index_web_hook_logs_on_created_at_and_web_hook_id" + t.index ["web_hook_id"], name: "index_web_hook_logs_on_web_hook_id" end create_table "web_hooks", id: :serial, force: :cascade do |t| @@ -3568,8 +3606,8 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do t.string "encrypted_url" t.string "encrypted_url_iv" t.integer "group_id" - t.index ["project_id"], name: "index_web_hooks_on_project_id", using: :btree - t.index ["type"], name: "index_web_hooks_on_type", using: :btree + t.index ["project_id"], name: "index_web_hooks_on_project_id" + t.index ["type"], name: "index_web_hooks_on_type" end add_foreign_key "application_settings", "namespaces", column: "custom_project_templates_group_id", on_delete: :nullify @@ -3606,6 +3644,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do add_foreign_key "boards", "namespaces", column: "group_id", on_delete: :cascade add_foreign_key "boards", "projects", name: "fk_f15266b5f9", on_delete: :cascade add_foreign_key "chat_teams", "namespaces", on_delete: :cascade + add_foreign_key "ci_build_needs", "ci_builds", column: "build_id", on_delete: :cascade add_foreign_key "ci_build_trace_chunks", "ci_builds", column: "build_id", on_delete: :cascade add_foreign_key "ci_build_trace_section_names", "projects", on_delete: :cascade add_foreign_key "ci_build_trace_sections", "ci_build_trace_section_names", column: "section_name_id", name: "fk_264e112c66", on_delete: :cascade @@ -3622,6 +3661,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do add_foreign_key "ci_group_variables", "namespaces", column: "group_id", name: "fk_33ae4d58d8", on_delete: :cascade add_foreign_key "ci_job_artifacts", "ci_builds", column: "job_id", on_delete: :cascade add_foreign_key "ci_job_artifacts", "projects", on_delete: :cascade + add_foreign_key "ci_job_variables", "ci_builds", column: "job_id", on_delete: :cascade add_foreign_key "ci_pipeline_chat_data", "chat_names", on_delete: :cascade add_foreign_key "ci_pipeline_chat_data", "ci_pipelines", column: "pipeline_id", on_delete: :cascade add_foreign_key "ci_pipeline_schedule_variables", "ci_pipeline_schedules", column: "pipeline_schedule_id", name: "fk_41c35fda51", on_delete: :cascade @@ -3675,6 +3715,7 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do add_foreign_key "design_management_designs", "projects", on_delete: :cascade add_foreign_key "design_management_designs_versions", "design_management_designs", column: "design_id", name: "fk_03c671965c", on_delete: :cascade add_foreign_key "design_management_designs_versions", "design_management_versions", column: "version_id", name: "fk_f4d25ba00c", on_delete: :cascade + add_foreign_key "design_management_versions", "issues", on_delete: :cascade add_foreign_key "draft_notes", "merge_requests", on_delete: :cascade add_foreign_key "draft_notes", "users", column: "author_id", on_delete: :cascade add_foreign_key "elasticsearch_indexed_namespaces", "namespaces", on_delete: :cascade @@ -3696,7 +3737,9 @@ ActiveRecord::Schema.define(version: 2019_07_03_130053) do add_foreign_key "fork_network_members", "projects", on_delete: :cascade add_foreign_key "fork_networks", "projects", column: "root_project_id", name: "fk_e7b436b2b5", on_delete: :nullify add_foreign_key "forked_project_links", "projects", column: "forked_to_project_id", name: "fk_434510edb0", on_delete: :cascade + add_foreign_key "geo_container_repository_updated_events", "container_repositories", name: "fk_212c89c706", on_delete: :cascade add_foreign_key "geo_event_log", "geo_cache_invalidation_events", column: "cache_invalidation_event_id", name: "fk_42c3b54bed", on_delete: :cascade + add_foreign_key "geo_event_log", "geo_container_repository_updated_events", column: "container_repository_updated_event_id", name: "fk_6ada82d42a", on_delete: :cascade add_foreign_key "geo_event_log", "geo_hashed_storage_migrated_events", column: "hashed_storage_migrated_event_id", name: "fk_27548c6db3", on_delete: :cascade add_foreign_key "geo_event_log", "geo_job_artifact_deleted_events", column: "job_artifact_deleted_event_id", name: "fk_176d3fbb5d", on_delete: :cascade add_foreign_key "geo_event_log", "geo_lfs_object_deleted_events", column: "lfs_object_deleted_event_id", name: "fk_d5af95fcd9", on_delete: :cascade |