gitlab-org--gitlab-foss/db/post_migrate
Stan Hu 3126e89eb8
Add a unique and not null constraint on the project_features.project_id column
This commit has two migrations:

1. The first prunes duplicate rows in the project_features table and leaves
   the row with the highest ID.  Since the behavior was indeterministic before
   and depended on which row the database decided to use, this change at least
   makes the permissions consistent. For example, in some cases, the Wiki may
   have been disabled but enabled in another entry.

2. The second adds a non-null constraint on the project_features.project_id
   column.

Closes #37882

Fixes a significant part of gitlab-com/migration#408.

We found that we were overcounting Wikis because of these duplicates.
On GitLab.com, there are 56 rows with duplicate entries by project_id, and 16,661 rows with NULL project_id values.
2018-05-15 14:20:14 +02:00
..
.gitkeep
20160824121037_change_personal_access_tokens_default_back_to_empty_array.rb
20161011222551_remove_inactive_jira_service_properties.rb
20161109150329_fix_project_records_with_invalid_visibility.rb
20161128170531_drop_user_activities_table.rb
20161221140236_remove_unneeded_services.rb
20161221153951_rename_reserved_project_names.rb
20170104150317_requeue_pending_delete_projects.rb
20170106142508_fill_authorized_projects.rb
20170106172224_remove_project_authorizations_id_column.rb
20170131214021_reset_users_authorized_projects_populated.rb
20170206040400_remove_inactive_default_email_services.rb
20170206101007_remove_trackable_columns_from_timelogs.rb
20170206101030_validate_foreign_keys_on_timelogs.rb
20170209140523_validate_foreign_keys_on_oauth_openid_requests.rb
20170211073944_disable_invalid_service_templates.rb
20170214111112_delete_deprecated_gitlab_ci_service.rb
20170215200045_remove_theme_id_from_users.rb
20170301205640_migrate_build_events_to_pipeline_events.rb
20170306170512_migrate_legacy_manual_actions.rb
20170309171644_reset_relative_position_for_issue.rb
20170313133418_rename_more_reserved_project_names.rb
20170317162059_update_upload_paths_to_system.rb
20170324160416_migrate_user_activities_to_users_last_activity_on.rb
20170404170532_remove_notes_original_discussion_id.rb
20170406111121_clean_upload_symlinks.rb
20170406142253_migrate_user_project_view.rb
20170408033905_remove_old_cache_directories.rb
20170412174900_rename_reserved_dynamic_paths.rb
20170425121605_migrate_trigger_schedules_to_pipeline_schedules.rb
20170425130047_drop_ci_trigger_schedules_table.rb
20170502070007_enable_auto_cancel_pending_pipelines_for_all.rb
20170502101023_cleanup_namespaceless_pending_delete_projects.rb
20170503004427_update_retried_for_ci_build.rb
20170503120310_remove_users_authorized_projects_populated.rb
20170508170547_add_head_pipeline_for_each_merge_request.rb
20170510101043_add_foreign_key_on_pipeline_schedule_owner.rb
20170511100900_cleanup_rename_web_hooks_build_events_to_job_events.rb
20170511101000_cleanup_rename_services_build_events_to_job_events.rb
20170516165238_cleanup_trigger_for_issues.rb
20170516181025_add_constraints_to_issue_assignees_table.rb
20170518200835_rename_users_with_renamed_namespace.rb
20170518231126_fix_wrongly_renamed_routes.rb
20170523073948_remove_assignee_id_from_issue.rb
20170523083112_migrate_old_artifacts.rb
20170525140254_rename_all_reserved_paths_again.rb
20170526185842_migrate_pipeline_stages.rb
20170526185858_create_index_in_pipeline_stages.rb
20170526185901_remove_stage_id_index_from_builds.rb
20170526185921_migrate_build_stage_reference.rb
20170526190000_migrate_build_stage_reference_again.rb
20170531203055_cleanup_users_ldap_email_rename.rb
20170606202615_move_appearance_to_system_dir.rb
20170607121233_convert_custom_notification_settings_to_columns.rb
20170609183112_remove_position_from_issuables.rb
20170612071012_move_personal_snippets_files.rb
20170613111224_clean_appearance_symlinks.rb
20170621102400_add_stage_id_index_to_builds.rb
20170627101016_schedule_event_migrations.rb
20170628080858_migrate_stage_id_reference_in_background.rb
20170629180131_cleanup_application_settings_signin_enabled_rename.rb
20170703130158_schedule_merge_request_diff_migrations.rb
20170711145558_migrate_stages_statuses.rb
20170717111152_cleanup_move_system_upload_folder_symlink.rb Fix a transient failure in db/post_migrate/20170717111152_cleanup_move_system_upload_folder_symlink.rb where symlink already exists 2018-02-12 16:54:22 +01:00
20170717150329_enqueue_migrate_system_uploads_to_new_folder.rb
20170719150301_merge_issuable_reopened_into_opened_state.rb
20170728101014_remove_events_from_notification_settings.rb
20170803090603_calculate_conv_dev_index_percentages.rb
20170807160457_remove_locked_at_column_from_merge_requests.rb
20170807190736_move_personal_snippet_files_into_correct_folder.rb
20170815060945_remove_duplicate_mr_events.rb
20170816102555_cleanup_nonexisting_namespace_pending_delete_projects.rb
20170822101017_migrate_pipeline_sidekiq_queues.rb
20170828170502_post_deploy_migrate_user_external_mail_data.rb
20170828170513_remove_user_email_provider_column.rb
20170828170516_remove_user_external_mail_columns.rb
20170830084744_destroy_gpg_signatures.rb
20170830150306_drop_events_for_migration_table.rb
20170831195038_remove_valid_signature_from_gpg_signatures.rb
20170907170235_delete_conflicting_redirect_routes.rb
20170913180600_fix_projects_without_project_feature.rb
20170921101004_normalize_ldap_extern_uids.rb
20170926150348_schedule_merge_request_diff_migrations_take_two.rb
20170927112318_update_legacy_diff_notes_type_for_import.rb
20170927112319_update_notes_type_for_import.rb
20171005130944_schedule_create_gpg_key_subkeys_from_gpg_keys.rb
20171012150314_remove_user_authentication_token.rb
20171013104327_migrate_gcp_clusters_to_new_clusters_architectures.rb
20171026082505_schedule_merge_request_latest_merge_request_diff_id_migrations.rb
20171101134435_remove_ref_fetched_from_merge_requests.rb
20171103140253_track_untracked_uploads.rb
20171106133144_cleanup_application_settings_password_authentication_enabled_rename.rb
20171106154015_remove_issues_branch_name.rb
20171106180641_cleanup_add_timezone_to_issues_closed_at.rb
20171114104051_remove_empty_fork_networks.rb
20171121160421_remove_merge_request_diff_st_commits_and_st_diffs.rb
20171123101020_update_circuitbreaker_defaults.rb
20171123101046_remove_old_circuitbreaker_config.rb
20171124095655_add_index_on_merge_request_diffs_merge_request_id_and_id.rb
20171124100152_remove_index_on_merge_request_diffs_merge_request_diff_id.rb
20171124104327_migrate_kubernetes_service_to_new_clusters_architectures.rb
20171124150326_reschedule_fork_network_creation.rb Early migrations populating fork-networks: no-op 2018-02-08 09:44:58 +01:00
20171128214150_schedule_populate_merge_request_metrics_with_events_data.rb
20171205190711_reschedule_fork_network_creation_caller.rb
20171207150300_remove_project_labels_group_id_copy.rb
20171207150343_remove_soft_removed_objects.rb
20171207150344_remove_deleted_at_columns.rb
20171213160445_migrate_github_importer_advance_stage_sidekiq_queue.rb
20171215121205_post_populate_can_push_from_deploy_keys_projects.rb
20171215121259_remove_can_push_from_keys.rb
20171219121201_normalize_extern_uid_from_identities.rb
20171221140220_schedule_issues_closed_at_type_change.rb
20180104131052_schedule_set_confidential_note_events_on_webhooks.rb Merge branch 'jej/mattermost-notification-confidentiality-10-6' into 'security-10-6' 2018-04-05 08:41:56 +02:00
20180119121225_remove_redundant_pipeline_stages.rb Disable statement timeout when removing redundant stages 2018-02-07 13:09:53 +01:00
20180122154930_schedule_set_confidential_note_events_on_services.rb Merge branch 'jej/mattermost-notification-confidentiality-10-6' into 'security-10-6' 2018-04-05 08:41:56 +02:00
20180202111106_remove_project_labels_group_id.rb
20180204200836_change_author_id_to_not_null_in_todos.rb
20180212101828_add_tmp_partial_null_index_to_builds.rb Create index on id instead of stage_id in migration 2018-02-21 09:27:07 +01:00
20180212101928_schedule_build_stage_migration.rb Reschedule pipeline stages migration to run it again 2018-04-05 10:54:33 +02:00
20180212102028_remove_tmp_partial_null_index_from_builds.rb Create index on id instead of stage_id in migration 2018-02-21 09:27:07 +01:00
20180216121020_fill_pages_domain_verification_code.rb Add DNS verification to Pages custom domains 2018-02-23 12:22:29 +00:00
20180216121030_enqueue_verify_pages_domain_workers.rb Add DNS verification to Pages custom domains 2018-02-23 12:22:29 +00:00
20180220150310_remove_empty_extern_uid_auth0_identities.rb Merge branch 'fix/auth0-unsafe-login-10-6' into 'security-10-6' 2018-03-21 14:43:47 +00:00
20180223124427_build_user_interacted_projects_table.rb Shortcut concurrent foreign key creation if already exists. 2018-03-20 18:44:00 +01:00
20180301084653_change_project_namespace_id_not_null.rb Make project#namespace_id not null 2018-03-01 11:00:34 +02:00
20180305100050_remove_permanent_from_redirect_routes.rb Remove permanent from redirect_routes 2018-03-28 14:12:07 +02:00
20180306074045_migrate_create_trace_artifact_sidekiq_queue.rb Integrate two workers into one ArchiveTraceWorker with pipeline_background queue. This queue takes loqer precedence than pipeline_default. 2018-03-06 21:44:15 +09:00
20180306164012_add_path_index_to_redirect_routes.rb Add the RedirectRoute#path index setup_postgresql 2018-03-28 14:12:08 +02:00
20180307012445_migrate_update_head_pipeline_for_merge_request_sidekiq_queue.rb Move update_head_pipeline_for_merge_request queue to pipeline_processing namespace 2018-03-07 01:39:00 +09:00
20180405101928_reschedule_builds_stages_migration.rb Reschedule pipeline stages migration to run it again 2018-04-05 10:54:33 +02:00
20180409170809_populate_missing_project_ci_cd_settings.rb Introduce new ProjectCiCdSetting 2018-04-16 14:05:35 +02:00
20180420080616_schedule_stages_index_migration.rb Update 20180420080616_schedule_stages_index_migration.rb 2018-04-27 12:18:07 +00:00
20180430143705_backfill_runner_type_for_ci_runners_post_migrate.rb Fix constants in backfill_runner_type_for_ci_runners_post_migrate.rb 2018-05-03 18:02:38 +02:00
20180502134117_migrate_import_attributes_data_from_projects_to_project_mirror_data.rb Backports every CE related change from ee-44542 to CE 2018-05-04 17:33:26 +02:00
20180511174224_add_unique_constraint_to_project_features_project_id.rb Add a unique and not null constraint on the project_features.project_id column 2018-05-15 14:20:14 +02:00
20180512061621_add_not_null_constraint_to_project_features_project_id.rb Add a unique and not null constraint on the project_features.project_id column 2018-05-15 14:20:14 +02:00