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 Make ChangePersonalAccessTokensDefaultBackToEmptyArray a "post" migration. 2016-12-16 16:29:33 +05:30
20161011222551_remove_inactive_jira_service_properties.rb Exclude migrations from Style/MutableConstant 2017-02-23 09:32:42 -06:00
20161109150329_fix_project_records_with_invalid_visibility.rb Enable Style/DotPosition Rubocop 👮 2017-06-21 13:48:12 +00:00
20161128170531_drop_user_activities_table.rb Remove unused user activities code 2017-04-14 15:20:55 +02:00
20161221140236_remove_unneeded_services.rb Disable timeout while removing services 2016-12-27 11:10:15 +01:00
20161221153951_rename_reserved_project_names.rb Enable Style/DotPosition Rubocop 👮 2017-06-21 13:48:12 +00:00
20170104150317_requeue_pending_delete_projects.rb Enable Style/DotPosition Rubocop 👮 2017-06-21 13:48:12 +00:00
20170106142508_fill_authorized_projects.rb Enable Style/DotPosition Rubocop 👮 2017-06-21 13:48:12 +00:00
20170106172224_remove_project_authorizations_id_column.rb Remove the project_authorizations.id column 2017-01-08 13:56:50 +01:00
20170131214021_reset_users_authorized_projects_populated.rb Prevent update_column_in_batches on large tables 2017-11-17 16:56:50 +00:00
20170206040400_remove_inactive_default_email_services.rb Use Gitlab::Database.with_connection_pool from !9192 2017-02-14 20:29:36 +08:00
20170206101007_remove_trackable_columns_from_timelogs.rb Add a test which would rollback db and migrate again 2017-03-14 02:12:55 +08:00
20170206101030_validate_foreign_keys_on_timelogs.rb Refactor migration to not require downtime 2017-02-07 10:42:42 -05:00
20170209140523_validate_foreign_keys_on_oauth_openid_requests.rb Implement OpenID Connect identity provider 2017-03-07 14:54:35 +01:00
20170211073944_disable_invalid_service_templates.rb Disable the inheritance column of services in DisableInvalidServiceTemplates migration 2017-03-01 14:06:50 +01:00
20170214111112_delete_deprecated_gitlab_ci_service.rb Remove deprecated CI service 2017-02-14 15:15:41 +01:00
20170215200045_remove_theme_id_from_users.rb Remove comments in migration 2017-02-16 08:25:09 -06:00
20170301205640_migrate_build_events_to_pipeline_events.rb removes redundant code from database.rb 2017-04-11 20:20:19 +01:00
20170306170512_migrate_legacy_manual_actions.rb Fix statements timeout in manual actions migration 2017-03-16 09:57:53 +01:00
20170309171644_reset_relative_position_for_issue.rb Prevent update_column_in_batches on large tables 2017-11-17 16:56:50 +00:00
20170313133418_rename_more_reserved_project_names.rb Enable Style/DotPosition Rubocop 👮 2017-06-21 13:48:12 +00:00
20170317162059_update_upload_paths_to_system.rb Update migrations to move directly into the -/system folder 2017-08-11 18:15:02 +02:00
20170324160416_migrate_user_activities_to_users_last_activity_on.rb Prevent update_column_in_batches on large tables 2017-11-17 16:56:50 +00:00
20170404170532_remove_notes_original_discussion_id.rb Remove and ignore notes.original_discussion_id column 2017-04-05 17:44:14 +01:00
20170406111121_clean_upload_symlinks.rb Adds Rubocop rule for line break after guard clause 2017-11-16 17:58:29 +01:00
20170406142253_migrate_user_project_view.rb Prevent update_column_in_batches on large tables 2017-11-17 16:56:50 +00:00
20170408033905_remove_old_cache_directories.rb Periodically clean up temporary upload files to recover storage space 2017-04-10 08:48:44 +11:00
20170412174900_rename_reserved_dynamic_paths.rb Reject EE reserved namespace paths in CE as well 2017-05-04 18:11:31 +02:00
20170425121605_migrate_trigger_schedules_to_pipeline_schedules.rb Fix data migration from trigger schedules 2017-05-17 22:47:47 +02:00
20170425130047_drop_ci_trigger_schedules_table.rb Add database helpers 'add_timestamps_with_timezone' and 'timestamps_with_timezone' 2017-06-13 22:44:13 +11:00
20170502070007_enable_auto_cancel_pending_pipelines_for_all.rb Prevent update_column_in_batches on large tables 2017-11-17 16:56:50 +00:00
20170502101023_cleanup_namespaceless_pending_delete_projects.rb Enable the Layout/SpaceBeforeBlockBraces cop 2017-08-09 11:52:22 +02:00
20170503004427_update_retried_for_ci_build.rb Prevent update_column_in_batches on large tables 2017-11-17 16:56:50 +00:00
20170503120310_remove_users_authorized_projects_populated.rb Use CTEs for nested groups and authorizations 2017-05-17 16:51:08 +02:00
20170508170547_add_head_pipeline_for_each_merge_request.rb Prevent update_column_in_batches on large tables 2017-11-17 16:56:50 +00:00
20170510101043_add_foreign_key_on_pipeline_schedule_owner.rb Add foreign key on pipeline_schedules.owner_id 2017-05-15 10:01:29 +02:00
20170511100900_cleanup_rename_web_hooks_build_events_to_job_events.rb Merge branch 'bvl-rename-build-events-to-job-events' into 'master' 2017-05-16 14:12:19 +02:00
20170511101000_cleanup_rename_services_build_events_to_job_events.rb Merge branch 'bvl-rename-build-events-to-job-events' into 'master' 2017-05-16 14:12:19 +02:00
20170516165238_cleanup_trigger_for_issues.rb Improve migration for Multipple issue assignee feature 2017-05-16 23:51:50 +03:00
20170516181025_add_constraints_to_issue_assignees_table.rb Adding NULL:false constraint with change_column_null instead of change_column 2017-05-18 11:21:01 +03:00
20170518200835_rename_users_with_renamed_namespace.rb Adds Rubocop rule for line break around conditionals 2018-01-11 16:34:01 +00:00
20170518231126_fix_wrongly_renamed_routes.rb Prevent update_column_in_batches on large tables 2017-11-17 16:56:50 +00:00
20170523073948_remove_assignee_id_from_issue.rb Add spec for removing issues.assignee_id 2017-12-11 14:09:55 +00:00
20170523083112_migrate_old_artifacts.rb Enable Layout/TrailingWhitespace cop and auto-correct offenses 2017-08-15 13:44:37 -04:00
20170525140254_rename_all_reserved_paths_again.rb Don't rename groups/projects that aren't reserved anymore 2017-10-24 16:06:01 +03:00
20170526185842_migrate_pipeline_stages.rb Migrate stages only with correct foreign references 2017-06-06 14:32:24 +02:00
20170526185858_create_index_in_pipeline_stages.rb Create index on pipeline stages after migrating stages 2017-06-06 14:13:51 +02:00
20170526185901_remove_stage_id_index_from_builds.rb Fix adding/removing foreign keys on MySQL 2017-06-21 13:18:38 +02:00
20170526185921_migrate_build_stage_reference.rb Fix migration specs that can not run within transaction 2017-06-21 16:21:12 +02:00
20170526190000_migrate_build_stage_reference_again.rb Prevent update_column_in_batches on large tables 2017-11-17 16:56:50 +00:00
20170531203055_cleanup_users_ldap_email_rename.rb Sync email address from specified omniauth provider - db changes 2017-06-07 11:13:57 -04:00
20170606202615_move_appearance_to_system_dir.rb Update migrations to move directly into the -/system folder 2017-08-11 18:15:02 +02:00
20170607121233_convert_custom_notification_settings_to_columns.rb Deserialise existing custom notification settings 2017-06-15 15:15:13 +01:00
20170609183112_remove_position_from_issuables.rb Migration - Remove position field from issues and merge requests 2017-06-16 12:03:15 -03:00
20170612071012_move_personal_snippets_files.rb Adds Rubocop rule for line break after guard clause 2017-11-16 17:58:29 +01:00
20170613111224_clean_appearance_symlinks.rb Adds Rubocop rule for line break after guard clause 2017-11-16 17:58:29 +01:00
20170621102400_add_stage_id_index_to_builds.rb Improve stage_id in ci_builds foreign key migration 2017-07-03 20:24:32 +02:00
20170627101016_schedule_event_migrations.rb Consistently schedule Sidekiq jobs 2017-12-05 11:59:39 +01:00
20170628080858_migrate_stage_id_reference_in_background.rb Do not schedule bg migration when it is not needed 2017-07-07 15:50:33 +02:00
20170629180131_cleanup_application_settings_signin_enabled_rename.rb Fixes needed when GitLab sign-in is not enabled 2017-07-13 10:08:27 -04:00
20170703130158_schedule_merge_request_diff_migrations.rb Migrate MR commits and diffs to new tables 2017-08-03 13:20:26 +01:00
20170711145558_migrate_stages_statuses.rb Decrease statuses batch size even more in a migration 2017-08-25 12:04:40 +02:00
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 Add a background migration to rename uploads in the uploads table 2017-07-18 15:38:54 +02:00
20170719150301_merge_issuable_reopened_into_opened_state.rb Merge issuable "reopened" state into "opened" 2017-07-28 13:31:51 +02:00
20170728101014_remove_events_from_notification_settings.rb Remove events column from notification settings 2017-07-31 11:18:55 +01:00
20170803090603_calculate_conv_dev_index_percentages.rb Store & use ConvDev percentages returned by Version app 2017-08-07 20:52:08 +02:00
20170807160457_remove_locked_at_column_from_merge_requests.rb Re-add column locked_at on migration rollback 2017-08-07 18:09:53 -03:00
20170807190736_move_personal_snippet_files_into_correct_folder.rb Move the personal snippet uploads from system to -/system 2017-08-11 18:17:45 +02:00
20170815060945_remove_duplicate_mr_events.rb Don't create event in Merge Request Create Service 2017-08-16 09:41:52 +00:00
20170816102555_cleanup_nonexisting_namespace_pending_delete_projects.rb Use EachBatch concern to loop over batches 2017-08-22 14:31:40 +02:00
20170822101017_migrate_pipeline_sidekiq_queues.rb Migrate new jobs when reverting pipeline queues migration 2017-08-25 14:25:18 +02:00
20170828170502_post_deploy_migrate_user_external_mail_data.rb Fix PG::UniqueViolation external_email migration 2017-09-25 06:17:48 -04:00
20170828170513_remove_user_email_provider_column.rb Profile updates from providers 2017-09-06 16:38:52 +03:00
20170828170516_remove_user_external_mail_columns.rb Profile updates from providers 2017-09-06 16:38:52 +03:00
20170830084744_destroy_gpg_signatures.rb truncate gpg signature instead of destroy 2017-09-05 12:18:34 +02:00
20170830150306_drop_events_for_migration_table.rb Finish migration to the new events setup 2017-09-06 16:40:31 +02:00
20170831195038_remove_valid_signature_from_gpg_signatures.rb remove valid_signature from gpg_signatures 2017-09-05 12:18:34 +02:00
20170907170235_delete_conflicting_redirect_routes.rb Make DeleteConflictingRedirectRoutes no-op 2018-01-03 12:23:20 -08:00
20170913180600_fix_projects_without_project_feature.rb Add data migration 2017-09-15 14:45:21 -03:00
20170921101004_normalize_ldap_extern_uids.rb Move migration to background 2017-10-07 10:28:13 -07:00
20170926150348_schedule_merge_request_diff_migrations_take_two.rb Reschedule merge request diff background migration 2017-09-29 11:56:08 +01:00
20170927112318_update_legacy_diff_notes_type_for_import.rb Prevent update_column_in_batches on large tables 2017-11-17 16:56:50 +00:00
20170927112319_update_notes_type_for_import.rb Prevent update_column_in_batches on large tables 2017-11-17 16:56:50 +00:00
20171005130944_schedule_create_gpg_key_subkeys_from_gpg_keys.rb Consistently schedule Sidekiq jobs 2017-12-05 11:59:39 +01:00
20171012150314_remove_user_authentication_token.rb Remove user authentication_token column 2017-11-02 11:39:03 +01:00
20171013104327_migrate_gcp_clusters_to_new_clusters_architectures.rb Remove cluster_id from 20171013104327_migrate_gcp_clusters_to_new_clusters_architectures 2017-11-23 20:42:20 +09:00
20171026082505_schedule_merge_request_latest_merge_request_diff_id_migrations.rb Convert migration to populate latest merge request ID into a background migration 2017-11-17 10:23:48 +00:00
20171101134435_remove_ref_fetched_from_merge_requests.rb make the migration reversible 2017-11-03 08:13:11 -04:00
20171103140253_track_untracked_uploads.rb Move temp table creation into the prepare job 2017-12-01 15:26:41 -08:00
20171106133144_cleanup_application_settings_password_authentication_enabled_rename.rb Allow password authentication to be disabled entirely 2017-11-23 13:16:14 +00:00
20171106154015_remove_issues_branch_name.rb Merge branch 'fix-remove-branch-name-migration' into 'master' 2017-12-12 08:38:04 +00:00
20171106180641_cleanup_add_timezone_to_issues_closed_at.rb Clean up schema of the "issues" table 2017-11-09 18:00:30 +01:00
20171114104051_remove_empty_fork_networks.rb Delete orphaned fork networks in a migration 2017-11-17 12:58:15 +01:00
20171121160421_remove_merge_request_diff_st_commits_and_st_diffs.rb Remove serialised diff and commit columns 2017-11-28 16:13:40 +00:00
20171123101020_update_circuitbreaker_defaults.rb Move the circuitbreaker check out in a separate process 2017-12-08 09:11:39 +01:00
20171123101046_remove_old_circuitbreaker_config.rb Move the circuitbreaker check out in a separate process 2017-12-08 09:11:39 +01:00
20171124095655_add_index_on_merge_request_diffs_merge_request_id_and_id.rb Improve indexes on merge_request_diffs 2017-11-28 16:13:57 +00:00
20171124100152_remove_index_on_merge_request_diffs_merge_request_diff_id.rb Improve indexes on merge_request_diffs 2017-11-28 16:13:57 +00:00
20171124104327_migrate_kubernetes_service_to_new_clusters_architectures.rb Add memoization for properties 2018-01-08 22:24:23 +09:00
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 Remove unnecessary queries on Merge Request Metrics population scheduler 2018-01-08 16:53:58 -02:00
20171205190711_reschedule_fork_network_creation_caller.rb The API isn't using the appropriate services for managing forks 2017-12-07 08:44:55 +00:00
20171207150300_remove_project_labels_group_id_copy.rb fix rubocop 2018-02-03 10:42:44 +01:00
20171207150343_remove_soft_removed_objects.rb Added tests for removing soft removed objects 2018-01-10 17:33:03 +01:00
20171207150344_remove_deleted_at_columns.rb Remove soft removals related code 2018-01-08 17:04:45 +01:00
20171213160445_migrate_github_importer_advance_stage_sidekiq_queue.rb Remove unused queues 2017-12-13 16:28:27 +01:00
20171215121205_post_populate_can_push_from_deploy_keys_projects.rb Applied fix 2018-01-17 21:42:18 +01:00
20171215121259_remove_can_push_from_keys.rb Merge branch 'sh-migrate-can-push-to-deploy-keys-projects-10-3' into 'security-10-3' 2018-01-16 17:04:51 -08:00
20171219121201_normalize_extern_uid_from_identities.rb LDAP extern_uids are not normalized when updated via API 2017-12-21 14:31:15 +00:00
20171221140220_schedule_issues_closed_at_type_change.rb Ignore the Migration/Datetime cop in a migration that fix a column type to datetime_with_timezone 2018-01-04 22:36:11 +01:00
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 add migration 2018-02-02 06:35:40 -08:00
20180204200836_change_author_id_to_not_null_in_todos.rb Set todos#author_id to NOT NULL. 2018-02-05 16:16:57 +01:00
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