diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-03-18 20:02:30 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-03-18 20:02:30 +0000 |
commit | 41fe97390ceddf945f3d967b8fdb3de4c66b7dea (patch) | |
tree | 9c8d89a8624828992f06d892cd2f43818ff5dcc8 /db | |
parent | 0804d2dc31052fb45a1efecedc8e06ce9bc32862 (diff) | |
download | gitlab-ce-41fe97390ceddf945f3d967b8fdb3de4c66b7dea.tar.gz |
Add latest changes from gitlab-org/gitlab@14-9-stable-eev14.9.0-rc42
Diffstat (limited to 'db')
162 files changed, 3460 insertions, 75 deletions
diff --git a/db/fixtures/development/33_triage_ops.rb b/db/fixtures/development/33_triage_ops.rb new file mode 100644 index 00000000000..f4d74af15ca --- /dev/null +++ b/db/fixtures/development/33_triage_ops.rb @@ -0,0 +1,139 @@ +# frozen_string_literal: true + +require './spec/support/sidekiq_middleware' +require './spec/support/helpers/test_env' + +class Gitlab::Seeder::TriageOps + WEBHOOK_URL = 'http://0.0.0.0:$PORT$' + WEBHOOK_TOKEN = "triage-ops-webhook-token" + + def seed! + puts "Updating settings to allow web hooks to localhost" + ApplicationSetting.current_without_cache.update!(allow_local_requests_from_web_hooks_and_services: true) + + Sidekiq::Testing.inline! do + puts "Ensuring required groups" + ensure_group('gitlab-com') + ensure_group('gitlab-jh/jh-team') + ensure_group('gitlab-org') + ensure_group('gitlab-org/gitlab-core-team/community-members') + ensure_group('gitlab-org/security') + puts "Ensuring required projects" + ensure_project('gitlab-org/gitlab') + ensure_project('gitlab-org/security/gitlab') + puts "Ensuring required bot user" + ensure_bot_user + puts "Setting up webhooks" + ensure_webhook_for('gitlab-com') + ensure_webhook_for('gitlab-org') + end + end + + private + + def ensure_bot_user + bot = User.find_by_username('triagebot') + bot ||= User.create!( + username: 'triagebot', + name: 'Triage Bot', + email: 'triagebot@example.com', + confirmed_at: DateTime.now, + password: SecureRandom.hex.slice(0, 16) + ) + + ensure_group('gitlab-org').add_maintainer(bot) + ensure_group('gitlab-com').add_maintainer(bot) + + params = { + scopes: ['api'], + name: "API Token #{Time.zone.now}" + } + response = PersonalAccessTokens::CreateService.new(current_user: bot, target_user: bot, params: params).execute + + unless response.success? + raise "Can't create Triage Bot access token: #{response.message}" + end + + puts "Bot with API_TOKEN=#{response[:personal_access_token].token} is present now." + + bot + end + + def ensure_webhook_for(group_path) + group = Group.find_by_full_path(group_path) + + hook_params = { + enable_ssl_verification: false, + token: WEBHOOK_TOKEN, + url: WEBHOOK_URL.gsub("$PORT$", ENV.fetch('TRIAGE_OPS_WEBHOOK_PORT', '8091')) + } + # Subscribe the hook to all possible events. + all_group_hook_events = GroupHook.triggers.values + all_group_hook_events.each { |value| hook_params[value] = true } + + group.hooks.delete_all + + hook = group.hooks.new(hook_params) + hook.save! + + puts "Hook with url '#{hook.url}' and token '#{hook.token}' for '#{group_path}' is present now." + end + + def ensure_group(full_path) + group = Group.find_by_full_path(full_path) + + return group if group + + parent_path = full_path.split('/')[0..-2].join('/') + parent = ensure_group(parent_path) if parent_path.present? + + group_path = full_path.split('/').last + + group = Group.new( + name: group_path.titleize, + path: group_path, + parent_id: parent&.id + ) + group.description = FFaker::Lorem.sentence + group.save! + + group.add_owner(User.first) + group.create_namespace_settings + + group + end + + def ensure_project(project_fullpath) + project = Project.find_by_full_path(project_fullpath) + + return project if project + + group_path = project_fullpath.split('/')[0..-2].join('/') + project_path = project_fullpath.split('/').last + + group = ensure_group(group_path) + + params = { + namespace_id: group.id, + name: project_path.titleize, + path: project_path, + description: FFaker::Lorem.sentence, + visibility_level: Gitlab::VisibilityLevel::PRIVATE, + skip_disk_validation: true + } + + project = ::Projects::CreateService.new(User.first, params).execute + + raise "Can't create project '#{project_fullpath}' : #{project.errors.full_messages}" unless project.persisted? + + project + end +end + +if ENV['SEED_TRIAGE_OPS'] + Gitlab::Seeder.quiet do + Gitlab::Seeder::TriageOps.new.seed! + end +else + puts "Skipped. Use the `SEED_TRIAGE_OPS` environment variable to enable seeding data for triage ops project." +end diff --git a/db/migrate/20211007090229_create_issue_search_table.rb b/db/migrate/20211007090229_create_issue_search_table.rb new file mode 100644 index 00000000000..1fc15d20bd0 --- /dev/null +++ b/db/migrate/20211007090229_create_issue_search_table.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +class CreateIssueSearchTable < Gitlab::Database::Migration[1.0] + include Gitlab::Database::PartitioningMigrationHelpers::TableManagementHelpers + + def up + execute <<~SQL + CREATE TABLE issue_search_data ( + project_id bigint NOT NULL REFERENCES projects(id) ON DELETE CASCADE, + issue_id bigint NOT NULL REFERENCES issues(id) ON DELETE CASCADE, + created_at timestamp with time zone DEFAULT NOW() NOT NULL, + updated_at timestamp with time zone DEFAULT NOW() NOT NULL, + search_vector tsvector, + PRIMARY KEY (project_id, issue_id) + ) PARTITION BY HASH (project_id) + SQL + + # rubocop: disable Migration/AddIndex + add_index :issue_search_data, :issue_id + add_index :issue_search_data, :search_vector, using: :gin, name: 'index_issue_search_data_on_search_vector' + # rubocop: enable Migration/AddIndex + + create_hash_partitions :issue_search_data, 64 + end + + def down + drop_table :issue_search_data + end +end diff --git a/db/migrate/20211021115409_add_color_to_epics.rb b/db/migrate/20211021115409_add_color_to_epics.rb new file mode 100644 index 00000000000..14b38209f30 --- /dev/null +++ b/db/migrate/20211021115409_add_color_to_epics.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class AddColorToEpics < Gitlab::Database::Migration[1.0] + # rubocop:disable Migration/AddLimitToTextColumns + # limit is added in 20211021124715_add_text_limit_to_epics_color + def change + add_column :epics, :color, :text, default: '#1068bf' + end + # rubocop:enable Migration/AddLimitToTextColumns +end diff --git a/db/migrate/20211021124715_add_text_limit_to_epics_color.rb b/db/migrate/20211021124715_add_text_limit_to_epics_color.rb new file mode 100644 index 00000000000..7844575c521 --- /dev/null +++ b/db/migrate/20211021124715_add_text_limit_to_epics_color.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class AddTextLimitToEpicsColor < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + def up + add_text_limit :epics, :color, 7 + end + + def down + remove_text_limit :epics, :color + end +end diff --git a/db/migrate/20211203160952_add_updated_state_by_user_id_to_merge_request_reviewers.rb b/db/migrate/20211203160952_add_updated_state_by_user_id_to_merge_request_reviewers.rb new file mode 100644 index 00000000000..dafd2108b43 --- /dev/null +++ b/db/migrate/20211203160952_add_updated_state_by_user_id_to_merge_request_reviewers.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +# See https://docs.gitlab.com/ee/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class AddUpdatedStateByUserIdToMergeRequestReviewers < Gitlab::Database::Migration[1.0] + enable_lock_retries! + + def change + add_column :merge_request_reviewers, :updated_state_by_user_id, :bigint + end +end diff --git a/db/migrate/20211203161149_add_index_to_merge_request_reviewers_updated_state_by_user_id.rb b/db/migrate/20211203161149_add_index_to_merge_request_reviewers_updated_state_by_user_id.rb new file mode 100644 index 00000000000..6f4ee079015 --- /dev/null +++ b/db/migrate/20211203161149_add_index_to_merge_request_reviewers_updated_state_by_user_id.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddIndexToMergeRequestReviewersUpdatedStateByUserId < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + INDEX_NAME = 'index_on_merge_request_reviewers_updated_state_by_user_id' + + def up + add_concurrent_index :merge_request_reviewers, :updated_state_by_user_id, name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :merge_request_reviewers, INDEX_NAME + end +end diff --git a/db/migrate/20211203161840_add_updated_state_by_user_id_to_merge_request_assignees.rb b/db/migrate/20211203161840_add_updated_state_by_user_id_to_merge_request_assignees.rb new file mode 100644 index 00000000000..1c9e7193630 --- /dev/null +++ b/db/migrate/20211203161840_add_updated_state_by_user_id_to_merge_request_assignees.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class AddUpdatedStateByUserIdToMergeRequestAssignees < Gitlab::Database::Migration[1.0] + enable_lock_retries! + + def change + add_column :merge_request_assignees, :updated_state_by_user_id, :bigint + end +end diff --git a/db/migrate/20211203161942_add_index_to_merge_request_assignees_updated_state_by_user_id.rb b/db/migrate/20211203161942_add_index_to_merge_request_assignees_updated_state_by_user_id.rb new file mode 100644 index 00000000000..d052ffdf4d6 --- /dev/null +++ b/db/migrate/20211203161942_add_index_to_merge_request_assignees_updated_state_by_user_id.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddIndexToMergeRequestAssigneesUpdatedStateByUserId < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + INDEX_NAME = 'index_on_merge_request_assignees_updated_state_by_user_id' + + def up + add_concurrent_index :merge_request_assignees, :updated_state_by_user_id, name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :merge_request_assignees, INDEX_NAME + end +end diff --git a/db/migrate/20220105152547_add_foreign_key_to_updated_state_by_user_id_to_merge_request_assignees.rb b/db/migrate/20220105152547_add_foreign_key_to_updated_state_by_user_id_to_merge_request_assignees.rb new file mode 100644 index 00000000000..58411c1dc0f --- /dev/null +++ b/db/migrate/20220105152547_add_foreign_key_to_updated_state_by_user_id_to_merge_request_assignees.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddForeignKeyToUpdatedStateByUserIdToMergeRequestAssignees < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :merge_request_assignees, :users, column: :updated_state_by_user_id, on_delete: :nullify + end + + def down + with_lock_retries do + remove_foreign_key :merge_request_assignees, column: :updated_state_by_user_id + end + end +end diff --git a/db/migrate/20220105153149_add_foreign_key_to_updated_state_by_user_id_to_merge_request_reviewers.rb b/db/migrate/20220105153149_add_foreign_key_to_updated_state_by_user_id_to_merge_request_reviewers.rb new file mode 100644 index 00000000000..13e375a5b97 --- /dev/null +++ b/db/migrate/20220105153149_add_foreign_key_to_updated_state_by_user_id_to_merge_request_reviewers.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddForeignKeyToUpdatedStateByUserIdToMergeRequestReviewers < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :merge_request_reviewers, :users, column: :updated_state_by_user_id, on_delete: :nullify + end + + def down + with_lock_retries do + remove_foreign_key :merge_request_reviewers, column: :updated_state_by_user_id + end + end +end diff --git a/db/migrate/20220120211831_temp_index_for_group_namespace_member_backfill.rb b/db/migrate/20220120211831_temp_index_for_group_namespace_member_backfill.rb new file mode 100644 index 00000000000..527d8783a0f --- /dev/null +++ b/db/migrate/20220120211831_temp_index_for_group_namespace_member_backfill.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class TempIndexForGroupNamespaceMemberBackfill < Gitlab::Database::Migration[1.0] + INDEX_NAME = 'tmp_index_for_namespace_id_migration_on_group_members' + + disable_ddl_transaction! + + def up + # Temporary index to be removed in 14.10 + # https://gitlab.com/gitlab-org/gitlab/-/issues/353538 + add_concurrent_index :members, :id, where: "members.member_namespace_id IS NULL and members.type = 'GroupMember'", name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :members, INDEX_NAME + end +end diff --git a/db/migrate/20220124200927_add_index_to_issues.rb b/db/migrate/20220124200927_add_index_to_issues.rb new file mode 100644 index 00000000000..03cdc3ade2c --- /dev/null +++ b/db/migrate/20220124200927_add_index_to_issues.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddIndexToIssues < Gitlab::Database::Migration[1.0] + DOWNTIME = false + + disable_ddl_transaction! + + INDEX_NAME = 'index_issues_on_id_and_weight' + + def up + add_concurrent_index :issues, [:id, :weight], name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :issues, INDEX_NAME + end +end diff --git a/db/migrate/20220203074916_add_topics_lower_name_index.rb b/db/migrate/20220203074916_add_topics_lower_name_index.rb new file mode 100644 index 00000000000..721abf66c67 --- /dev/null +++ b/db/migrate/20220203074916_add_topics_lower_name_index.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddTopicsLowerNameIndex < Gitlab::Database::Migration[1.0] + INDEX_NAME = 'index_topics_on_lower_name' + + disable_ddl_transaction! + + def up + add_concurrent_index :topics, 'lower(name)', name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :topics, INDEX_NAME + end +end diff --git a/db/migrate/20220203134942_add_hidden_to_projects.rb b/db/migrate/20220203134942_add_hidden_to_projects.rb new file mode 100644 index 00000000000..7046d641289 --- /dev/null +++ b/db/migrate/20220203134942_add_hidden_to_projects.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class AddHiddenToProjects < Gitlab::Database::Migration[1.0] + DOWNTIME = false + + enable_lock_retries! + + def change + add_column :projects, :hidden, :boolean, default: false, null: false # rubocop: disable Migration/AddColumnsToWideTables + end +end diff --git a/db/migrate/20220204093120_create_analytics_cycle_analytics_aggregations.rb b/db/migrate/20220204093120_create_analytics_cycle_analytics_aggregations.rb new file mode 100644 index 00000000000..0339e16a85b --- /dev/null +++ b/db/migrate/20220204093120_create_analytics_cycle_analytics_aggregations.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true +class CreateAnalyticsCycleAnalyticsAggregations < Gitlab::Database::Migration[1.0] + enable_lock_retries! + + def up + create_table :analytics_cycle_analytics_aggregations, id: false do |t| + t.references :group, index: false, null: false, foreign_key: { to_table: :namespaces, on_delete: :cascade } + t.integer :incremental_runtimes_in_seconds, array: true, default: [], null: false + t.integer :incremental_processed_records, array: true, default: [], null: false + t.integer :last_full_run_runtimes_in_seconds, array: true, default: [], null: false + t.integer :last_full_run_processed_records, array: true, default: [], null: false + t.integer :last_incremental_issues_id + t.integer :last_incremental_merge_requests_id + t.integer :last_full_run_issues_id + t.integer :last_full_run_merge_requests_id + + t.datetime_with_timezone :last_incremental_run_at + t.datetime_with_timezone :last_incremental_issues_updated_at + t.datetime_with_timezone :last_incremental_merge_requests_updated_at + t.datetime_with_timezone :last_full_run_at + t.datetime_with_timezone :last_full_run_issues_updated_at + t.datetime_with_timezone :last_full_run_mrs_updated_at + t.datetime_with_timezone :last_consistency_check_updated_at + + t.boolean :enabled, default: true, null: false + + t.index :last_incremental_run_at, where: 'enabled IS TRUE', name: 'ca_aggregations_last_incremental_run_at', order: { last_incremental_run_at: 'ASC NULLS FIRST' } + t.index :last_full_run_at, where: 'enabled IS TRUE', name: 'ca_aggregations_last_full_run_at', order: { last_full_run_at: 'ASC NULLS FIRST' } + t.index :last_consistency_check_updated_at, where: 'enabled IS TRUE', name: 'ca_aggregations_last_consistency_check_updated_at', order: { last_consistency_check_updated_at: 'ASC NULLS FIRST' } + + t.check_constraint 'CARDINALITY(incremental_runtimes_in_seconds) <= 10' + t.check_constraint 'CARDINALITY(incremental_processed_records) <= 10' + t.check_constraint 'CARDINALITY(last_full_run_runtimes_in_seconds) <= 10' + t.check_constraint 'CARDINALITY(last_full_run_processed_records) <= 10' + end + + execute("ALTER TABLE analytics_cycle_analytics_aggregations ADD PRIMARY KEY (group_id)") + end + + def down + drop_table :analytics_cycle_analytics_aggregations + end +end diff --git a/db/migrate/20220204193000_add_integrations_encrypted_properties.rb b/db/migrate/20220204193000_add_integrations_encrypted_properties.rb new file mode 100644 index 00000000000..7df88b68657 --- /dev/null +++ b/db/migrate/20220204193000_add_integrations_encrypted_properties.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +class AddIntegrationsEncryptedProperties < Gitlab::Database::Migration[1.0] + def change + add_column :integrations, :encrypted_properties, :binary + add_column :integrations, :encrypted_properties_iv, :binary + end +end diff --git a/db/migrate/20220211090920_cleanup_populate_topics_non_private_projects_count.rb b/db/migrate/20220211090920_cleanup_populate_topics_non_private_projects_count.rb new file mode 100644 index 00000000000..5ab8feb2195 --- /dev/null +++ b/db/migrate/20220211090920_cleanup_populate_topics_non_private_projects_count.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class CleanupPopulateTopicsNonPrivateProjectsCount < Gitlab::Database::Migration[1.0] + MIGRATION = 'PopulateTopicsNonPrivateProjectsCount' + + disable_ddl_transaction! + + def up + finalize_background_migration(MIGRATION) + end + + def down + # no-op + end +end diff --git a/db/migrate/20220211125954_create_related_epic_links.rb b/db/migrate/20220211125954_create_related_epic_links.rb new file mode 100644 index 00000000000..c06a68a9dd2 --- /dev/null +++ b/db/migrate/20220211125954_create_related_epic_links.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class CreateRelatedEpicLinks < Gitlab::Database::Migration[1.0] + def up + create_table :related_epic_links do |t| + t.references :source, index: true, foreign_key: { to_table: :epics, on_delete: :cascade }, null: false + t.references :target, index: true, foreign_key: { to_table: :epics, on_delete: :cascade }, null: false + t.timestamps_with_timezone null: false + t.integer :link_type, null: false, default: 0, limit: 2 + + t.index [:source_id, :target_id], unique: true + end + end + + def down + drop_table :related_epic_links + end +end diff --git a/db/migrate/20220215164709_update_application_settings_container_registry_exp_pol_worker_capacity_default.rb b/db/migrate/20220215164709_update_application_settings_container_registry_exp_pol_worker_capacity_default.rb new file mode 100644 index 00000000000..4b743f84c4d --- /dev/null +++ b/db/migrate/20220215164709_update_application_settings_container_registry_exp_pol_worker_capacity_default.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true +class UpdateApplicationSettingsContainerRegistryExpPolWorkerCapacityDefault < Gitlab::Database::Migration[1.0] + class Settings < ActiveRecord::Base + self.table_name = 'application_settings' + end + + def up + change_column_default(:application_settings, :container_registry_expiration_policies_worker_capacity, from: 0, to: 4) + + current_settings = Settings.first + + if current_settings&.container_registry_expiration_policies_worker_capacity == 0 + current_settings.update!(container_registry_expiration_policies_worker_capacity: 4) + end + end + + def down + change_column_default(:application_settings, :container_registry_expiration_policies_worker_capacity, from: 4, to: 0) + end +end diff --git a/db/migrate/20220216110023_create_saved_replies.rb b/db/migrate/20220216110023_create_saved_replies.rb new file mode 100644 index 00000000000..e4b6c039dee --- /dev/null +++ b/db/migrate/20220216110023_create_saved_replies.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +class CreateSavedReplies < Gitlab::Database::Migration[1.0] + enable_lock_retries! + + def up + create_table :saved_replies do |t| + t.references :user, index: false, null: false, foreign_key: { on_delete: :cascade } + t.timestamps_with_timezone null: false + t.text :name, null: false, limit: 255 + t.text :content, null: false, limit: 10000 + + t.index [:user_id, :name], name: 'index_saved_replies_on_name_text_pattern_ops', unique: true, opclass: { name: :text_pattern_ops } + end + end + + def down + drop_table :saved_replies, if_exists: true + end +end diff --git a/db/migrate/20220217100008_add_container_registry_expiration_policies_caching_to_application_settings.rb b/db/migrate/20220217100008_add_container_registry_expiration_policies_caching_to_application_settings.rb new file mode 100644 index 00000000000..bd5b13ffa1c --- /dev/null +++ b/db/migrate/20220217100008_add_container_registry_expiration_policies_caching_to_application_settings.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class AddContainerRegistryExpirationPoliciesCachingToApplicationSettings < Gitlab::Database::Migration[1.0] + enable_lock_retries! + + def up + add_column :application_settings, :container_registry_expiration_policies_caching, :boolean, null: false, default: true + end + + def down + remove_column :application_settings, :container_registry_expiration_policies_caching + end +end diff --git a/db/migrate/20220217113058_add_status_to_status_check_responses.rb b/db/migrate/20220217113058_add_status_to_status_check_responses.rb new file mode 100644 index 00000000000..2f118677883 --- /dev/null +++ b/db/migrate/20220217113058_add_status_to_status_check_responses.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddStatusToStatusCheckResponses < Gitlab::Database::Migration[1.0] + def change + add_column :status_check_responses, :status, :integer, default: 0, null: false, limit: 2 + end +end diff --git a/db/migrate/20220221102333_change_maintenance_note_limit_in_ci_runner.rb db/migrate/20220221102333_change_maintainer_note_limit_in_ci_runner.rb b/db/migrate/20220221102333_change_maintenance_note_limit_in_ci_runner.rb db/migrate/20220221102333_change_maintainer_note_limit_in_ci_runner.rb new file mode 100644 index 00000000000..98930691b3b --- /dev/null +++ b/db/migrate/20220221102333_change_maintenance_note_limit_in_ci_runner.rb db/migrate/20220221102333_change_maintainer_note_limit_in_ci_runner.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class ChangeMaintainerNoteLimitInCiRunner < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + def up + add_text_limit :ci_runners, :maintainer_note, 1024, constraint_name: check_constraint_name(:ci_runners, :maintainer_note, 'max_length_1MB') + remove_text_limit :ci_runners, :maintainer_note, constraint_name: check_constraint_name(:ci_runners, :maintainer_note, 'max_length') + end + + def down + # no-op: Danger of failing if there are records with length(maintainer_note) > 255 + end +end diff --git a/db/migrate/20220222072536_add_target_access_levels_to_broadcast_messages.rb b/db/migrate/20220222072536_add_target_access_levels_to_broadcast_messages.rb new file mode 100644 index 00000000000..fd353843878 --- /dev/null +++ b/db/migrate/20220222072536_add_target_access_levels_to_broadcast_messages.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class AddTargetAccessLevelsToBroadcastMessages < Gitlab::Database::Migration[1.0] + def up + add_column :broadcast_messages, :target_access_levels, :integer, if_not_exists: true, array: true, null: false, default: [] + end + + def down + remove_column :broadcast_messages, :target_access_levels, if_exists: true + end +end diff --git a/db/migrate/20220301002101_add_security_orchestration_policy_configuration_namespace_reference.rb b/db/migrate/20220301002101_add_security_orchestration_policy_configuration_namespace_reference.rb new file mode 100644 index 00000000000..42828086310 --- /dev/null +++ b/db/migrate/20220301002101_add_security_orchestration_policy_configuration_namespace_reference.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class AddSecurityOrchestrationPolicyConfigurationNamespaceReference < Gitlab::Database::Migration[1.0] + def up + add_column :security_orchestration_policy_configurations, :namespace_id, :bigint + end + + def down + remove_column :security_orchestration_policy_configurations, :namespace_id + end +end diff --git a/db/migrate/20220301003502_add_security_orchestration_policy_configuration_namespace_index.rb b/db/migrate/20220301003502_add_security_orchestration_policy_configuration_namespace_index.rb new file mode 100644 index 00000000000..de6b36faa65 --- /dev/null +++ b/db/migrate/20220301003502_add_security_orchestration_policy_configuration_namespace_index.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +class AddSecurityOrchestrationPolicyConfigurationNamespaceIndex < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + INDEX_NAME = 'partial_index_sop_configs_on_namespace_id' + + def up + add_concurrent_index :security_orchestration_policy_configurations, :namespace_id, unique: true, name: INDEX_NAME, where: 'namespace_id IS NOT NULL' + add_concurrent_foreign_key :security_orchestration_policy_configurations, :namespaces, column: :namespace_id, on_delete: :cascade, reverse_lock_order: true + + add_check_constraint :security_orchestration_policy_configurations, + "((project_id IS NULL) != (namespace_id IS NULL))", + :cop_configs_project_or_namespace_existence + end + + def down + exec_query 'DELETE FROM security_orchestration_policy_configurations WHERE namespace_id IS NOT NULL' + + remove_check_constraint :security_orchestration_policy_configurations, :cop_configs_project_or_namespace_existence + + with_lock_retries do + remove_foreign_key_if_exists :security_orchestration_policy_configurations, column: :namespace_id + end + + remove_concurrent_index_by_name :security_orchestration_policy_configurations, INDEX_NAME + end +end diff --git a/db/migrate/20220301091503_add_not_null_constraint_to_security_policy_configurations.rb b/db/migrate/20220301091503_add_not_null_constraint_to_security_policy_configurations.rb new file mode 100644 index 00000000000..79ffcb2cbb3 --- /dev/null +++ b/db/migrate/20220301091503_add_not_null_constraint_to_security_policy_configurations.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AddNotNullConstraintToSecurityPolicyConfigurations < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + def up + change_column_null :security_orchestration_policy_configurations, :project_id, true + end + + def down + exec_query 'DELETE FROM security_orchestration_policy_configurations WHERE project_id IS NULL' + change_column_null :security_orchestration_policy_configurations, :project_id, false + end +end diff --git a/db/migrate/20220301175104_change_security_orchestration_policy_configuration_project_index.rb b/db/migrate/20220301175104_change_security_orchestration_policy_configuration_project_index.rb new file mode 100644 index 00000000000..53706d46979 --- /dev/null +++ b/db/migrate/20220301175104_change_security_orchestration_policy_configuration_project_index.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class ChangeSecurityOrchestrationPolicyConfigurationProjectIndex < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + OLD_INDEX_NAME = 'index_sop_configs_on_project_id' + NEW_INDEX_NAME = 'partial_index_sop_configs_on_project_id' + + def up + add_concurrent_index :security_orchestration_policy_configurations, :project_id, unique: true, name: NEW_INDEX_NAME, where: 'project_id IS NOT NULL' + remove_concurrent_index_by_name :security_orchestration_policy_configurations, OLD_INDEX_NAME + end + + def down + add_concurrent_index :security_orchestration_policy_configurations, :project_id, unique: true, name: OLD_INDEX_NAME + remove_concurrent_index_by_name :security_orchestration_policy_configurations, NEW_INDEX_NAME + end +end diff --git a/db/migrate/20220301175426_create_project_build_artifacts_size_refresh.rb b/db/migrate/20220301175426_create_project_build_artifacts_size_refresh.rb new file mode 100644 index 00000000000..fd01437d045 --- /dev/null +++ b/db/migrate/20220301175426_create_project_build_artifacts_size_refresh.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +class CreateProjectBuildArtifactsSizeRefresh < Gitlab::Database::Migration[1.0] + enable_lock_retries! + + CREATED_STATE = 1 + + def change + create_table :project_build_artifacts_size_refreshes do |t| + t.references :project, index: { unique: true }, foreign_key: { on_delete: :cascade }, null: false + t.bigint :last_job_artifact_id, null: true + t.integer :state, null: false, default: CREATED_STATE, limit: 1 + t.datetime_with_timezone :refresh_started_at, null: true + t.timestamps_with_timezone null: false + + # We will use this index for 2 purposes: + # - for finding rows with state = :waiting + # - for finding rows with state = :running and updated_at < x.days.ago + # which we can use to find jobs that were not able to complete and considered + # stale so we can retry + t.index [:state, :updated_at], name: 'idx_build_artifacts_size_refreshes_state_updated_at' + end + end +end diff --git a/db/migrate/20220303190555_add_comment_to_deployment_approvals.rb b/db/migrate/20220303190555_add_comment_to_deployment_approvals.rb new file mode 100644 index 00000000000..56b873c009a --- /dev/null +++ b/db/migrate/20220303190555_add_comment_to_deployment_approvals.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class AddCommentToDeploymentApprovals < Gitlab::Database::Migration[1.0] + # rubocop:disable Migration/AddLimitToTextColumns + # limit is added in 20220303191047_add_text_limit_to_deployment_approvals_comment + def change + add_column :deployment_approvals, :comment, :text + end + # rubocop:enable Migration/AddLimitToTextColumns +end diff --git a/db/migrate/20220303191047_add_text_limit_to_deployment_approvals_comment.rb b/db/migrate/20220303191047_add_text_limit_to_deployment_approvals_comment.rb new file mode 100644 index 00000000000..70c7f5f3a7b --- /dev/null +++ b/db/migrate/20220303191047_add_text_limit_to_deployment_approvals_comment.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class AddTextLimitToDeploymentApprovalsComment < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + def up + add_text_limit :deployment_approvals, :comment, 255 + end + + def down + remove_text_limit :deployment_approvals, :comment + end +end diff --git a/db/migrate/20220304052335_remove_not_null_contraint_on_title_from_sprints.rb b/db/migrate/20220304052335_remove_not_null_contraint_on_title_from_sprints.rb new file mode 100644 index 00000000000..f429303ab83 --- /dev/null +++ b/db/migrate/20220304052335_remove_not_null_contraint_on_title_from_sprints.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class RemoveNotNullContraintOnTitleFromSprints < Gitlab::Database::Migration[1.0] + enable_lock_retries! + + def up + change_column_null :sprints, :title, true + end + + def down + execute <<~SQL + UPDATE sprints SET title = id WHERE title IS NULL + SQL + + change_column_null :sprints, :title, false + end +end diff --git a/db/migrate/20220304061631_remove_unique_index_for_sprints_on_iterations_cadence_id_and_title.rb b/db/migrate/20220304061631_remove_unique_index_for_sprints_on_iterations_cadence_id_and_title.rb new file mode 100644 index 00000000000..8c223bbce01 --- /dev/null +++ b/db/migrate/20220304061631_remove_unique_index_for_sprints_on_iterations_cadence_id_and_title.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class RemoveUniqueIndexForSprintsOnIterationsCadenceIdAndTitle < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + INDEX_NAME = 'index_sprints_on_iterations_cadence_id_and_title' + + def up + remove_concurrent_index_by_name :sprints, INDEX_NAME + end + + def down + add_concurrent_index :sprints, [:iterations_cadence_id, :title], name: INDEX_NAME, unique: true + end +end diff --git a/db/migrate/20220304062107_remove_unique_index_for_sprints_on_project_id_and_title.rb b/db/migrate/20220304062107_remove_unique_index_for_sprints_on_project_id_and_title.rb new file mode 100644 index 00000000000..34a357bdc5c --- /dev/null +++ b/db/migrate/20220304062107_remove_unique_index_for_sprints_on_project_id_and_title.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class RemoveUniqueIndexForSprintsOnProjectIdAndTitle < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + INDEX_NAME = 'index_sprints_on_project_id_and_title' + + def up + remove_concurrent_index_by_name :sprints, INDEX_NAME + end + + def down + add_concurrent_index :sprints, [:project_id, :title], where: "project_id IS NOT NULL", name: INDEX_NAME, unique: true + end +end diff --git a/db/migrate/20220304152729_add_default_to_required_python_on_packages_pypi_metadata.rb b/db/migrate/20220304152729_add_default_to_required_python_on_packages_pypi_metadata.rb new file mode 100644 index 00000000000..56297565cb4 --- /dev/null +++ b/db/migrate/20220304152729_add_default_to_required_python_on_packages_pypi_metadata.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class AddDefaultToRequiredPythonOnPackagesPypiMetadata < Gitlab::Database::Migration[1.0] + def up + change_column_default(:packages_pypi_metadata, :required_python, '') + end + + def down + change_column_default(:packages_pypi_metadata, :required_python, nil) + end +end diff --git a/db/migrate/20220307203458_rename_user_email_lookup_limit_setting_to_search_settings.rb b/db/migrate/20220307203458_rename_user_email_lookup_limit_setting_to_search_settings.rb new file mode 100644 index 00000000000..62fe55b22f2 --- /dev/null +++ b/db/migrate/20220307203458_rename_user_email_lookup_limit_setting_to_search_settings.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class RenameUserEmailLookupLimitSettingToSearchSettings < Gitlab::Database::Migration[1.0] + def up + add_column :application_settings, :search_rate_limit, :integer, null: false, default: 30 + add_column :application_settings, :search_rate_limit_unauthenticated, :integer, null: false, default: 10 + end + + def down + remove_column :application_settings, :search_rate_limit + remove_column :application_settings, :search_rate_limit_unauthenticated + end +end diff --git a/db/migrate/20220309100648_add_time_to_restore_service_dora_metric.rb b/db/migrate/20220309100648_add_time_to_restore_service_dora_metric.rb new file mode 100644 index 00000000000..5cb49a9899a --- /dev/null +++ b/db/migrate/20220309100648_add_time_to_restore_service_dora_metric.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddTimeToRestoreServiceDoraMetric < Gitlab::Database::Migration[1.0] + def change + add_column :dora_daily_metrics, :time_to_restore_service_in_seconds, :integer + end +end diff --git a/db/migrate/20220310101118_update_holder_name_limit.rb b/db/migrate/20220310101118_update_holder_name_limit.rb new file mode 100644 index 00000000000..55eb8f75d70 --- /dev/null +++ b/db/migrate/20220310101118_update_holder_name_limit.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +# See https://docs.gitlab.com/ee/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class UpdateHolderNameLimit < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + def up + add_text_limit :user_credit_card_validations, :holder_name, 50, constraint_name: new_constraint_name + remove_text_limit :user_credit_card_validations, :holder_name, constraint_name: old_constraint_name + end + + def down + add_text_limit :user_credit_card_validations, :holder_name, 26, validate: false, constraint_name: old_constraint_name + remove_text_limit :user_credit_card_validations, :holder_name, constraint_name: new_constraint_name + end + + private + + def old_constraint_name + check_constraint_name(:user_credit_card_validations, :holder_name, 'max_length') + end + + def new_constraint_name + check_constraint_name(:user_credit_card_validations, :holder_name, 'max_length_50') + end +end diff --git a/db/migrate/20220314194149_add_project_ci_secure_files_to_plan_limits.rb b/db/migrate/20220314194149_add_project_ci_secure_files_to_plan_limits.rb new file mode 100644 index 00000000000..fcb7d322ce8 --- /dev/null +++ b/db/migrate/20220314194149_add_project_ci_secure_files_to_plan_limits.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddProjectCiSecureFilesToPlanLimits < Gitlab::Database::Migration[1.0] + def change + add_column(:plan_limits, :project_ci_secure_files, :integer, default: 100, null: false) + end +end diff --git a/db/post_migrate/20210329102724_add_new_trail_plans.rb b/db/post_migrate/20210329102724_add_new_trail_plans.rb index b142f6385f7..37c64bbd42d 100644 --- a/db/post_migrate/20210329102724_add_new_trail_plans.rb +++ b/db/post_migrate/20210329102724_add_new_trail_plans.rb @@ -24,7 +24,7 @@ class AddNewTrailPlans < ActiveRecord::Migration[6.0] end def up - return unless Gitlab.dev_env_or_com? + return unless Gitlab.com? ultimate_trial = Plan.create!(name: 'ultimate_trial', title: 'Ultimate Trial') premium_trial = Plan.create!(name: 'premium_trial', title: 'Premium Trial') @@ -34,7 +34,7 @@ class AddNewTrailPlans < ActiveRecord::Migration[6.0] end def down - return unless Gitlab.dev_env_or_com? + return unless Gitlab.com? Plan.where(name: %w(ultimate_trial premium_trial)).delete_all end diff --git a/db/post_migrate/20210805192450_update_trial_plans_ci_daily_pipeline_schedule_triggers.rb b/db/post_migrate/20210805192450_update_trial_plans_ci_daily_pipeline_schedule_triggers.rb index 9552058dd73..f27f61729a3 100644 --- a/db/post_migrate/20210805192450_update_trial_plans_ci_daily_pipeline_schedule_triggers.rb +++ b/db/post_migrate/20210805192450_update_trial_plans_ci_daily_pipeline_schedule_triggers.rb @@ -29,7 +29,7 @@ class UpdateTrialPlansCiDailyPipelineScheduleTriggers < ActiveRecord::Migration[ end def up - return unless Gitlab.dev_env_or_com? + return unless Gitlab.com? if plan_limits_present? create_or_update_plan_limit('ci_daily_pipeline_schedule_triggers', PREMIUM_TRIAL, EVERY_5_MINUTES) @@ -38,7 +38,7 @@ class UpdateTrialPlansCiDailyPipelineScheduleTriggers < ActiveRecord::Migration[ end def down - return unless Gitlab.dev_env_or_com? + return unless Gitlab.com? if plan_limits_present? create_or_update_plan_limit('ci_daily_pipeline_schedule_triggers', PREMIUM_TRIAL, 0) diff --git a/db/post_migrate/20210812013042_remove_duplicate_project_authorizations.rb b/db/post_migrate/20210812013042_remove_duplicate_project_authorizations.rb new file mode 100644 index 00000000000..6fdc30d09c6 --- /dev/null +++ b/db/post_migrate/20210812013042_remove_duplicate_project_authorizations.rb @@ -0,0 +1,111 @@ +# frozen_string_literal: true + +class RemoveDuplicateProjectAuthorizations < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + BATCH_SIZE = 10_000 + OLD_INDEX_NAME = 'index_project_authorizations_on_project_id_user_id' + INDEX_NAME = 'index_unique_project_authorizations_on_project_id_user_id' + + class ProjectAuthorization < ActiveRecord::Base + self.table_name = 'project_authorizations' + end + + disable_ddl_transaction! + + def up + batch do |first_record, last_record| + break if first_record.blank? + + # construct a range query where we filter records between the first and last records + rows = ActiveRecord::Base.connection.execute <<~SQL + SELECT user_id, project_id + FROM project_authorizations + WHERE + #{start_condition(first_record)} + #{end_condition(last_record)} + GROUP BY user_id, project_id + HAVING COUNT(*) > 1 + SQL + + rows.each do |row| + deduplicate_item(row['project_id'], row['user_id']) + end + end + + add_concurrent_index :project_authorizations, [:project_id, :user_id], unique: true, name: INDEX_NAME + remove_concurrent_index_by_name :project_authorizations, OLD_INDEX_NAME + end + + def down + add_concurrent_index(:project_authorizations, [:project_id, :user_id], name: OLD_INDEX_NAME) + remove_concurrent_index_by_name(:project_authorizations, INDEX_NAME) + end + + private + + def start_condition(record) + "(user_id, project_id) >= (#{Integer(record.user_id)}, #{Integer(record.project_id)})" + end + + def end_condition(record) + return "" unless record + + "AND (user_id, project_id) <= (#{Integer(record.user_id)}, #{Integer(record.project_id)})" + end + + def batch(&block) + order = Gitlab::Pagination::Keyset::Order.build([ + Gitlab::Pagination::Keyset::ColumnOrderDefinition.new( + attribute_name: 'user_id', + order_expression: ProjectAuthorization.arel_table[:user_id].asc, + nullable: :not_nullable, + distinct: false + ), + Gitlab::Pagination::Keyset::ColumnOrderDefinition.new( + attribute_name: 'project_id', + order_expression: ProjectAuthorization.arel_table[:project_id].asc, + nullable: :not_nullable, + distinct: false + ), + Gitlab::Pagination::Keyset::ColumnOrderDefinition.new( + attribute_name: 'access_level', + order_expression: ProjectAuthorization.arel_table[:access_level].asc, + nullable: :not_nullable, + distinct: true + ) + ]) + + scope = ProjectAuthorization.order(order) + cursor = {} + loop do + current_scope = scope.dup + + relation = order.apply_cursor_conditions(current_scope, cursor) + first_record = relation.take + last_record = relation.offset(BATCH_SIZE).take + + yield first_record, last_record + + break if last_record.blank? + + cursor = order.cursor_attributes_for_node(last_record) + end + end + + def deduplicate_item(project_id, user_id) + auth_records = ProjectAuthorization.where(project_id: project_id, user_id: user_id).order(access_level: :desc).to_a + + ActiveRecord::Base.transaction do + # Keep the highest access level and destroy the rest. + auth_records[1..].each do |record| + ProjectAuthorization + .where( + project_id: record.project_id, + user_id: record.user_id, + access_level: record.access_level + ).delete_all + end + end + end +end diff --git a/db/post_migrate/20211026070408_backfill_issue_search_data.rb b/db/post_migrate/20211026070408_backfill_issue_search_data.rb new file mode 100644 index 00000000000..a840adcb991 --- /dev/null +++ b/db/post_migrate/20211026070408_backfill_issue_search_data.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +class BackfillIssueSearchData < Gitlab::Database::Migration[1.0] + MIGRATION = 'BackfillIssueSearchData' + + def up + queue_batched_background_migration( + MIGRATION, + :issues, + :id, + batch_size: 100_000, + sub_batch_size: 1_000, + job_interval: 5.minutes + ) + end + + def down + Gitlab::Database::BackgroundMigration::BatchedMigration + .for_configuration(MIGRATION, :issues, :id, []) + .delete_all + end +end diff --git a/db/post_migrate/20211028100843_delete_issue_merge_request_taggings_records.rb b/db/post_migrate/20211028100843_delete_issue_merge_request_taggings_records.rb index 1ceaa1b5aef..a53f5a4fc25 100644 --- a/db/post_migrate/20211028100843_delete_issue_merge_request_taggings_records.rb +++ b/db/post_migrate/20211028100843_delete_issue_merge_request_taggings_records.rb @@ -8,8 +8,12 @@ class DeleteIssueMergeRequestTaggingsRecords < Gitlab::Database::Migration[1.0] BATCH_SIZE = 3_000 TAGGABLE_TYPES = %w(Issue MergeRequest) + class Tagging < ActiveRecord::Base + self.table_name = "taggings" + end + def up - sleep 2 while ActsAsTaggableOn::Tagging.where(taggable_type: TAGGABLE_TYPES).limit(BATCH_SIZE).delete_all > 0 + sleep 2 while Tagging.where(taggable_type: TAGGABLE_TYPES).limit(BATCH_SIZE).delete_all > 0 remove_concurrent_index_by_name :taggings, INDEX_NAME end diff --git a/db/post_migrate/20211029102822_add_open_source_plan.rb b/db/post_migrate/20211029102822_add_open_source_plan.rb index 00266640f03..bb65637ffca 100644 --- a/db/post_migrate/20211029102822_add_open_source_plan.rb +++ b/db/post_migrate/20211029102822_add_open_source_plan.rb @@ -24,7 +24,7 @@ class AddOpenSourcePlan < Gitlab::Database::Migration[1.0] end def up - return unless Gitlab.dev_env_or_com? + return unless Gitlab.com? opensource = Plan.create!(name: 'opensource', title: 'Open Source Program') @@ -32,7 +32,7 @@ class AddOpenSourcePlan < Gitlab::Database::Migration[1.0] end def down - return unless Gitlab.dev_env_or_com? + return unless Gitlab.com? Plan.where(name: 'opensource').delete_all end diff --git a/db/post_migrate/20220120211832_backfill_member_namespace_id_for_group_members.rb b/db/post_migrate/20220120211832_backfill_member_namespace_id_for_group_members.rb new file mode 100644 index 00000000000..947c0a1edd0 --- /dev/null +++ b/db/post_migrate/20220120211832_backfill_member_namespace_id_for_group_members.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +class BackfillMemberNamespaceIdForGroupMembers < Gitlab::Database::Migration[1.0] + MIGRATION = 'BackfillMemberNamespaceForGroupMembers' + INTERVAL = 2.minutes + BATCH_SIZE = 1_000 + MAX_BATCH_SIZE = 2_000 + SUB_BATCH_SIZE = 100 + + def up + queue_batched_background_migration( + MIGRATION, + :members, + :id, + job_interval: INTERVAL, + batch_size: BATCH_SIZE, + max_batch_size: MAX_BATCH_SIZE, + sub_batch_size: SUB_BATCH_SIZE + ) + end + + def down + Gitlab::Database::BackgroundMigration::BatchedMigration + .for_configuration(MIGRATION, :members, :id, []) + .delete_all + end +end diff --git a/db/post_migrate/20220131000000_index_job_artifacts_on_trace_type_and_expire_at.rb b/db/post_migrate/20220131000000_index_job_artifacts_on_trace_type_and_expire_at.rb new file mode 100644 index 00000000000..f47c04dd2ef --- /dev/null +++ b/db/post_migrate/20220131000000_index_job_artifacts_on_trace_type_and_expire_at.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class IndexJobArtifactsOnTraceTypeAndExpireAt < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + INDEX_NAME = 'tmp_index_ci_job_artifacts_on_id_where_trace_and_expire_at' + TIMESTAMPS = "'2021-04-22 00:00:00', '2021-05-22 00:00:00', '2021-06-22 00:00:00', '2022-01-22 00:00:00', '2022-02-22 00:00:00', '2022-03-22 00:00:00', '2022-04-22 00:00:00'" + + def up + add_concurrent_index :ci_job_artifacts, :id, where: "file_type = 3 AND expire_at IN (#{TIMESTAMPS})", name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :ci_job_artifacts, INDEX_NAME + end +end diff --git a/db/post_migrate/20220131000001_schedule_trace_expiry_removal.rb b/db/post_migrate/20220131000001_schedule_trace_expiry_removal.rb new file mode 100644 index 00000000000..8e282a9b8c2 --- /dev/null +++ b/db/post_migrate/20220131000001_schedule_trace_expiry_removal.rb @@ -0,0 +1,55 @@ +# frozen_string_literal: true + +class ScheduleTraceExpiryRemoval < Gitlab::Database::Migration[1.0] + MIGRATION = 'RemoveAllTraceExpirationDates' + BATCH_SIZE = 100_000 + DELAY_INTERVAL = 4.minutes + + disable_ddl_transaction! + + # Stubbed class to connect to the CI database + # connects_to has to be called in abstract classes. + class MultiDbAdaptableClass < ActiveRecord::Base + self.abstract_class = true + + if Gitlab::Database.has_config?(:ci) + connects_to database: { writing: :ci, reading: :ci } + end + end + + # Stubbed class to access the ci_job_artifacts table + class JobArtifact < MultiDbAdaptableClass + include EachBatch + + self.table_name = 'ci_job_artifacts' + + TARGET_TIMESTAMPS = [ + Date.new(2021, 04, 22).midnight.utc, + Date.new(2021, 05, 22).midnight.utc, + Date.new(2021, 06, 22).midnight.utc, + Date.new(2022, 01, 22).midnight.utc, + Date.new(2022, 02, 22).midnight.utc, + Date.new(2022, 03, 22).midnight.utc, + Date.new(2022, 04, 22).midnight.utc + ].freeze + + scope :in_targeted_timestamps, -> { where(expire_at: TARGET_TIMESTAMPS) } + scope :traces, -> { where(file_type: 3) } + end + + def up + return unless Gitlab.com? + + queue_background_migration_jobs_by_range_at_intervals( + JobArtifact.traces.in_targeted_timestamps, + MIGRATION, + DELAY_INTERVAL, + batch_size: BATCH_SIZE, + track_jobs: true + ) + end + + def down + # no-op + end +end diff --git a/db/post_migrate/20220204110725_backfill_cycle_analytics_aggregations.rb b/db/post_migrate/20220204110725_backfill_cycle_analytics_aggregations.rb new file mode 100644 index 00000000000..933ad747c5c --- /dev/null +++ b/db/post_migrate/20220204110725_backfill_cycle_analytics_aggregations.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +class BackfillCycleAnalyticsAggregations < Gitlab::Database::Migration[1.0] + BATCH_SIZE = 50 + + def up + model = define_batchable_model('analytics_cycle_analytics_group_value_streams') + + model.each_batch(of: BATCH_SIZE) do |relation| + execute <<~SQL + WITH records_to_be_inserted AS #{Gitlab::Database::AsWithMaterialized.materialized_if_supported} ( + SELECT root_ancestor.id AS group_id + FROM (#{relation.select(:group_id).to_sql}) as value_streams, + LATERAL ( + WITH RECURSIVE "base_and_ancestors" AS ( + (SELECT "namespaces"."id", "namespaces"."parent_id" FROM "namespaces" WHERE "namespaces"."id" = value_streams.group_id) + UNION + (SELECT "namespaces"."id", "namespaces"."parent_id" FROM "namespaces", "base_and_ancestors" WHERE "namespaces"."id" = "base_and_ancestors"."parent_id") + ) + SELECT "namespaces"."id" FROM "base_and_ancestors" as "namespaces" WHERE parent_id IS NULL LIMIT 1 + ) as root_ancestor + ) + INSERT INTO "analytics_cycle_analytics_aggregations" + SELECT * FROM "records_to_be_inserted" + ON CONFLICT DO NOTHING + SQL + end + end + + def down + # no-op + end +end diff --git a/db/post_migrate/20220204194347_encrypt_integration_properties.rb b/db/post_migrate/20220204194347_encrypt_integration_properties.rb new file mode 100644 index 00000000000..82dd3a05e1d --- /dev/null +++ b/db/post_migrate/20220204194347_encrypt_integration_properties.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +class EncryptIntegrationProperties < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + MIGRATION = 'EncryptIntegrationProperties' + BATCH_SIZE = 1_000 + INTERVAL = 2.minutes.to_i + + def up + queue_background_migration_jobs_by_range_at_intervals( + define_batchable_model('integrations').all, + MIGRATION, + INTERVAL, + track_jobs: true, + batch_size: BATCH_SIZE + ) + end + + def down + # this migration is not reversible + end +end diff --git a/db/post_migrate/20220207080758_update_api_indexes_for_projects.rb b/db/post_migrate/20220207080758_update_api_indexes_for_projects.rb new file mode 100644 index 00000000000..3275912b0ab --- /dev/null +++ b/db/post_migrate/20220207080758_update_api_indexes_for_projects.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +class UpdateApiIndexesForProjects < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + ARCHIVED_INDEX_NAME = 'idx_projects_api_created_at_id_for_archived' + OLD_ARCHIVED_INDEX_NAME = 'index_projects_api_created_at_id_for_archived' + PUBLIC_AND_ARCHIVED_INDEX_NAME = 'idx_projects_api_created_at_id_for_archived_vis20' + OLD_PUBLIC_AND_ARCHIVED_INDEX_NAME = 'index_projects_api_created_at_id_for_archived_vis20' + INTERNAL_PROJECTS_INDEX_NAME = 'idx_projects_api_created_at_id_for_vis10' + OLD_INTERNAL_PROJECTS_INDEX_NAME = 'index_projects_api_created_at_id_for_vis10' + + def up + add_concurrent_index :projects, [:created_at, :id], + where: "archived = true AND pending_delete = false AND hidden = false", + name: ARCHIVED_INDEX_NAME + + add_concurrent_index :projects, [:created_at, :id], + where: "archived = true AND visibility_level = 20 AND pending_delete = false AND hidden = false", + name: PUBLIC_AND_ARCHIVED_INDEX_NAME + + add_concurrent_index :projects, [:created_at, :id], + where: "visibility_level = 10 AND pending_delete = false AND hidden = false", + name: INTERNAL_PROJECTS_INDEX_NAME + + remove_concurrent_index_by_name :projects, OLD_ARCHIVED_INDEX_NAME + remove_concurrent_index_by_name :projects, OLD_PUBLIC_AND_ARCHIVED_INDEX_NAME + remove_concurrent_index_by_name :projects, OLD_INTERNAL_PROJECTS_INDEX_NAME + end + + def down + add_concurrent_index :projects, [:created_at, :id], + where: "archived = true AND pending_delete = false", + name: OLD_ARCHIVED_INDEX_NAME + + add_concurrent_index :projects, [:created_at, :id], + where: "archived = true AND visibility_level = 20 AND pending_delete = false", + name: OLD_PUBLIC_AND_ARCHIVED_INDEX_NAME + + add_concurrent_index :projects, [:created_at, :id], + where: "visibility_level = 10 AND pending_delete = false", + name: OLD_INTERNAL_PROJECTS_INDEX_NAME + + remove_concurrent_index_by_name :projects, ARCHIVED_INDEX_NAME + remove_concurrent_index_by_name :projects, PUBLIC_AND_ARCHIVED_INDEX_NAME + remove_concurrent_index_by_name :projects, INTERNAL_PROJECTS_INDEX_NAME + end +end diff --git a/db/post_migrate/20220208080921_schedule_migrate_personal_namespace_project_maintainer_to_owner.rb b/db/post_migrate/20220208080921_schedule_migrate_personal_namespace_project_maintainer_to_owner.rb new file mode 100644 index 00000000000..633570aeaa0 --- /dev/null +++ b/db/post_migrate/20220208080921_schedule_migrate_personal_namespace_project_maintainer_to_owner.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class ScheduleMigratePersonalNamespaceProjectMaintainerToOwner < Gitlab::Database::Migration[1.0] + MIGRATION = 'MigratePersonalNamespaceProjectMaintainerToOwner' + INTERVAL = 2.minutes + BATCH_SIZE = 1_000 + SUB_BATCH_SIZE = 200 + + disable_ddl_transaction! + + def up + queue_batched_background_migration( + MIGRATION, + :members, + :id, + job_interval: INTERVAL, + batch_size: BATCH_SIZE, + sub_batch_size: SUB_BATCH_SIZE + ) + end + + def down + # no-op + end +end diff --git a/db/post_migrate/20220215190020_rerun_convert_stringified_raw_metadata_hash_to_json.rb b/db/post_migrate/20220215190020_rerun_convert_stringified_raw_metadata_hash_to_json.rb new file mode 100644 index 00000000000..1f36132c578 --- /dev/null +++ b/db/post_migrate/20220215190020_rerun_convert_stringified_raw_metadata_hash_to_json.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +class RerunConvertStringifiedRawMetadataHashToJson < Gitlab::Database::Migration[1.0] + MIGRATION_CLASS = Gitlab::BackgroundMigration::FixVulnerabilityOccurrencesWithHashesAsRawMetadata + MODEL_CLASS = MIGRATION_CLASS::Finding + DELAY_INTERVAL = 2.minutes + BATCH_SIZE = 500 + + disable_ddl_transaction! + + def up + queue_background_migration_jobs_by_range_at_intervals( + MODEL_CLASS.by_api_report_types, + MIGRATION_CLASS.name.demodulize, + DELAY_INTERVAL, + batch_size: BATCH_SIZE, + track_jobs: true + ) + end + + def down + # no-op + + # up fixes invalid data by updating columns in-place. + # It is a backwards-compatible change, and reversing it in a downgrade would not be desirable. + end +end diff --git a/db/post_migrate/20220216201949_remove_package_files_limit_from_application_settings.rb b/db/post_migrate/20220216201949_remove_package_files_limit_from_application_settings.rb new file mode 100644 index 00000000000..589b75dd918 --- /dev/null +++ b/db/post_migrate/20220216201949_remove_package_files_limit_from_application_settings.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class RemovePackageFilesLimitFromApplicationSettings < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + def up + return unless column_exists?(:application_settings, :max_package_files_for_package_destruction) + + remove_column :application_settings, :max_package_files_for_package_destruction, :smallint + end + + def down + add_column :application_settings, :max_package_files_for_package_destruction, :smallint, default: 100, null: false + add_check_constraint :application_settings, + 'max_package_files_for_package_destruction > 0', + 'app_settings_max_package_files_for_package_destruction_positive' + end +end diff --git a/db/post_migrate/20220217135229_validate_not_null_constraint_on_security_findings_uuid.rb b/db/post_migrate/20220217135229_validate_not_null_constraint_on_security_findings_uuid.rb new file mode 100644 index 00000000000..9cc04cef757 --- /dev/null +++ b/db/post_migrate/20220217135229_validate_not_null_constraint_on_security_findings_uuid.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class ValidateNotNullConstraintOnSecurityFindingsUuid < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + def up + validate_not_null_constraint(:security_findings, :uuid) + end + + def down + # no-op + end +end diff --git a/db/post_migrate/20220221214928_remove_show_diff_preview_in_email_column.rb b/db/post_migrate/20220221214928_remove_show_diff_preview_in_email_column.rb new file mode 100644 index 00000000000..41cd3446c7a --- /dev/null +++ b/db/post_migrate/20220221214928_remove_show_diff_preview_in_email_column.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class RemoveShowDiffPreviewInEmailColumn < Gitlab::Database::Migration[1.0] + enable_lock_retries! + + def up + remove_column :project_settings, :show_diff_preview_in_email, :boolean + end + + def down + add_column :project_settings, :show_diff_preview_in_email, :boolean, default: true, null: false + end +end diff --git a/db/post_migrate/20220222191845_remove_not_null_constraint_for_security_scan_succeeded.rb b/db/post_migrate/20220222191845_remove_not_null_constraint_for_security_scan_succeeded.rb new file mode 100644 index 00000000000..4d4a20b83b3 --- /dev/null +++ b/db/post_migrate/20220222191845_remove_not_null_constraint_for_security_scan_succeeded.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class RemoveNotNullConstraintForSecurityScanSucceeded < Gitlab::Database::Migration[1.0] + def up + change_column_null :analytics_devops_adoption_snapshots, :security_scan_succeeded, true + end + + def down + # There may now be nulls in the table, so we cannot re-add the constraint here. + end +end diff --git a/db/post_migrate/20220222192524_create_not_null_constraint_releases_tag.rb b/db/post_migrate/20220222192524_create_not_null_constraint_releases_tag.rb new file mode 100644 index 00000000000..2bb5ba18743 --- /dev/null +++ b/db/post_migrate/20220222192524_create_not_null_constraint_releases_tag.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class CreateNotNullConstraintReleasesTag < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + def up + add_not_null_constraint :releases, :tag, constraint_name: 'releases_not_null_tag', validate: false + end + + def down + remove_not_null_constraint :releases, :tag, constraint_name: 'releases_not_null_tag' + end +end diff --git a/db/post_migrate/20220222192525_remove_null_releases.rb b/db/post_migrate/20220222192525_remove_null_releases.rb new file mode 100644 index 00000000000..4efd5393122 --- /dev/null +++ b/db/post_migrate/20220222192525_remove_null_releases.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +class RemoveNullReleases < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + class Release < ActiveRecord::Base + include EachBatch + + self.table_name = 'releases' + end + + def up + Release.all.each_batch(of: 25000) do |rel| + rel.where(tag: nil).delete_all + end + end + + def down + # no-op + # + # releases with the same tag within a project have been removed + # and therefore the duplicate release data is no longer available + end +end diff --git a/db/post_migrate/20220223112304_schedule_nullify_orphan_runner_id_on_ci_builds.rb b/db/post_migrate/20220223112304_schedule_nullify_orphan_runner_id_on_ci_builds.rb new file mode 100644 index 00000000000..e4005885c3b --- /dev/null +++ b/db/post_migrate/20220223112304_schedule_nullify_orphan_runner_id_on_ci_builds.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +class ScheduleNullifyOrphanRunnerIdOnCiBuilds < Gitlab::Database::Migration[1.0] + MIGRATION = 'NullifyOrphanRunnerIdOnCiBuilds' + INTERVAL = 2.minutes + BATCH_SIZE = 50_000 + MAX_BATCH_SIZE = 150_000 + SUB_BATCH_SIZE = 500 + + def up + queue_batched_background_migration( + MIGRATION, + :ci_builds, + :id, + job_interval: INTERVAL, + batch_size: BATCH_SIZE, + max_batch_size: MAX_BATCH_SIZE, + sub_batch_size: SUB_BATCH_SIZE + ) + end + + def down + Gitlab::Database::BackgroundMigration::BatchedMigration + .for_configuration(MIGRATION, :ci_builds, :id, []) + .delete_all + end +end diff --git a/db/post_migrate/20220224000000_async_build_trace_expire_at_index.rb b/db/post_migrate/20220224000000_async_build_trace_expire_at_index.rb new file mode 100644 index 00000000000..b22f3e7996f --- /dev/null +++ b/db/post_migrate/20220224000000_async_build_trace_expire_at_index.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AsyncBuildTraceExpireAtIndex < Gitlab::Database::Migration[1.0] + INDEX_NAME = 'tmp_index_ci_job_artifacts_on_id_where_trace_and_expire_at' + TIMESTAMPS = "'2021-04-22 00:00:00', '2021-05-22 00:00:00', '2021-06-22 00:00:00', '2022-01-22 00:00:00', '2022-02-22 00:00:00', '2022-03-22 00:00:00', '2022-04-22 00:00:00'" + + def up + prepare_async_index :ci_job_artifacts, :id, where: "file_type = 3 AND expire_at IN (#{TIMESTAMPS})", name: INDEX_NAME + end + + def down + unprepare_async_index :ci_builds, :id, name: INDEX_NAME + end +end diff --git a/db/post_migrate/20220224204415_recreate_index_security_ci_builds_on_name_and_id_parser_with_new_features.rb b/db/post_migrate/20220224204415_recreate_index_security_ci_builds_on_name_and_id_parser_with_new_features.rb new file mode 100644 index 00000000000..feb0f2c83ab --- /dev/null +++ b/db/post_migrate/20220224204415_recreate_index_security_ci_builds_on_name_and_id_parser_with_new_features.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +class RecreateIndexSecurityCiBuildsOnNameAndIdParserWithNewFeatures < Gitlab::Database::Migration[1.0] + TABLE = "ci_builds" + OLD_INDEX_NAME = "index_security_ci_builds_on_name_and_id_parser_features" + NEW_INDEX_NAME = "index_security_ci_builds_on_name_and_id_parser_features_old" + COLUMNS = %i[name id] + CONSTRAINTS = "(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, + 'secret_detection'::character varying::text, + 'coverage_fuzzing'::character varying::text, + 'license_scanning'::character varying::text, + 'apifuzzer_fuzz'::character varying::text, + 'apifuzzer_fuzz_dnd'::character varying::text]) + ) AND type::text = 'Ci::Build'::text" + + enable_lock_retries! + + def up + rename_index(TABLE, OLD_INDEX_NAME, NEW_INDEX_NAME) + prepare_async_index TABLE, COLUMNS, name: OLD_INDEX_NAME, where: CONSTRAINTS + end + + def down + unprepare_async_index TABLE, COLUMNS, name: OLD_INDEX_NAME + rename_index(TABLE, NEW_INDEX_NAME, OLD_INDEX_NAME) + end +end diff --git a/db/post_migrate/20220225133705_cleanup_backfill_ci_queuing_tables.rb b/db/post_migrate/20220225133705_cleanup_backfill_ci_queuing_tables.rb new file mode 100644 index 00000000000..4fcf8a28727 --- /dev/null +++ b/db/post_migrate/20220225133705_cleanup_backfill_ci_queuing_tables.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class CleanupBackfillCiQueuingTables < Gitlab::Database::Migration[1.0] + MIGRATION = 'BackfillCiQueuingTables' + + disable_ddl_transaction! + + def up + finalize_background_migration(MIGRATION) + end + + def down + # no-op + end +end diff --git a/db/post_migrate/20220301093434_backfill_all_project_namespaces.rb b/db/post_migrate/20220301093434_backfill_all_project_namespaces.rb new file mode 100644 index 00000000000..7071e6241ce --- /dev/null +++ b/db/post_migrate/20220301093434_backfill_all_project_namespaces.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +class BackfillAllProjectNamespaces < Gitlab::Database::Migration[1.0] + MIGRATION = 'ProjectNamespaces::BackfillProjectNamespaces' + DELAY_INTERVAL = 2.minutes + BATCH_SIZE = 1_000 + MAX_BATCH_SIZE = 5_000 + SUB_BATCH_SIZE = 10 + + disable_ddl_transaction! + + def up + queue_batched_background_migration( + MIGRATION, + :projects, + :id, + nil, + 'up', + job_interval: DELAY_INTERVAL, + batch_size: BATCH_SIZE, + max_batch_size: MAX_BATCH_SIZE, + sub_batch_size: SUB_BATCH_SIZE + ) + end + + def down + Gitlab::Database::BackgroundMigration::BatchedMigration + .for_configuration(MIGRATION, :projects, :id, [nil, 'up']).delete_all + end +end diff --git a/db/post_migrate/20220302203410_create_index_security_ci_builds_on_name_and_id_parser_with_new_features.rb b/db/post_migrate/20220302203410_create_index_security_ci_builds_on_name_and_id_parser_with_new_features.rb new file mode 100644 index 00000000000..5be6bb00269 --- /dev/null +++ b/db/post_migrate/20220302203410_create_index_security_ci_builds_on_name_and_id_parser_with_new_features.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +class CreateIndexSecurityCiBuildsOnNameAndIdParserWithNewFeatures < Gitlab::Database::Migration[1.0] + TABLE = "ci_builds" + COLUMNS = %i[name id] + INDEX_NAME = "index_security_ci_builds_on_name_and_id_parser_features" + CONSTRAINTS = "(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, + 'secret_detection'::character varying::text, + 'coverage_fuzzing'::character varying::text, + 'license_scanning'::character varying::text, + 'apifuzzer_fuzz'::character varying::text, + 'apifuzzer_fuzz_dnd'::character varying::text]) + ) AND type::text = 'Ci::Build'::text" + + disable_ddl_transaction! + + def up + add_concurrent_index(TABLE, COLUMNS, name: INDEX_NAME, where: CONSTRAINTS) + end + + def down + remove_concurrent_index(TABLE, COLUMNS, name: INDEX_NAME, where: CONSTRAINTS) + end +end diff --git a/db/post_migrate/20220304165107_drop_partitioned_foreign_keys.rb b/db/post_migrate/20220304165107_drop_partitioned_foreign_keys.rb new file mode 100644 index 00000000000..43f89b05fa4 --- /dev/null +++ b/db/post_migrate/20220304165107_drop_partitioned_foreign_keys.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class DropPartitionedForeignKeys < Gitlab::Database::Migration[1.0] + def up + drop_table :partitioned_foreign_keys + end + + def down + create_table :partitioned_foreign_keys do |t| + t.boolean :cascade_delete, null: false, default: true + t.text :from_table, null: false, limit: 63 + t.text :from_column, null: false, limit: 63 + t.text :to_table, null: false, limit: 63 + t.text :to_column, null: false, limit: 63 + + t.index [:to_table, :from_table, :from_column], unique: true, name: :index_partitioned_foreign_keys_unique_index + end + end +end diff --git a/db/post_migrate/20220304201847_add_unique_index_on_security_training_providers.rb b/db/post_migrate/20220304201847_add_unique_index_on_security_training_providers.rb new file mode 100644 index 00000000000..e78b8fd48ca --- /dev/null +++ b/db/post_migrate/20220304201847_add_unique_index_on_security_training_providers.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddUniqueIndexOnSecurityTrainingProviders < Gitlab::Database::Migration[1.0] + INDEX_NAME = 'index_security_training_providers_on_unique_name' + + disable_ddl_transaction! + + def up + add_concurrent_index :security_training_providers, :name, unique: true, name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :security_training_providers, INDEX_NAME + end +end diff --git a/db/post_migrate/20220305223212_add_security_training_providers.rb b/db/post_migrate/20220305223212_add_security_training_providers.rb new file mode 100644 index 00000000000..fbddee0ae99 --- /dev/null +++ b/db/post_migrate/20220305223212_add_security_training_providers.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +class AddSecurityTrainingProviders < Gitlab::Database::Migration[1.0] + KONTRA_DATA = { + name: 'Kontra', + description: "Kontra Application Security provides interactive developer security education that + enables engineers to quickly learn security best practices + and fix issues in their code by analysing real-world software security vulnerabilities.", + url: "https://application.security/api/webhook/gitlab/exercises/search" + } + + SCW_DATA = { + name: 'Secure Code Warrior', + description: "Resolve vulnerabilities faster and confidently with highly relevant and bite-sized secure coding learning.", + url: "https://integration-api.securecodewarrior.com/api/v1/trial" + } + + module Security + class TrainingProvider < ActiveRecord::Base + self.table_name = 'security_training_providers' + end + end + + def up + current_time = Time.current + timestamps = { created_at: current_time, updated_at: current_time } + + Security::TrainingProvider.reset_column_information + + # upsert providers + Security::TrainingProvider.upsert_all([KONTRA_DATA.merge(timestamps), SCW_DATA.merge(timestamps)]) + end + + def down + Security::TrainingProvider.reset_column_information + + Security::TrainingProvider.find_by(name: KONTRA_DATA[:name])&.destroy + Security::TrainingProvider.find_by(name: SCW_DATA[:name])&.destroy + end +end diff --git a/db/post_migrate/20220307192534_create_index_for_remove_duplicate_project_tag_releases.rb b/db/post_migrate/20220307192534_create_index_for_remove_duplicate_project_tag_releases.rb new file mode 100644 index 00000000000..3e580c013c3 --- /dev/null +++ b/db/post_migrate/20220307192534_create_index_for_remove_duplicate_project_tag_releases.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class CreateIndexForRemoveDuplicateProjectTagReleases < Gitlab::Database::Migration[1.0] + INDEX_NAME = 'index_releases_on_id_project_id_tag' + + disable_ddl_transaction! + + def up + add_concurrent_index :releases, + %i[project_id tag id], + name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :releases, name: INDEX_NAME + end +end diff --git a/db/post_migrate/20220307192610_remove_duplicate_project_tag_releases.rb b/db/post_migrate/20220307192610_remove_duplicate_project_tag_releases.rb new file mode 100644 index 00000000000..d8b99380825 --- /dev/null +++ b/db/post_migrate/20220307192610_remove_duplicate_project_tag_releases.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class RemoveDuplicateProjectTagReleases < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + class Release < ActiveRecord::Base + include EachBatch + + self.table_name = 'releases' + end + + def up + Release.each_batch(of: 5000) do |relation| + relation + .where('exists (select 1 from releases r2 where r2.project_id = releases.project_id and r2.tag = releases.tag and r2.id > releases.id)') + .delete_all + end + end + + def down + # no-op + # + # releases with the same tag within a project have been removed + # and therefore the duplicate release data is no longer available + end +end diff --git a/db/post_migrate/20220307192645_remove_index_for_remove_duplicate_project_tag_releases.rb b/db/post_migrate/20220307192645_remove_index_for_remove_duplicate_project_tag_releases.rb new file mode 100644 index 00000000000..8efb24daff9 --- /dev/null +++ b/db/post_migrate/20220307192645_remove_index_for_remove_duplicate_project_tag_releases.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class RemoveIndexForRemoveDuplicateProjectTagReleases < Gitlab::Database::Migration[1.0] + INDEX_NAME = 'index_releases_on_id_project_id_tag' + + disable_ddl_transaction! + + def up + remove_concurrent_index_by_name :releases, name: INDEX_NAME + end + + def down + add_concurrent_index :releases, + %i[project_id tag id], + name: INDEX_NAME + end +end diff --git a/db/post_migrate/20220307192725_create_unique_index_release_tag_project.rb b/db/post_migrate/20220307192725_create_unique_index_release_tag_project.rb new file mode 100644 index 00000000000..8540f19f079 --- /dev/null +++ b/db/post_migrate/20220307192725_create_unique_index_release_tag_project.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +class CreateUniqueIndexReleaseTagProject < Gitlab::Database::Migration[1.0] + INDEX_NAME = 'index_releases_on_project_tag_unique' + OLD_INDEX_NAME = 'index_releases_on_project_id_and_tag' + + disable_ddl_transaction! + + def up + add_concurrent_index :releases, + %i[project_id tag], + unique: true, + name: INDEX_NAME + remove_concurrent_index_by_name :releases, name: OLD_INDEX_NAME + end + + def down + remove_concurrent_index_by_name :releases, name: INDEX_NAME + add_concurrent_index :releases, + %i[project_id tag], + name: OLD_INDEX_NAME + end +end diff --git a/db/post_migrate/20220307203459_rename_user_email_lookup_limit_setting_to_search_settings_cleanup.rb b/db/post_migrate/20220307203459_rename_user_email_lookup_limit_setting_to_search_settings_cleanup.rb new file mode 100644 index 00000000000..2d01374780d --- /dev/null +++ b/db/post_migrate/20220307203459_rename_user_email_lookup_limit_setting_to_search_settings_cleanup.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class RenameUserEmailLookupLimitSettingToSearchSettingsCleanup < Gitlab::Database::Migration[1.0] + class ApplicationSetting < ActiveRecord::Base + self.table_name = :application_settings + end + + def up + ApplicationSetting.update_all 'search_rate_limit=user_email_lookup_limit' + end + + def down + ApplicationSetting.update_all 'user_email_lookup_limit=search_rate_limit' + end +end diff --git a/db/post_migrate/20220308000205_drop_old_index_security_ci_builds_on_name_and_id_parser_features.rb b/db/post_migrate/20220308000205_drop_old_index_security_ci_builds_on_name_and_id_parser_features.rb new file mode 100644 index 00000000000..4b895c291d8 --- /dev/null +++ b/db/post_migrate/20220308000205_drop_old_index_security_ci_builds_on_name_and_id_parser_features.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class DropOldIndexSecurityCiBuildsOnNameAndIdParserFeatures < Gitlab::Database::Migration[1.0] + TABLE = "ci_builds" + COLUMNS = %i[name id] + INDEX_NAME = "index_security_ci_builds_on_name_and_id_parser_features_old" + CONSTRAINTS = "(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, + 'secret_detection'::character varying::text, + 'coverage_fuzzing'::character varying::text, + 'license_scanning'::character varying::text]) + ) AND type::text = 'Ci::Build'::text" + + disable_ddl_transaction! + + def up + remove_concurrent_index(TABLE, COLUMNS, name: INDEX_NAME, where: CONSTRAINTS) + end + + def down + add_concurrent_index(TABLE, COLUMNS, name: INDEX_NAME, where: CONSTRAINTS) + end +end diff --git a/db/post_migrate/20220308115219_schedule_reset_duplicate_ci_runners_token_encrypted_values_on_projects.rb b/db/post_migrate/20220308115219_schedule_reset_duplicate_ci_runners_token_encrypted_values_on_projects.rb new file mode 100644 index 00000000000..27e7af9a550 --- /dev/null +++ b/db/post_migrate/20220308115219_schedule_reset_duplicate_ci_runners_token_encrypted_values_on_projects.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +class ScheduleResetDuplicateCiRunnersTokenEncryptedValuesOnProjects < Gitlab::Database::Migration[1.0] + MIGRATION = 'ResetDuplicateCiRunnersTokenEncryptedValuesOnProjects' + TOKEN_COLUMN_NAME = :runners_token_encrypted + TEMP_INDEX_NAME = "tmp_index_projects_on_id_and_#{TOKEN_COLUMN_NAME}" + BATCH_SIZE = 10_000 + DELAY_INTERVAL = 2.minutes + + disable_ddl_transaction! + + def up + add_concurrent_index :projects, [:id, TOKEN_COLUMN_NAME], where: "#{TOKEN_COLUMN_NAME} IS NOT NULL", unique: false, name: TEMP_INDEX_NAME + + queue_background_migration_jobs_by_range_at_intervals( + Gitlab::BackgroundMigration::ResetDuplicateCiRunnersTokenEncryptedValuesOnProjects::Project.base_query, + MIGRATION, + DELAY_INTERVAL, + batch_size: BATCH_SIZE, + track_jobs: true + ) + end + + def down + remove_concurrent_index_by_name(:projects, name: TEMP_INDEX_NAME) + end +end diff --git a/db/post_migrate/20220308115502_schedule_reset_duplicate_ci_runners_token_values_on_projects.rb b/db/post_migrate/20220308115502_schedule_reset_duplicate_ci_runners_token_values_on_projects.rb new file mode 100644 index 00000000000..f076b0a740e --- /dev/null +++ b/db/post_migrate/20220308115502_schedule_reset_duplicate_ci_runners_token_values_on_projects.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +class ScheduleResetDuplicateCiRunnersTokenValuesOnProjects < Gitlab::Database::Migration[1.0] + MIGRATION = 'ResetDuplicateCiRunnersTokenValuesOnProjects' + TOKEN_COLUMN_NAME = :runners_token + TEMP_INDEX_NAME = "tmp_index_projects_on_id_and_#{TOKEN_COLUMN_NAME}" + BATCH_SIZE = 10_000 + DELAY_INTERVAL = 2.minutes + + disable_ddl_transaction! + + def up + add_concurrent_index :projects, [:id, TOKEN_COLUMN_NAME], where: "#{TOKEN_COLUMN_NAME} IS NOT NULL", unique: false, name: TEMP_INDEX_NAME + + queue_background_migration_jobs_by_range_at_intervals( + Gitlab::BackgroundMigration::ResetDuplicateCiRunnersTokenValuesOnProjects::Project.base_query, + MIGRATION, + DELAY_INTERVAL, + batch_size: BATCH_SIZE, + track_jobs: true + ) + end + + def down + remove_concurrent_index_by_name(:projects, name: TEMP_INDEX_NAME) + end +end diff --git a/db/post_migrate/20220309084838_remove_external_pull_request_tracking.rb b/db/post_migrate/20220309084838_remove_external_pull_request_tracking.rb new file mode 100644 index 00000000000..6159f9d6822 --- /dev/null +++ b/db/post_migrate/20220309084838_remove_external_pull_request_tracking.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class RemoveExternalPullRequestTracking < Gitlab::Database::Migration[1.0] + include Gitlab::Database::MigrationHelpers::LooseForeignKeyHelpers + + enable_lock_retries! + + def up + untrack_record_deletions(:external_pull_requests) + end + + def down + track_record_deletions(:external_pull_requests) + end +end diff --git a/db/post_migrate/20220309084954_remove_leftover_external_pull_request_deletions.rb b/db/post_migrate/20220309084954_remove_leftover_external_pull_request_deletions.rb new file mode 100644 index 00000000000..ea9fd6b28c2 --- /dev/null +++ b/db/post_migrate/20220309084954_remove_leftover_external_pull_request_deletions.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +class RemoveLeftoverExternalPullRequestDeletions < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + def up + # Delete all pending record deletions in the public.external_pull_requests until + # there are no more rows left. + loop do + result = execute <<~SQL + DELETE FROM "loose_foreign_keys_deleted_records" + WHERE + ("loose_foreign_keys_deleted_records"."partition", "loose_foreign_keys_deleted_records"."id") IN ( + SELECT "loose_foreign_keys_deleted_records"."partition", "loose_foreign_keys_deleted_records"."id" + FROM "loose_foreign_keys_deleted_records" + WHERE + "loose_foreign_keys_deleted_records"."fully_qualified_table_name" = 'public.external_pull_requests' AND + "loose_foreign_keys_deleted_records"."status" = 1 + LIMIT 100 + ) + SQL + + break if result.cmd_tuples == 0 + end + end + + def down + # no-op + end +end diff --git a/db/post_migrate/20220309154855_add_index_on_issues_closed_incidents.rb b/db/post_migrate/20220309154855_add_index_on_issues_closed_incidents.rb new file mode 100644 index 00000000000..e9a2c1c85f2 --- /dev/null +++ b/db/post_migrate/20220309154855_add_index_on_issues_closed_incidents.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddIndexOnIssuesClosedIncidents < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + INDEX_NAME = 'index_on_issues_closed_incidents_by_project_id_and_closed_at' + + def up + add_concurrent_index :issues, [:project_id, :closed_at], where: "issue_type = 1 AND state_id = 2", name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :issues, INDEX_NAME + end +end diff --git a/db/post_migrate/20220310095341_add_async_index_ci_job_artifacts_project_id_created_at.rb b/db/post_migrate/20220310095341_add_async_index_ci_job_artifacts_project_id_created_at.rb new file mode 100644 index 00000000000..919e834a783 --- /dev/null +++ b/db/post_migrate/20220310095341_add_async_index_ci_job_artifacts_project_id_created_at.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +# See https://docs.gitlab.com/ee/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class AddAsyncIndexCiJobArtifactsProjectIdCreatedAt < Gitlab::Database::Migration[1.0] + INDEX_NAME = 'index_ci_job_artifacts_on_id_project_id_and_created_at' + + def up + prepare_async_index :ci_job_artifacts, [:project_id, :created_at, :id], name: INDEX_NAME + end + + def down + unprepare_async_index_by_name :ci_job_artifacts, INDEX_NAME + end +end diff --git a/db/post_migrate/20220310134207_add_index_project_id_and_released_at_and_id_on_releases.rb b/db/post_migrate/20220310134207_add_index_project_id_and_released_at_and_id_on_releases.rb new file mode 100644 index 00000000000..da928f3ec8f --- /dev/null +++ b/db/post_migrate/20220310134207_add_index_project_id_and_released_at_and_id_on_releases.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class AddIndexProjectIdAndReleasedAtAndIdOnReleases < Gitlab::Database::Migration[1.0] + INDEX_NAME = 'index_releases_on_project_id_and_released_at_and_id' + + disable_ddl_transaction! + + def up + add_concurrent_index :releases, [:project_id, :released_at, :id], + name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :releases, INDEX_NAME + end +end diff --git a/db/post_migrate/20220310141349_remove_dependency_list_usage_data_from_redis.rb b/db/post_migrate/20220310141349_remove_dependency_list_usage_data_from_redis.rb new file mode 100644 index 00000000000..3c1e6714529 --- /dev/null +++ b/db/post_migrate/20220310141349_remove_dependency_list_usage_data_from_redis.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class RemoveDependencyListUsageDataFromRedis < Gitlab::Database::Migration[1.0] + disable_ddl_transaction! + + def up + Gitlab::Redis::SharedState.with { |r| r.del("DEPENDENCY_LIST_USAGE_COUNTER") } + end + + def down + # no-op + end +end diff --git a/db/post_migrate/20220314162342_add_index_ci_job_artifacts_project_id_created_at.rb b/db/post_migrate/20220314162342_add_index_ci_job_artifacts_project_id_created_at.rb new file mode 100644 index 00000000000..7241fd54cb3 --- /dev/null +++ b/db/post_migrate/20220314162342_add_index_ci_job_artifacts_project_id_created_at.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddIndexCiJobArtifactsProjectIdCreatedAt < Gitlab::Database::Migration[1.0] + INDEX_NAME = 'index_ci_job_artifacts_on_id_project_id_and_created_at' + + disable_ddl_transaction! + + def up + add_concurrent_index :ci_job_artifacts, [:project_id, :created_at, :id], name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :ci_job_artifacts, INDEX_NAME + end +end diff --git a/db/schema_migrations/20210812013042 b/db/schema_migrations/20210812013042 new file mode 100644 index 00000000000..fee1a2b268a --- /dev/null +++ b/db/schema_migrations/20210812013042 @@ -0,0 +1 @@ +0af6e6e56967cef9d1160dbfd95456428337843d893307c69505e1a2d3c2074a
\ No newline at end of file diff --git a/db/schema_migrations/20211007090229 b/db/schema_migrations/20211007090229 new file mode 100644 index 00000000000..9302c958709 --- /dev/null +++ b/db/schema_migrations/20211007090229 @@ -0,0 +1 @@ +9d87052305a552ce380e81a33c690496c44e332eb86869ea6882f5cd4856ab93
\ No newline at end of file diff --git a/db/schema_migrations/20211021115409 b/db/schema_migrations/20211021115409 new file mode 100644 index 00000000000..bcbed298377 --- /dev/null +++ b/db/schema_migrations/20211021115409 @@ -0,0 +1 @@ +93960203e6703716f9c513dca340e17041a33792f9233dc4b7e35d1e19614191
\ No newline at end of file diff --git a/db/schema_migrations/20211021124715 b/db/schema_migrations/20211021124715 new file mode 100644 index 00000000000..2d03c608bac --- /dev/null +++ b/db/schema_migrations/20211021124715 @@ -0,0 +1 @@ +406af18458c7f5ee8a4fa3860ed5fb87c358363926fed2830be8e8a55578822b
\ No newline at end of file diff --git a/db/schema_migrations/20211026070408 b/db/schema_migrations/20211026070408 new file mode 100644 index 00000000000..e48db972388 --- /dev/null +++ b/db/schema_migrations/20211026070408 @@ -0,0 +1 @@ +630899d5a7f833ce0533ae553de89e70bd03fad9b438fd367e3a568261b08b00
\ No newline at end of file diff --git a/db/schema_migrations/20211203160952 b/db/schema_migrations/20211203160952 new file mode 100644 index 00000000000..10d033ef200 --- /dev/null +++ b/db/schema_migrations/20211203160952 @@ -0,0 +1 @@ +f25c65dfcb5b7b4a663cc4c792ffd985f6afd3156036485a5a43a791ee799e7b
\ No newline at end of file diff --git a/db/schema_migrations/20211203161149 b/db/schema_migrations/20211203161149 new file mode 100644 index 00000000000..3f58490a89c --- /dev/null +++ b/db/schema_migrations/20211203161149 @@ -0,0 +1 @@ +01482a299a7dac9d3f786f0dbe4650c686911bf788467146d3e9a91eafd0fc32
\ No newline at end of file diff --git a/db/schema_migrations/20211203161840 b/db/schema_migrations/20211203161840 new file mode 100644 index 00000000000..347bd0f7691 --- /dev/null +++ b/db/schema_migrations/20211203161840 @@ -0,0 +1 @@ +1b895e979ba2f1696559179c46c000e349da2d1ab94c968dd95103f188425103
\ No newline at end of file diff --git a/db/schema_migrations/20211203161942 b/db/schema_migrations/20211203161942 new file mode 100644 index 00000000000..f43c3733392 --- /dev/null +++ b/db/schema_migrations/20211203161942 @@ -0,0 +1 @@ +62432b2679cafa381671c9555f503867c254a7b3734e10cf634b34998d5fb5a3
\ No newline at end of file diff --git a/db/schema_migrations/20220105152547 b/db/schema_migrations/20220105152547 new file mode 100644 index 00000000000..d8c425da736 --- /dev/null +++ b/db/schema_migrations/20220105152547 @@ -0,0 +1 @@ +0f1ea41fae57710e0e05c9b71a14800394c4c57e37a39e92be49c50120d7d2ee
\ No newline at end of file diff --git a/db/schema_migrations/20220105153149 b/db/schema_migrations/20220105153149 new file mode 100644 index 00000000000..11b71946bc8 --- /dev/null +++ b/db/schema_migrations/20220105153149 @@ -0,0 +1 @@ +8194c695a809f2eb29e5033f089c1d20874f61731a4289026f2d550854e7097d
\ No newline at end of file diff --git a/db/schema_migrations/20220120211831 b/db/schema_migrations/20220120211831 new file mode 100644 index 00000000000..7601916df62 --- /dev/null +++ b/db/schema_migrations/20220120211831 @@ -0,0 +1 @@ +68b45f97a2165c934f097ca976fb27ffcb533c57facee95344e3985b5cfd8347
\ No newline at end of file diff --git a/db/schema_migrations/20220120211832 b/db/schema_migrations/20220120211832 new file mode 100644 index 00000000000..ed7679d4573 --- /dev/null +++ b/db/schema_migrations/20220120211832 @@ -0,0 +1 @@ +dd3a4209a72b470a14a3acc5d06db1f5fec67cb4f19b20b2e4d7d94b302fe122
\ No newline at end of file diff --git a/db/schema_migrations/20220124200927 b/db/schema_migrations/20220124200927 new file mode 100644 index 00000000000..ff29cc59538 --- /dev/null +++ b/db/schema_migrations/20220124200927 @@ -0,0 +1 @@ +688232dde01ea4e8574dca73459094264bde405d799ecaf1a5867adb72576b98
\ No newline at end of file diff --git a/db/schema_migrations/20220131000000 b/db/schema_migrations/20220131000000 new file mode 100644 index 00000000000..f80ceb97f1c --- /dev/null +++ b/db/schema_migrations/20220131000000 @@ -0,0 +1 @@ +08326048e15f368f09bc10ebf5bee3e77e8b43813f66c19d24731497ca6a8485
\ No newline at end of file diff --git a/db/schema_migrations/20220131000001 b/db/schema_migrations/20220131000001 new file mode 100644 index 00000000000..72dce62bbce --- /dev/null +++ b/db/schema_migrations/20220131000001 @@ -0,0 +1 @@ +59fe701bcaa102b7e0c1496198fa4aeea6b2e59132c951d1c9d54562c5e3900e
\ No newline at end of file diff --git a/db/schema_migrations/20220203074916 b/db/schema_migrations/20220203074916 new file mode 100644 index 00000000000..fffd0dcc003 --- /dev/null +++ b/db/schema_migrations/20220203074916 @@ -0,0 +1 @@ +5bb52cc70aada72e0e569006fd05de0c0d7629559d78bfd361009c91482f02cf
\ No newline at end of file diff --git a/db/schema_migrations/20220203134942 b/db/schema_migrations/20220203134942 new file mode 100644 index 00000000000..7dea7f1f0e7 --- /dev/null +++ b/db/schema_migrations/20220203134942 @@ -0,0 +1 @@ +02f7a38c7bc19b1a266ac1f1d6631f1922fc135518baeb19ee90bebd7c31c6b9
\ No newline at end of file diff --git a/db/schema_migrations/20220204093120 b/db/schema_migrations/20220204093120 new file mode 100644 index 00000000000..debd48e3c5f --- /dev/null +++ b/db/schema_migrations/20220204093120 @@ -0,0 +1 @@ +e147a8281f98ee397d7d9b652ce21b943e4e87c11fca906b72db839e0e2fa360
\ No newline at end of file diff --git a/db/schema_migrations/20220204110725 b/db/schema_migrations/20220204110725 new file mode 100644 index 00000000000..804dc8c6d54 --- /dev/null +++ b/db/schema_migrations/20220204110725 @@ -0,0 +1 @@ +c87ca83f592c6688c31182fcd4cf6fe282c00a3c92ebe245b66455f57b50fc32
\ No newline at end of file diff --git a/db/schema_migrations/20220204193000 b/db/schema_migrations/20220204193000 new file mode 100644 index 00000000000..f0d16b9671c --- /dev/null +++ b/db/schema_migrations/20220204193000 @@ -0,0 +1 @@ +9d98618a1e9fd0474c45ac54420fc64a1d90ad77f36be594337e5b117fccdadb
\ No newline at end of file diff --git a/db/schema_migrations/20220204194347 b/db/schema_migrations/20220204194347 new file mode 100644 index 00000000000..d506497e036 --- /dev/null +++ b/db/schema_migrations/20220204194347 @@ -0,0 +1 @@ +1593e935601ae1f2ab788109687bb40bad026f3f425339a39c8d13d3e4c7e306
\ No newline at end of file diff --git a/db/schema_migrations/20220207080758 b/db/schema_migrations/20220207080758 new file mode 100644 index 00000000000..d4adf5ad455 --- /dev/null +++ b/db/schema_migrations/20220207080758 @@ -0,0 +1 @@ +f63be8bd42cc1856c92f9073fdb39c58c45806b483d38b91db007a8661c49a97
\ No newline at end of file diff --git a/db/schema_migrations/20220208080921 b/db/schema_migrations/20220208080921 new file mode 100644 index 00000000000..ecf35389390 --- /dev/null +++ b/db/schema_migrations/20220208080921 @@ -0,0 +1 @@ +84346c2f608792f259ab91dbc2c8aac8397a2997f890f8e077aad809276bb7cd
\ No newline at end of file diff --git a/db/schema_migrations/20220211090920 b/db/schema_migrations/20220211090920 new file mode 100644 index 00000000000..1f08b66e508 --- /dev/null +++ b/db/schema_migrations/20220211090920 @@ -0,0 +1 @@ +644d38e401ac8179777cb9d3c5fefca2fb55e0c409197bb2d222f7e96e5dd42f
\ No newline at end of file diff --git a/db/schema_migrations/20220211125954 b/db/schema_migrations/20220211125954 new file mode 100644 index 00000000000..5f0bb009254 --- /dev/null +++ b/db/schema_migrations/20220211125954 @@ -0,0 +1 @@ +73feefe409b9c0f4ea373d0c3f13690df0086fbc4fc212595e959ad65fcc27b1
\ No newline at end of file diff --git a/db/schema_migrations/20220215164709 b/db/schema_migrations/20220215164709 new file mode 100644 index 00000000000..60179eaeddd --- /dev/null +++ b/db/schema_migrations/20220215164709 @@ -0,0 +1 @@ +af6d142b77bc2787a520f8cbc63c287823a7a65a2edb3eb488e4f0f4efde9fa8
\ No newline at end of file diff --git a/db/schema_migrations/20220215190020 b/db/schema_migrations/20220215190020 new file mode 100644 index 00000000000..1d5be90ca1f --- /dev/null +++ b/db/schema_migrations/20220215190020 @@ -0,0 +1 @@ +aa92afc5f74f051132aeb73889d7360bbd6258b27c0aedb4fea6a44ccce597b3
\ No newline at end of file diff --git a/db/schema_migrations/20220216110023 b/db/schema_migrations/20220216110023 new file mode 100644 index 00000000000..30acd6fdaf2 --- /dev/null +++ b/db/schema_migrations/20220216110023 @@ -0,0 +1 @@ +5931c4981c89d65c5aaca05dc8375c2c21bb595e28354d6623986d906ece165d
\ No newline at end of file diff --git a/db/schema_migrations/20220216201949 b/db/schema_migrations/20220216201949 new file mode 100644 index 00000000000..466da69ad0e --- /dev/null +++ b/db/schema_migrations/20220216201949 @@ -0,0 +1 @@ +481bc7b167ddf46bd11322e4458e48de10483bf34d0e393f7e76a3572c28e09f
\ No newline at end of file diff --git a/db/schema_migrations/20220217100008 b/db/schema_migrations/20220217100008 new file mode 100644 index 00000000000..6347388a5ce --- /dev/null +++ b/db/schema_migrations/20220217100008 @@ -0,0 +1 @@ +f52d88262879c40d9ac60a74853b7070036f244fd5f7957c59bbfceb343811d1
\ No newline at end of file diff --git a/db/schema_migrations/20220217113058 b/db/schema_migrations/20220217113058 new file mode 100644 index 00000000000..ef801a0e269 --- /dev/null +++ b/db/schema_migrations/20220217113058 @@ -0,0 +1 @@ +d2d236e9ee5fa6e9c1ee97431543e871b78e469b812444bd9386dfecf849947b
\ No newline at end of file diff --git a/db/schema_migrations/20220217135229 b/db/schema_migrations/20220217135229 new file mode 100644 index 00000000000..fb80b77347f --- /dev/null +++ b/db/schema_migrations/20220217135229 @@ -0,0 +1 @@ +3223f741799216ee6afb4daafbcebfa09bd722d461dd4d64fcbda7d8700ae235
\ No newline at end of file diff --git a/db/schema_migrations/20220221102333 b/db/schema_migrations/20220221102333 new file mode 100644 index 00000000000..dfc13fd28a0 --- /dev/null +++ b/db/schema_migrations/20220221102333 @@ -0,0 +1 @@ +7aa2cf28363e914ad83c61d45321f701a68111122c75abeb54430c4035d56677
\ No newline at end of file diff --git a/db/schema_migrations/20220221214928 b/db/schema_migrations/20220221214928 new file mode 100644 index 00000000000..5c32b3fbd96 --- /dev/null +++ b/db/schema_migrations/20220221214928 @@ -0,0 +1 @@ +8c9936d1c0f728c2b40dca536f9edb40f4af94a274ccf1dbec984f218710f695
\ No newline at end of file diff --git a/db/schema_migrations/20220222072536 b/db/schema_migrations/20220222072536 new file mode 100644 index 00000000000..6a4b4f76dda --- /dev/null +++ b/db/schema_migrations/20220222072536 @@ -0,0 +1 @@ +d7ddc369818f0a2403abefea2ac1da5abd1ca41199d3948166f10dfdf9d2fa9d
\ No newline at end of file diff --git a/db/schema_migrations/20220222191845 b/db/schema_migrations/20220222191845 new file mode 100644 index 00000000000..88c15bc87c0 --- /dev/null +++ b/db/schema_migrations/20220222191845 @@ -0,0 +1 @@ +c528d64cafc072554cd1ef1006a1c359a3135896abae2d5ca20fbbc99ff14f8c
\ No newline at end of file diff --git a/db/schema_migrations/20220222192524 b/db/schema_migrations/20220222192524 new file mode 100644 index 00000000000..c49e45f0d61 --- /dev/null +++ b/db/schema_migrations/20220222192524 @@ -0,0 +1 @@ +b876119bb369a9831736cddf5326b72a74003ec2e17fe863654cb69497fcf236
\ No newline at end of file diff --git a/db/schema_migrations/20220222192525 b/db/schema_migrations/20220222192525 new file mode 100644 index 00000000000..6eeec13bbb5 --- /dev/null +++ b/db/schema_migrations/20220222192525 @@ -0,0 +1 @@ +f512ea4c4a2625c647c3d05765152fee963b56962b674f839180fd77c194ccb0
\ No newline at end of file diff --git a/db/schema_migrations/20220223112304 b/db/schema_migrations/20220223112304 new file mode 100644 index 00000000000..bfcbf9c1225 --- /dev/null +++ b/db/schema_migrations/20220223112304 @@ -0,0 +1 @@ +57dc23bb2a9faddefe20c1e30a8879ebb1f6f32f17e3cc381acc1d06ad3b598a
\ No newline at end of file diff --git a/db/schema_migrations/20220224000000 b/db/schema_migrations/20220224000000 new file mode 100644 index 00000000000..e6e9aefbabb --- /dev/null +++ b/db/schema_migrations/20220224000000 @@ -0,0 +1 @@ +74b4d572118b7f5da0a80722601a4757ce47ccbdae1af1e84b2304343477d634
\ No newline at end of file diff --git a/db/schema_migrations/20220224204415 b/db/schema_migrations/20220224204415 new file mode 100644 index 00000000000..e0faa994b54 --- /dev/null +++ b/db/schema_migrations/20220224204415 @@ -0,0 +1 @@ +1d7105559c8d2da1d86c5625c592edc792d7cd729b8c86c7a2b950c3dd98e975
\ No newline at end of file diff --git a/db/schema_migrations/20220225133705 b/db/schema_migrations/20220225133705 new file mode 100644 index 00000000000..97f27e748e0 --- /dev/null +++ b/db/schema_migrations/20220225133705 @@ -0,0 +1 @@ +aa9ab05f6991f06c465fbc4878e0cbc648dc09b1b7912dbbf3dd68887a9cdd1d
\ No newline at end of file diff --git a/db/schema_migrations/20220301002101 b/db/schema_migrations/20220301002101 new file mode 100644 index 00000000000..ab8f76b3bbb --- /dev/null +++ b/db/schema_migrations/20220301002101 @@ -0,0 +1 @@ +a19f7f5026fd91cf6f3fcadccd19808920e64005c207b57b46955a0352a68366
\ No newline at end of file diff --git a/db/schema_migrations/20220301003502 b/db/schema_migrations/20220301003502 new file mode 100644 index 00000000000..5a2a9ee8334 --- /dev/null +++ b/db/schema_migrations/20220301003502 @@ -0,0 +1 @@ +bbca8df8e60c8d027f672dfdee2b0edef35f4fdc3152ae98450df67633f3998f
\ No newline at end of file diff --git a/db/schema_migrations/20220301091503 b/db/schema_migrations/20220301091503 new file mode 100644 index 00000000000..49184ad4262 --- /dev/null +++ b/db/schema_migrations/20220301091503 @@ -0,0 +1 @@ +4a05ddbc3d2a52a719c6fda8d834611be6f663fbce97b42655a00583d0e2042a
\ No newline at end of file diff --git a/db/schema_migrations/20220301093434 b/db/schema_migrations/20220301093434 new file mode 100644 index 00000000000..78886cc9df4 --- /dev/null +++ b/db/schema_migrations/20220301093434 @@ -0,0 +1 @@ +ffdd031395c025ea63ea1adcd63636822e62388a8860c93235f3748918fc30ca
\ No newline at end of file diff --git a/db/schema_migrations/20220301175104 b/db/schema_migrations/20220301175104 new file mode 100644 index 00000000000..2553c957576 --- /dev/null +++ b/db/schema_migrations/20220301175104 @@ -0,0 +1 @@ +52e172b1ca6e21a6864e82597a7aae6e1c4776507a475a88807ec140b8648966
\ No newline at end of file diff --git a/db/schema_migrations/20220301175426 b/db/schema_migrations/20220301175426 new file mode 100644 index 00000000000..6a11d9b04b8 --- /dev/null +++ b/db/schema_migrations/20220301175426 @@ -0,0 +1 @@ +d0a8daf9fb9892fc92b03f13de4d7e470e5c54f03b09f887cdd45bc5eb9a7e37
\ No newline at end of file diff --git a/db/schema_migrations/20220302203410 b/db/schema_migrations/20220302203410 new file mode 100644 index 00000000000..70326d38a97 --- /dev/null +++ b/db/schema_migrations/20220302203410 @@ -0,0 +1 @@ +873aac965684e58cfdb6098b20891cbb73614aff833f235d76bfd379498f6fda
\ No newline at end of file diff --git a/db/schema_migrations/20220303190555 b/db/schema_migrations/20220303190555 new file mode 100644 index 00000000000..08db64ca2a4 --- /dev/null +++ b/db/schema_migrations/20220303190555 @@ -0,0 +1 @@ +f8fa8b83da24bf98c97447a2940c8ca801532c80395b6a65c11f83515f811652
\ No newline at end of file diff --git a/db/schema_migrations/20220303191047 b/db/schema_migrations/20220303191047 new file mode 100644 index 00000000000..6e933c08f6b --- /dev/null +++ b/db/schema_migrations/20220303191047 @@ -0,0 +1 @@ +19566152e16a92263dd5dcfd66299e3b9d8b82acd4edb4bba21f6b9b06fc8070
\ No newline at end of file diff --git a/db/schema_migrations/20220304052335 b/db/schema_migrations/20220304052335 new file mode 100644 index 00000000000..5716ea07f7d --- /dev/null +++ b/db/schema_migrations/20220304052335 @@ -0,0 +1 @@ +ba2bae8d9561eeab907ecf30664a593bdf93ab1041453f93794bf0be4464e92c
\ No newline at end of file diff --git a/db/schema_migrations/20220304061631 b/db/schema_migrations/20220304061631 new file mode 100644 index 00000000000..d7b38b30f9f --- /dev/null +++ b/db/schema_migrations/20220304061631 @@ -0,0 +1 @@ +7394be90999876473cfe39c38e72f21c7bb36a5038300d6fe1354f15f3d77e21
\ No newline at end of file diff --git a/db/schema_migrations/20220304062107 b/db/schema_migrations/20220304062107 new file mode 100644 index 00000000000..9ea552c6a9e --- /dev/null +++ b/db/schema_migrations/20220304062107 @@ -0,0 +1 @@ +a9aace14f847412c2af03cc6de61616a0f48d32d0fd24b25f6b1f85513c87139
\ No newline at end of file diff --git a/db/schema_migrations/20220304152729 b/db/schema_migrations/20220304152729 new file mode 100644 index 00000000000..021d4e5ad27 --- /dev/null +++ b/db/schema_migrations/20220304152729 @@ -0,0 +1 @@ +483f8299688a6e24fa77867b7dab8a2dad0c2b7ebe43c56c81c02ab1e0dc4674
\ No newline at end of file diff --git a/db/schema_migrations/20220304165107 b/db/schema_migrations/20220304165107 new file mode 100644 index 00000000000..6db7aee6b0f --- /dev/null +++ b/db/schema_migrations/20220304165107 @@ -0,0 +1 @@ +b7090327d2638bbee6646e5ca5a8f8597d97631f10f997698b8a1c1b6329c106
\ No newline at end of file diff --git a/db/schema_migrations/20220304201847 b/db/schema_migrations/20220304201847 new file mode 100644 index 00000000000..1dafb1b821e --- /dev/null +++ b/db/schema_migrations/20220304201847 @@ -0,0 +1 @@ +d60a313ac68b0edfe1ae219690aacbe74c038b90bc4239f67d14f9ced36d67f6
\ No newline at end of file diff --git a/db/schema_migrations/20220305223212 b/db/schema_migrations/20220305223212 new file mode 100644 index 00000000000..b8adc88a760 --- /dev/null +++ b/db/schema_migrations/20220305223212 @@ -0,0 +1 @@ +8a0e80b6df1d942e5ec23641c935103cddd96c044e2a960b88bb38284cf4d070
\ No newline at end of file diff --git a/db/schema_migrations/20220307192534 b/db/schema_migrations/20220307192534 new file mode 100644 index 00000000000..cf6687d88ea --- /dev/null +++ b/db/schema_migrations/20220307192534 @@ -0,0 +1 @@ +b8adcc6d7dc76fd18037de9b2b204e7db8803564df19cbd59f928901c8d97b9c
\ No newline at end of file diff --git a/db/schema_migrations/20220307192610 b/db/schema_migrations/20220307192610 new file mode 100644 index 00000000000..17575dc7174 --- /dev/null +++ b/db/schema_migrations/20220307192610 @@ -0,0 +1 @@ +3dd34a92230e36fe1e9761ce39e4edb2a3289c972ce56347e87d8e36818e46d1
\ No newline at end of file diff --git a/db/schema_migrations/20220307192645 b/db/schema_migrations/20220307192645 new file mode 100644 index 00000000000..913bbbf5c96 --- /dev/null +++ b/db/schema_migrations/20220307192645 @@ -0,0 +1 @@ +c31db54f15cff7b21272cc2e9e962419ba4422582c227c5af4131fe56c1fc9f8
\ No newline at end of file diff --git a/db/schema_migrations/20220307192725 b/db/schema_migrations/20220307192725 new file mode 100644 index 00000000000..1611c196a57 --- /dev/null +++ b/db/schema_migrations/20220307192725 @@ -0,0 +1 @@ +d1761614c3ac0e8bd33eff58134091ec6c1834ecde3e47290a80da45ab207923
\ No newline at end of file diff --git a/db/schema_migrations/20220307203458 b/db/schema_migrations/20220307203458 new file mode 100644 index 00000000000..3063be46503 --- /dev/null +++ b/db/schema_migrations/20220307203458 @@ -0,0 +1 @@ +d4bf5f7c695c9833a07722d724b7a6363f0ebcb7f6d8a15bcf8148bdae5e1b32
\ No newline at end of file diff --git a/db/schema_migrations/20220307203459 b/db/schema_migrations/20220307203459 new file mode 100644 index 00000000000..2220fd3cb61 --- /dev/null +++ b/db/schema_migrations/20220307203459 @@ -0,0 +1 @@ +74f6687c0793a2596467338d8b4904bef712e6ff3ad3561e3ab2546eed5cd24d
\ No newline at end of file diff --git a/db/schema_migrations/20220308000205 b/db/schema_migrations/20220308000205 new file mode 100644 index 00000000000..27caf959eb9 --- /dev/null +++ b/db/schema_migrations/20220308000205 @@ -0,0 +1 @@ +c30b1b36ec83df1b4fdf0c3c28656b158beab4f2188875898182c2dfbd073c80
\ No newline at end of file diff --git a/db/schema_migrations/20220308115219 b/db/schema_migrations/20220308115219 new file mode 100644 index 00000000000..6e55d2fdabe --- /dev/null +++ b/db/schema_migrations/20220308115219 @@ -0,0 +1 @@ +e18ed9e6b2a98c77190ff2ce33f4d2b1984710b438e851d6a526ec8bb1f33c80
\ No newline at end of file diff --git a/db/schema_migrations/20220308115502 b/db/schema_migrations/20220308115502 new file mode 100644 index 00000000000..c379b67485c --- /dev/null +++ b/db/schema_migrations/20220308115502 @@ -0,0 +1 @@ +0aacf46a4a5b430a718336108f52c1c0bed4283846f36c2ab1de80100dcae0b4
\ No newline at end of file diff --git a/db/schema_migrations/20220309084838 b/db/schema_migrations/20220309084838 new file mode 100644 index 00000000000..ba0ae90a3cf --- /dev/null +++ b/db/schema_migrations/20220309084838 @@ -0,0 +1 @@ +d9d17f94f54840eace48f210e3886423a8dc04109f2ebca8d8edb7d53e0b5688
\ No newline at end of file diff --git a/db/schema_migrations/20220309084954 b/db/schema_migrations/20220309084954 new file mode 100644 index 00000000000..944a1385fe7 --- /dev/null +++ b/db/schema_migrations/20220309084954 @@ -0,0 +1 @@ +6d9c5454372317955c4e16b5a02dece575221f15af60c33df45fffbca169c08c
\ No newline at end of file diff --git a/db/schema_migrations/20220309100648 b/db/schema_migrations/20220309100648 new file mode 100644 index 00000000000..a0697655d9a --- /dev/null +++ b/db/schema_migrations/20220309100648 @@ -0,0 +1 @@ +3385dc0dc2a3d306e01a719b7a21197ea8468976d37abab932beade4780bb4ff
\ No newline at end of file diff --git a/db/schema_migrations/20220309154855 b/db/schema_migrations/20220309154855 new file mode 100644 index 00000000000..01500ce5863 --- /dev/null +++ b/db/schema_migrations/20220309154855 @@ -0,0 +1 @@ +9e62675366f9c2f0fc159a9748409dbcaea240c813ab19ea26d24c966e5fd6c8
\ No newline at end of file diff --git a/db/schema_migrations/20220310095341 b/db/schema_migrations/20220310095341 new file mode 100644 index 00000000000..d52763cce63 --- /dev/null +++ b/db/schema_migrations/20220310095341 @@ -0,0 +1 @@ +56d906eac31954988bd0659eabbc9f1bad1a47dd616fb99e4b90b56b2bf4c6a0
\ No newline at end of file diff --git a/db/schema_migrations/20220310101118 b/db/schema_migrations/20220310101118 new file mode 100644 index 00000000000..c87f727c8b9 --- /dev/null +++ b/db/schema_migrations/20220310101118 @@ -0,0 +1 @@ +e4d6111f19f05b42b51e8d066e221205460514cef88ecf15ca99aa59788c4153
\ No newline at end of file diff --git a/db/schema_migrations/20220310134207 b/db/schema_migrations/20220310134207 new file mode 100644 index 00000000000..3ba08608acc --- /dev/null +++ b/db/schema_migrations/20220310134207 @@ -0,0 +1 @@ +951abe39e4735f0f71ac6ad1701ffa8688dfd82a59b0383d6c55cef8f6de8e7f
\ No newline at end of file diff --git a/db/schema_migrations/20220310141349 b/db/schema_migrations/20220310141349 new file mode 100644 index 00000000000..d52b2d997a4 --- /dev/null +++ b/db/schema_migrations/20220310141349 @@ -0,0 +1 @@ +39785d4140c7345ddbe62417576381654ce22d505ee5c92a84425f0a3f8e4935
\ No newline at end of file diff --git a/db/schema_migrations/20220314162342 b/db/schema_migrations/20220314162342 new file mode 100644 index 00000000000..8ee5a80c256 --- /dev/null +++ b/db/schema_migrations/20220314162342 @@ -0,0 +1 @@ +7992448797888fd69d1e5cd4f2602e5a2b49a57052c50b19522f37d711c9f2f2
\ No newline at end of file diff --git a/db/schema_migrations/20220314194149 b/db/schema_migrations/20220314194149 new file mode 100644 index 00000000000..ce025684084 --- /dev/null +++ b/db/schema_migrations/20220314194149 @@ -0,0 +1 @@ +2dad53754682d9d4e8338978336807255503746b82795afb812b3b65b7335ca8
\ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index aef55d04486..8d1679b3832 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -1169,6 +1169,591 @@ CREATE TABLE gitlab_partitions_static.analytics_cycle_analytics_merge_request_st ); ALTER TABLE ONLY analytics_cycle_analytics_merge_request_stage_events ATTACH PARTITION gitlab_partitions_static.analytics_cycle_analytics_merge_request_stage_events_31 FOR VALUES WITH (modulus 32, remainder 31); +CREATE TABLE issue_search_data ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +) +PARTITION BY HASH (project_id); + +CREATE TABLE gitlab_partitions_static.issue_search_data_00 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_00 FOR VALUES WITH (modulus 64, remainder 0); + +CREATE TABLE gitlab_partitions_static.issue_search_data_01 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_01 FOR VALUES WITH (modulus 64, remainder 1); + +CREATE TABLE gitlab_partitions_static.issue_search_data_02 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_02 FOR VALUES WITH (modulus 64, remainder 2); + +CREATE TABLE gitlab_partitions_static.issue_search_data_03 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_03 FOR VALUES WITH (modulus 64, remainder 3); + +CREATE TABLE gitlab_partitions_static.issue_search_data_04 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_04 FOR VALUES WITH (modulus 64, remainder 4); + +CREATE TABLE gitlab_partitions_static.issue_search_data_05 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_05 FOR VALUES WITH (modulus 64, remainder 5); + +CREATE TABLE gitlab_partitions_static.issue_search_data_06 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_06 FOR VALUES WITH (modulus 64, remainder 6); + +CREATE TABLE gitlab_partitions_static.issue_search_data_07 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_07 FOR VALUES WITH (modulus 64, remainder 7); + +CREATE TABLE gitlab_partitions_static.issue_search_data_08 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_08 FOR VALUES WITH (modulus 64, remainder 8); + +CREATE TABLE gitlab_partitions_static.issue_search_data_09 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_09 FOR VALUES WITH (modulus 64, remainder 9); + +CREATE TABLE gitlab_partitions_static.issue_search_data_10 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_10 FOR VALUES WITH (modulus 64, remainder 10); + +CREATE TABLE gitlab_partitions_static.issue_search_data_11 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_11 FOR VALUES WITH (modulus 64, remainder 11); + +CREATE TABLE gitlab_partitions_static.issue_search_data_12 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_12 FOR VALUES WITH (modulus 64, remainder 12); + +CREATE TABLE gitlab_partitions_static.issue_search_data_13 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_13 FOR VALUES WITH (modulus 64, remainder 13); + +CREATE TABLE gitlab_partitions_static.issue_search_data_14 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_14 FOR VALUES WITH (modulus 64, remainder 14); + +CREATE TABLE gitlab_partitions_static.issue_search_data_15 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_15 FOR VALUES WITH (modulus 64, remainder 15); + +CREATE TABLE gitlab_partitions_static.issue_search_data_16 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_16 FOR VALUES WITH (modulus 64, remainder 16); + +CREATE TABLE gitlab_partitions_static.issue_search_data_17 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_17 FOR VALUES WITH (modulus 64, remainder 17); + +CREATE TABLE gitlab_partitions_static.issue_search_data_18 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_18 FOR VALUES WITH (modulus 64, remainder 18); + +CREATE TABLE gitlab_partitions_static.issue_search_data_19 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_19 FOR VALUES WITH (modulus 64, remainder 19); + +CREATE TABLE gitlab_partitions_static.issue_search_data_20 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_20 FOR VALUES WITH (modulus 64, remainder 20); + +CREATE TABLE gitlab_partitions_static.issue_search_data_21 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_21 FOR VALUES WITH (modulus 64, remainder 21); + +CREATE TABLE gitlab_partitions_static.issue_search_data_22 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_22 FOR VALUES WITH (modulus 64, remainder 22); + +CREATE TABLE gitlab_partitions_static.issue_search_data_23 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_23 FOR VALUES WITH (modulus 64, remainder 23); + +CREATE TABLE gitlab_partitions_static.issue_search_data_24 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_24 FOR VALUES WITH (modulus 64, remainder 24); + +CREATE TABLE gitlab_partitions_static.issue_search_data_25 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_25 FOR VALUES WITH (modulus 64, remainder 25); + +CREATE TABLE gitlab_partitions_static.issue_search_data_26 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_26 FOR VALUES WITH (modulus 64, remainder 26); + +CREATE TABLE gitlab_partitions_static.issue_search_data_27 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_27 FOR VALUES WITH (modulus 64, remainder 27); + +CREATE TABLE gitlab_partitions_static.issue_search_data_28 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_28 FOR VALUES WITH (modulus 64, remainder 28); + +CREATE TABLE gitlab_partitions_static.issue_search_data_29 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_29 FOR VALUES WITH (modulus 64, remainder 29); + +CREATE TABLE gitlab_partitions_static.issue_search_data_30 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_30 FOR VALUES WITH (modulus 64, remainder 30); + +CREATE TABLE gitlab_partitions_static.issue_search_data_31 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_31 FOR VALUES WITH (modulus 64, remainder 31); + +CREATE TABLE gitlab_partitions_static.issue_search_data_32 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_32 FOR VALUES WITH (modulus 64, remainder 32); + +CREATE TABLE gitlab_partitions_static.issue_search_data_33 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_33 FOR VALUES WITH (modulus 64, remainder 33); + +CREATE TABLE gitlab_partitions_static.issue_search_data_34 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_34 FOR VALUES WITH (modulus 64, remainder 34); + +CREATE TABLE gitlab_partitions_static.issue_search_data_35 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_35 FOR VALUES WITH (modulus 64, remainder 35); + +CREATE TABLE gitlab_partitions_static.issue_search_data_36 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_36 FOR VALUES WITH (modulus 64, remainder 36); + +CREATE TABLE gitlab_partitions_static.issue_search_data_37 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_37 FOR VALUES WITH (modulus 64, remainder 37); + +CREATE TABLE gitlab_partitions_static.issue_search_data_38 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_38 FOR VALUES WITH (modulus 64, remainder 38); + +CREATE TABLE gitlab_partitions_static.issue_search_data_39 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_39 FOR VALUES WITH (modulus 64, remainder 39); + +CREATE TABLE gitlab_partitions_static.issue_search_data_40 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_40 FOR VALUES WITH (modulus 64, remainder 40); + +CREATE TABLE gitlab_partitions_static.issue_search_data_41 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_41 FOR VALUES WITH (modulus 64, remainder 41); + +CREATE TABLE gitlab_partitions_static.issue_search_data_42 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_42 FOR VALUES WITH (modulus 64, remainder 42); + +CREATE TABLE gitlab_partitions_static.issue_search_data_43 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_43 FOR VALUES WITH (modulus 64, remainder 43); + +CREATE TABLE gitlab_partitions_static.issue_search_data_44 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_44 FOR VALUES WITH (modulus 64, remainder 44); + +CREATE TABLE gitlab_partitions_static.issue_search_data_45 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_45 FOR VALUES WITH (modulus 64, remainder 45); + +CREATE TABLE gitlab_partitions_static.issue_search_data_46 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_46 FOR VALUES WITH (modulus 64, remainder 46); + +CREATE TABLE gitlab_partitions_static.issue_search_data_47 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_47 FOR VALUES WITH (modulus 64, remainder 47); + +CREATE TABLE gitlab_partitions_static.issue_search_data_48 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_48 FOR VALUES WITH (modulus 64, remainder 48); + +CREATE TABLE gitlab_partitions_static.issue_search_data_49 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_49 FOR VALUES WITH (modulus 64, remainder 49); + +CREATE TABLE gitlab_partitions_static.issue_search_data_50 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_50 FOR VALUES WITH (modulus 64, remainder 50); + +CREATE TABLE gitlab_partitions_static.issue_search_data_51 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_51 FOR VALUES WITH (modulus 64, remainder 51); + +CREATE TABLE gitlab_partitions_static.issue_search_data_52 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_52 FOR VALUES WITH (modulus 64, remainder 52); + +CREATE TABLE gitlab_partitions_static.issue_search_data_53 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_53 FOR VALUES WITH (modulus 64, remainder 53); + +CREATE TABLE gitlab_partitions_static.issue_search_data_54 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_54 FOR VALUES WITH (modulus 64, remainder 54); + +CREATE TABLE gitlab_partitions_static.issue_search_data_55 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_55 FOR VALUES WITH (modulus 64, remainder 55); + +CREATE TABLE gitlab_partitions_static.issue_search_data_56 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_56 FOR VALUES WITH (modulus 64, remainder 56); + +CREATE TABLE gitlab_partitions_static.issue_search_data_57 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_57 FOR VALUES WITH (modulus 64, remainder 57); + +CREATE TABLE gitlab_partitions_static.issue_search_data_58 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_58 FOR VALUES WITH (modulus 64, remainder 58); + +CREATE TABLE gitlab_partitions_static.issue_search_data_59 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_59 FOR VALUES WITH (modulus 64, remainder 59); + +CREATE TABLE gitlab_partitions_static.issue_search_data_60 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_60 FOR VALUES WITH (modulus 64, remainder 60); + +CREATE TABLE gitlab_partitions_static.issue_search_data_61 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_61 FOR VALUES WITH (modulus 64, remainder 61); + +CREATE TABLE gitlab_partitions_static.issue_search_data_62 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_62 FOR VALUES WITH (modulus 64, remainder 62); + +CREATE TABLE gitlab_partitions_static.issue_search_data_63 ( + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone DEFAULT now() NOT NULL, + updated_at timestamp with time zone DEFAULT now() NOT NULL, + search_vector tsvector +); +ALTER TABLE ONLY issue_search_data ATTACH PARTITION gitlab_partitions_static.issue_search_data_63 FOR VALUES WITH (modulus 64, remainder 63); + CREATE TABLE product_analytics_events_experimental ( id bigint NOT NULL, project_id integer NOT NULL, @@ -10036,6 +10621,30 @@ CREATE SEQUENCE allowed_email_domains_id_seq ALTER SEQUENCE allowed_email_domains_id_seq OWNED BY allowed_email_domains.id; +CREATE TABLE analytics_cycle_analytics_aggregations ( + group_id bigint NOT NULL, + incremental_runtimes_in_seconds integer[] DEFAULT '{}'::integer[] NOT NULL, + incremental_processed_records integer[] DEFAULT '{}'::integer[] NOT NULL, + last_full_run_runtimes_in_seconds integer[] DEFAULT '{}'::integer[] NOT NULL, + last_full_run_processed_records integer[] DEFAULT '{}'::integer[] NOT NULL, + last_incremental_issues_id integer, + last_incremental_merge_requests_id integer, + last_full_run_issues_id integer, + last_full_run_merge_requests_id integer, + last_incremental_run_at timestamp with time zone, + last_incremental_issues_updated_at timestamp with time zone, + last_incremental_merge_requests_updated_at timestamp with time zone, + last_full_run_at timestamp with time zone, + last_full_run_issues_updated_at timestamp with time zone, + last_full_run_mrs_updated_at timestamp with time zone, + last_consistency_check_updated_at timestamp with time zone, + enabled boolean DEFAULT true NOT NULL, + CONSTRAINT chk_rails_1ef688e577 CHECK ((cardinality(incremental_runtimes_in_seconds) <= 10)), + CONSTRAINT chk_rails_7810292ec9 CHECK ((cardinality(last_full_run_processed_records) <= 10)), + CONSTRAINT chk_rails_8b9e89687c CHECK ((cardinality(last_full_run_runtimes_in_seconds) <= 10)), + CONSTRAINT chk_rails_e16bf3913a CHECK ((cardinality(incremental_processed_records) <= 10)) +); + CREATE TABLE analytics_cycle_analytics_group_stages ( id bigint NOT NULL, created_at timestamp with time zone NOT NULL, @@ -10167,7 +10776,7 @@ CREATE TABLE analytics_devops_adoption_snapshots ( runner_configured boolean NOT NULL, pipeline_succeeded boolean NOT NULL, deploy_succeeded boolean NOT NULL, - security_scan_succeeded boolean NOT NULL, + security_scan_succeeded boolean, end_time timestamp with time zone NOT NULL, total_projects_count integer, code_owners_used_count integer, @@ -10528,7 +11137,7 @@ CREATE TABLE application_settings ( automatic_purchased_storage_allocation boolean DEFAULT false NOT NULL, encrypted_ci_jwt_signing_key text, encrypted_ci_jwt_signing_key_iv text, - container_registry_expiration_policies_worker_capacity integer DEFAULT 0 NOT NULL, + container_registry_expiration_policies_worker_capacity integer DEFAULT 4 NOT NULL, elasticsearch_analyzers_smartcn_enabled boolean DEFAULT false NOT NULL, elasticsearch_analyzers_smartcn_search boolean DEFAULT false NOT NULL, elasticsearch_analyzers_kuromoji_enabled boolean DEFAULT false NOT NULL, @@ -10634,7 +11243,6 @@ CREATE TABLE application_settings ( container_registry_import_max_step_duration integer DEFAULT 300 NOT NULL, container_registry_import_target_plan text DEFAULT 'free'::text NOT NULL, container_registry_import_created_before timestamp with time zone DEFAULT '2022-01-23 00:00:00+00'::timestamp with time zone NOT NULL, - max_package_files_for_package_destruction smallint DEFAULT 100 NOT NULL, runner_token_expiration_interval integer, group_runner_token_expiration_interval integer, project_runner_token_expiration_interval integer, @@ -10642,10 +11250,12 @@ CREATE TABLE application_settings ( ed25519_sk_key_restriction integer DEFAULT 0 NOT NULL, users_get_by_id_limit integer DEFAULT 300 NOT NULL, users_get_by_id_limit_allowlist text[] DEFAULT '{}'::text[] NOT NULL, + container_registry_expiration_policies_caching boolean DEFAULT true NOT NULL, + search_rate_limit integer DEFAULT 30 NOT NULL, + search_rate_limit_unauthenticated integer DEFAULT 10 NOT NULL, CONSTRAINT app_settings_container_reg_cleanup_tags_max_list_size_positive CHECK ((container_registry_cleanup_tags_service_max_list_size >= 0)), CONSTRAINT app_settings_dep_proxy_ttl_policies_worker_capacity_positive CHECK ((dependency_proxy_ttl_group_policy_worker_capacity >= 0)), CONSTRAINT app_settings_ext_pipeline_validation_service_url_text_limit CHECK ((char_length(external_pipeline_validation_service_url) <= 255)), - CONSTRAINT app_settings_max_package_files_for_package_destruction_positive CHECK ((max_package_files_for_package_destruction > 0)), CONSTRAINT app_settings_p_cleanup_package_file_worker_capacity_positive CHECK ((packages_cleanup_package_file_worker_capacity >= 0)), CONSTRAINT app_settings_registry_exp_policies_worker_capacity_positive CHECK ((container_registry_expiration_policies_worker_capacity >= 0)), CONSTRAINT app_settings_yaml_max_depth_positive CHECK ((max_yaml_depth > 0)), @@ -11364,7 +11974,8 @@ CREATE TABLE broadcast_messages ( cached_markdown_version integer, target_path character varying(255), broadcast_type smallint DEFAULT 1 NOT NULL, - dismissable boolean + dismissable boolean, + target_access_levels integer[] DEFAULT '{}'::integer[] NOT NULL ); CREATE SEQUENCE broadcast_messages_id_seq @@ -12376,7 +12987,7 @@ CREATE TABLE ci_runners ( executor_type smallint, maintainer_note text, token_expires_at timestamp with time zone, - CONSTRAINT check_56f5ea8804 CHECK ((char_length(maintainer_note) <= 255)) + CONSTRAINT check_ce275cee06 CHECK ((char_length(maintainer_note) <= 1024)) ); CREATE SEQUENCE ci_runners_id_seq @@ -13655,7 +14266,9 @@ CREATE TABLE deployment_approvals ( user_id bigint NOT NULL, created_at timestamp with time zone NOT NULL, updated_at timestamp with time zone NOT NULL, - status smallint NOT NULL + status smallint NOT NULL, + comment text, + CONSTRAINT check_e2eb6a17d8 CHECK ((char_length(comment) <= 255)) ); CREATE SEQUENCE deployment_approvals_id_seq @@ -13848,6 +14461,7 @@ CREATE TABLE dora_daily_metrics ( date date NOT NULL, deployment_frequency integer, lead_time_for_changes_in_seconds integer, + time_to_restore_service_in_seconds integer, CONSTRAINT dora_daily_metrics_deployment_frequency_positive CHECK ((deployment_frequency >= 0)), CONSTRAINT dora_daily_metrics_lead_time_for_changes_in_seconds_positive CHECK ((lead_time_for_changes_in_seconds >= 0)) ); @@ -14113,6 +14727,8 @@ CREATE TABLE epics ( due_date_sourcing_epic_id integer, confidential boolean DEFAULT false NOT NULL, external_key character varying(255), + color text DEFAULT '#1068bf'::text, + CONSTRAINT check_ca608c40b3 CHECK ((char_length(color) <= 7)), CONSTRAINT check_fcfb4a93ff CHECK ((lock_version IS NOT NULL)) ); @@ -15484,6 +16100,8 @@ CREATE TABLE integrations ( type_new text, vulnerability_events boolean DEFAULT false NOT NULL, archive_trace_events boolean DEFAULT false NOT NULL, + encrypted_properties bytea, + encrypted_properties_iv bytea, CONSTRAINT check_a948a0aa7e CHECK ((char_length(type_new) <= 255)) ); @@ -16212,7 +16830,8 @@ CREATE TABLE merge_request_assignees ( user_id integer NOT NULL, merge_request_id integer NOT NULL, created_at timestamp with time zone, - state smallint DEFAULT 0 NOT NULL + state smallint DEFAULT 0 NOT NULL, + updated_state_by_user_id bigint ); CREATE SEQUENCE merge_request_assignees_id_seq @@ -16438,7 +17057,8 @@ CREATE TABLE merge_request_reviewers ( user_id bigint NOT NULL, merge_request_id bigint NOT NULL, created_at timestamp with time zone NOT NULL, - state smallint DEFAULT 0 NOT NULL + state smallint DEFAULT 0 NOT NULL, + updated_state_by_user_id bigint ); CREATE SEQUENCE merge_request_reviewers_id_seq @@ -17708,7 +18328,7 @@ ALTER SEQUENCE packages_packages_id_seq OWNED BY packages_packages.id; CREATE TABLE packages_pypi_metadata ( package_id bigint NOT NULL, - required_python text, + required_python text DEFAULT ''::text, CONSTRAINT check_0d9aed55b2 CHECK ((required_python IS NOT NULL)), CONSTRAINT check_379019d5da CHECK ((char_length(required_python) <= 255)) ); @@ -17880,28 +18500,6 @@ CREATE SEQUENCE pages_domains_id_seq ALTER SEQUENCE pages_domains_id_seq OWNED BY pages_domains.id; -CREATE TABLE partitioned_foreign_keys ( - id bigint NOT NULL, - cascade_delete boolean DEFAULT true NOT NULL, - from_table text NOT NULL, - from_column text NOT NULL, - to_table text NOT NULL, - to_column text NOT NULL, - CONSTRAINT check_2c2e02a62b CHECK ((char_length(from_column) <= 63)), - CONSTRAINT check_40738efb57 CHECK ((char_length(to_table) <= 63)), - CONSTRAINT check_741676d405 CHECK ((char_length(from_table) <= 63)), - CONSTRAINT check_7e98be694f CHECK ((char_length(to_column) <= 63)) -); - -CREATE SEQUENCE partitioned_foreign_keys_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - -ALTER SEQUENCE partitioned_foreign_keys_id_seq OWNED BY partitioned_foreign_keys.id; - CREATE TABLE path_locks ( id integer NOT NULL, path character varying NOT NULL, @@ -18014,7 +18612,8 @@ CREATE TABLE plan_limits ( external_audit_event_destinations integer DEFAULT 5 NOT NULL, dotenv_variables integer DEFAULT 20 NOT NULL, dotenv_size integer DEFAULT 5120 NOT NULL, - pipeline_triggers integer DEFAULT 25000 NOT NULL + pipeline_triggers integer DEFAULT 25000 NOT NULL, + project_ci_secure_files integer DEFAULT 100 NOT NULL ); CREATE SEQUENCE plan_limits_id_seq @@ -18376,6 +18975,25 @@ CREATE SEQUENCE project_auto_devops_id_seq ALTER SEQUENCE project_auto_devops_id_seq OWNED BY project_auto_devops.id; +CREATE TABLE project_build_artifacts_size_refreshes ( + id bigint NOT NULL, + project_id bigint NOT NULL, + last_job_artifact_id bigint, + state smallint DEFAULT 1 NOT NULL, + refresh_started_at timestamp with time zone, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL +); + +CREATE SEQUENCE project_build_artifacts_size_refreshes_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE project_build_artifacts_size_refreshes_id_seq OWNED BY project_build_artifacts_size_refreshes.id; + CREATE TABLE project_ci_cd_settings ( id integer NOT NULL, project_id integer NOT NULL, @@ -18742,7 +19360,6 @@ CREATE TABLE project_settings ( merge_commit_template text, has_shimo boolean DEFAULT false NOT NULL, squash_commit_template text, - show_diff_preview_in_email boolean DEFAULT true NOT NULL, legacy_open_source_license_available boolean DEFAULT true NOT NULL, CONSTRAINT check_3a03e7557a CHECK ((char_length(previous_default_branch) <= 4096)), CONSTRAINT check_b09644994b CHECK ((char_length(squash_commit_template) <= 500)), @@ -18893,7 +19510,8 @@ CREATE TABLE projects ( marked_for_deletion_by_user_id integer, autoclose_referenced_issues boolean, suggestion_commit_message character varying(255), - project_namespace_id bigint + project_namespace_id bigint, + hidden boolean DEFAULT false NOT NULL ); CREATE SEQUENCE projects_id_seq @@ -19217,6 +19835,24 @@ CREATE SEQUENCE redirect_routes_id_seq ALTER SEQUENCE redirect_routes_id_seq OWNED BY redirect_routes.id; +CREATE TABLE related_epic_links ( + id bigint NOT NULL, + source_id bigint NOT NULL, + target_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + link_type smallint DEFAULT 0 NOT NULL +); + +CREATE SEQUENCE related_epic_links_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE related_epic_links_id_seq OWNED BY related_epic_links.id; + CREATE TABLE release_links ( id bigint NOT NULL, release_id integer NOT NULL, @@ -19540,6 +20176,26 @@ CREATE SEQUENCE saml_providers_id_seq ALTER SEQUENCE saml_providers_id_seq OWNED BY saml_providers.id; +CREATE TABLE saved_replies ( + id bigint NOT NULL, + user_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + name text NOT NULL, + content text NOT NULL, + CONSTRAINT check_0cb57dc22a CHECK ((char_length(content) <= 10000)), + CONSTRAINT check_2eb3366d7f CHECK ((char_length(name) <= 255)) +); + +CREATE SEQUENCE saved_replies_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE saved_replies_id_seq OWNED BY saved_replies.id; + CREATE TABLE schema_migrations ( version character varying NOT NULL, finished_at timestamp with time zone DEFAULT now() @@ -19591,6 +20247,7 @@ CREATE TABLE security_findings ( deduplicated boolean DEFAULT false NOT NULL, uuid uuid, overridden_uuid uuid, + CONSTRAINT check_6c2851a8c9 CHECK ((uuid IS NOT NULL)), CONSTRAINT check_b9508c6df8 CHECK ((char_length(project_fingerprint) <= 40)) ); @@ -19605,11 +20262,13 @@ ALTER SEQUENCE security_findings_id_seq OWNED BY security_findings.id; CREATE TABLE security_orchestration_policy_configurations ( id bigint NOT NULL, - project_id bigint NOT NULL, + project_id bigint, security_policy_management_project_id bigint NOT NULL, created_at timestamp with time zone NOT NULL, updated_at timestamp with time zone NOT NULL, - configured_at timestamp with time zone + configured_at timestamp with time zone, + namespace_id bigint, + CONSTRAINT cop_configs_project_or_namespace_existence CHECK (((project_id IS NULL) <> (namespace_id IS NULL))) ); COMMENT ON TABLE security_orchestration_policy_configurations IS '{"owner":"group::container security","description":"Configuration used to store relationship between project and security policy repository"}'; @@ -19997,7 +20656,7 @@ CREATE TABLE sprints ( group_id bigint, iid integer NOT NULL, cached_markdown_version integer, - title text NOT NULL, + title text, title_html text, description text, description_html text, @@ -20022,7 +20681,8 @@ CREATE TABLE status_check_responses ( merge_request_id bigint NOT NULL, external_approval_rule_id bigint, sha bytea NOT NULL, - external_status_check_id bigint NOT NULL + external_status_check_id bigint NOT NULL, + status smallint DEFAULT 0 NOT NULL ); CREATE SEQUENCE status_check_responses_id_seq @@ -20490,7 +21150,7 @@ CREATE TABLE user_credit_card_validations ( network text, CONSTRAINT check_1765e2b30f CHECK ((char_length(network) <= 32)), CONSTRAINT check_3eea080c91 CHECK (((last_digits >= 0) AND (last_digits <= 9999))), - CONSTRAINT check_eafe45d88b CHECK ((char_length(holder_name) <= 26)) + CONSTRAINT check_cc0c8dc0fe CHECK ((char_length(holder_name) <= 50)) ); CREATE TABLE user_custom_attributes ( @@ -22206,8 +22866,6 @@ ALTER TABLE ONLY pages_domain_acme_orders ALTER COLUMN id SET DEFAULT nextval('p ALTER TABLE ONLY pages_domains ALTER COLUMN id SET DEFAULT nextval('pages_domains_id_seq'::regclass); -ALTER TABLE ONLY partitioned_foreign_keys ALTER COLUMN id SET DEFAULT nextval('partitioned_foreign_keys_id_seq'::regclass); - ALTER TABLE ONLY path_locks ALTER COLUMN id SET DEFAULT nextval('path_locks_id_seq'::regclass); ALTER TABLE ONLY personal_access_tokens ALTER COLUMN id SET DEFAULT nextval('personal_access_tokens_id_seq'::regclass); @@ -22232,6 +22890,8 @@ ALTER TABLE ONLY project_aliases ALTER COLUMN id SET DEFAULT nextval('project_al ALTER TABLE ONLY project_auto_devops ALTER COLUMN id SET DEFAULT nextval('project_auto_devops_id_seq'::regclass); +ALTER TABLE ONLY project_build_artifacts_size_refreshes ALTER COLUMN id SET DEFAULT nextval('project_build_artifacts_size_refreshes_id_seq'::regclass); + ALTER TABLE ONLY project_ci_cd_settings ALTER COLUMN id SET DEFAULT nextval('project_ci_cd_settings_id_seq'::regclass); ALTER TABLE ONLY project_ci_feature_usages ALTER COLUMN id SET DEFAULT nextval('project_ci_feature_usages_id_seq'::regclass); @@ -22302,6 +22962,8 @@ ALTER TABLE ONLY raw_usage_data ALTER COLUMN id SET DEFAULT nextval('raw_usage_d ALTER TABLE ONLY redirect_routes ALTER COLUMN id SET DEFAULT nextval('redirect_routes_id_seq'::regclass); +ALTER TABLE ONLY related_epic_links ALTER COLUMN id SET DEFAULT nextval('related_epic_links_id_seq'::regclass); + ALTER TABLE ONLY release_links ALTER COLUMN id SET DEFAULT nextval('release_links_id_seq'::regclass); ALTER TABLE ONLY releases ALTER COLUMN id SET DEFAULT nextval('releases_id_seq'::regclass); @@ -22332,6 +22994,8 @@ ALTER TABLE ONLY saml_group_links ALTER COLUMN id SET DEFAULT nextval('saml_grou ALTER TABLE ONLY saml_providers ALTER COLUMN id SET DEFAULT nextval('saml_providers_id_seq'::regclass); +ALTER TABLE ONLY saved_replies ALTER COLUMN id SET DEFAULT nextval('saved_replies_id_seq'::regclass); + ALTER TABLE ONLY scim_identities ALTER COLUMN id SET DEFAULT nextval('scim_identities_id_seq'::regclass); ALTER TABLE ONLY scim_oauth_access_tokens ALTER COLUMN id SET DEFAULT nextval('scim_oauth_access_tokens_id_seq'::regclass); @@ -22702,6 +23366,201 @@ ALTER TABLE ONLY gitlab_partitions_static.analytics_cycle_analytics_merge_reques ALTER TABLE ONLY gitlab_partitions_static.analytics_cycle_analytics_merge_request_stage_events_31 ADD CONSTRAINT analytics_cycle_analytics_merge_request_stage_events_31_pkey PRIMARY KEY (stage_event_hash_id, merge_request_id); +ALTER TABLE ONLY issue_search_data + ADD CONSTRAINT issue_search_data_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_00 + ADD CONSTRAINT issue_search_data_00_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_01 + ADD CONSTRAINT issue_search_data_01_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_02 + ADD CONSTRAINT issue_search_data_02_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_03 + ADD CONSTRAINT issue_search_data_03_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_04 + ADD CONSTRAINT issue_search_data_04_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_05 + ADD CONSTRAINT issue_search_data_05_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_06 + ADD CONSTRAINT issue_search_data_06_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_07 + ADD CONSTRAINT issue_search_data_07_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_08 + ADD CONSTRAINT issue_search_data_08_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_09 + ADD CONSTRAINT issue_search_data_09_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_10 + ADD CONSTRAINT issue_search_data_10_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_11 + ADD CONSTRAINT issue_search_data_11_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_12 + ADD CONSTRAINT issue_search_data_12_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_13 + ADD CONSTRAINT issue_search_data_13_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_14 + ADD CONSTRAINT issue_search_data_14_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_15 + ADD CONSTRAINT issue_search_data_15_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_16 + ADD CONSTRAINT issue_search_data_16_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_17 + ADD CONSTRAINT issue_search_data_17_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_18 + ADD CONSTRAINT issue_search_data_18_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_19 + ADD CONSTRAINT issue_search_data_19_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_20 + ADD CONSTRAINT issue_search_data_20_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_21 + ADD CONSTRAINT issue_search_data_21_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_22 + ADD CONSTRAINT issue_search_data_22_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_23 + ADD CONSTRAINT issue_search_data_23_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_24 + ADD CONSTRAINT issue_search_data_24_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_25 + ADD CONSTRAINT issue_search_data_25_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_26 + ADD CONSTRAINT issue_search_data_26_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_27 + ADD CONSTRAINT issue_search_data_27_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_28 + ADD CONSTRAINT issue_search_data_28_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_29 + ADD CONSTRAINT issue_search_data_29_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_30 + ADD CONSTRAINT issue_search_data_30_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_31 + ADD CONSTRAINT issue_search_data_31_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_32 + ADD CONSTRAINT issue_search_data_32_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_33 + ADD CONSTRAINT issue_search_data_33_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_34 + ADD CONSTRAINT issue_search_data_34_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_35 + ADD CONSTRAINT issue_search_data_35_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_36 + ADD CONSTRAINT issue_search_data_36_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_37 + ADD CONSTRAINT issue_search_data_37_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_38 + ADD CONSTRAINT issue_search_data_38_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_39 + ADD CONSTRAINT issue_search_data_39_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_40 + ADD CONSTRAINT issue_search_data_40_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_41 + ADD CONSTRAINT issue_search_data_41_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_42 + ADD CONSTRAINT issue_search_data_42_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_43 + ADD CONSTRAINT issue_search_data_43_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_44 + ADD CONSTRAINT issue_search_data_44_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_45 + ADD CONSTRAINT issue_search_data_45_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_46 + ADD CONSTRAINT issue_search_data_46_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_47 + ADD CONSTRAINT issue_search_data_47_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_48 + ADD CONSTRAINT issue_search_data_48_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_49 + ADD CONSTRAINT issue_search_data_49_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_50 + ADD CONSTRAINT issue_search_data_50_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_51 + ADD CONSTRAINT issue_search_data_51_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_52 + ADD CONSTRAINT issue_search_data_52_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_53 + ADD CONSTRAINT issue_search_data_53_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_54 + ADD CONSTRAINT issue_search_data_54_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_55 + ADD CONSTRAINT issue_search_data_55_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_56 + ADD CONSTRAINT issue_search_data_56_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_57 + ADD CONSTRAINT issue_search_data_57_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_58 + ADD CONSTRAINT issue_search_data_58_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_59 + ADD CONSTRAINT issue_search_data_59_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_60 + ADD CONSTRAINT issue_search_data_60_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_61 + ADD CONSTRAINT issue_search_data_61_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_62 + ADD CONSTRAINT issue_search_data_62_pkey PRIMARY KEY (project_id, issue_id); + +ALTER TABLE ONLY gitlab_partitions_static.issue_search_data_63 + ADD CONSTRAINT issue_search_data_63_pkey PRIMARY KEY (project_id, issue_id); + ALTER TABLE ONLY product_analytics_events_experimental ADD CONSTRAINT product_analytics_events_experimental_pkey PRIMARY KEY (id, project_id); @@ -22927,6 +23786,9 @@ ALTER TABLE ONLY alert_management_http_integrations ALTER TABLE ONLY allowed_email_domains ADD CONSTRAINT allowed_email_domains_pkey PRIMARY KEY (id); +ALTER TABLE ONLY analytics_cycle_analytics_aggregations + ADD CONSTRAINT analytics_cycle_analytics_aggregations_pkey PRIMARY KEY (group_id); + ALTER TABLE ONLY analytics_cycle_analytics_group_stages ADD CONSTRAINT analytics_cycle_analytics_group_stages_pkey PRIMARY KEY (id); @@ -23110,9 +23972,6 @@ ALTER TABLE ONLY chat_teams ALTER TABLE vulnerability_scanners ADD CONSTRAINT check_37608c9db5 CHECK ((char_length(vendor) <= 255)) NOT VALID; -ALTER TABLE security_findings - ADD CONSTRAINT check_6c2851a8c9 CHECK ((uuid IS NOT NULL)) NOT VALID; - ALTER TABLE sprints ADD CONSTRAINT check_ccd8a1eae0 CHECK ((start_date IS NOT NULL)) NOT VALID; @@ -24061,9 +24920,6 @@ ALTER TABLE ONLY pages_domain_acme_orders ALTER TABLE ONLY pages_domains ADD CONSTRAINT pages_domains_pkey PRIMARY KEY (id); -ALTER TABLE ONLY partitioned_foreign_keys - ADD CONSTRAINT partitioned_foreign_keys_pkey PRIMARY KEY (id); - ALTER TABLE ONLY path_locks ADD CONSTRAINT path_locks_pkey PRIMARY KEY (id); @@ -24106,6 +24962,9 @@ ALTER TABLE ONLY project_authorizations ALTER TABLE ONLY project_auto_devops ADD CONSTRAINT project_auto_devops_pkey PRIMARY KEY (id); +ALTER TABLE ONLY project_build_artifacts_size_refreshes + ADD CONSTRAINT project_build_artifacts_size_refreshes_pkey PRIMARY KEY (id); + ALTER TABLE ONLY project_ci_cd_settings ADD CONSTRAINT project_ci_cd_settings_pkey PRIMARY KEY (id); @@ -24229,9 +25088,15 @@ ALTER TABLE ONLY raw_usage_data ALTER TABLE ONLY redirect_routes ADD CONSTRAINT redirect_routes_pkey PRIMARY KEY (id); +ALTER TABLE ONLY related_epic_links + ADD CONSTRAINT related_epic_links_pkey PRIMARY KEY (id); + ALTER TABLE ONLY release_links ADD CONSTRAINT release_links_pkey PRIMARY KEY (id); +ALTER TABLE releases + ADD CONSTRAINT releases_not_null_tag CHECK ((tag IS NOT NULL)) NOT VALID; + ALTER TABLE ONLY releases ADD CONSTRAINT releases_pkey PRIMARY KEY (id); @@ -24277,6 +25142,9 @@ ALTER TABLE ONLY saml_group_links ALTER TABLE ONLY saml_providers ADD CONSTRAINT saml_providers_pkey PRIMARY KEY (id); +ALTER TABLE ONLY saved_replies + ADD CONSTRAINT saved_replies_pkey PRIMARY KEY (id); + ALTER TABLE ONLY schema_migrations ADD CONSTRAINT schema_migrations_pkey PRIMARY KEY (version); @@ -25099,6 +25967,266 @@ CREATE INDEX index_ff39be5400 ON gitlab_partitions_static.analytics_cycle_analyt CREATE INDEX index_ff8741d8d7 ON gitlab_partitions_static.analytics_cycle_analytics_issue_stage_events_28 USING btree (stage_event_hash_id, group_id, start_event_timestamp, issue_id) WHERE ((end_event_timestamp IS NULL) AND (state_id = 1)); +CREATE INDEX index_issue_search_data_on_issue_id ON ONLY issue_search_data USING btree (issue_id); + +CREATE INDEX issue_search_data_00_issue_id_idx ON gitlab_partitions_static.issue_search_data_00 USING btree (issue_id); + +CREATE INDEX index_issue_search_data_on_search_vector ON ONLY issue_search_data USING gin (search_vector); + +CREATE INDEX issue_search_data_00_search_vector_idx ON gitlab_partitions_static.issue_search_data_00 USING gin (search_vector); + +CREATE INDEX issue_search_data_01_issue_id_idx ON gitlab_partitions_static.issue_search_data_01 USING btree (issue_id); + +CREATE INDEX issue_search_data_01_search_vector_idx ON gitlab_partitions_static.issue_search_data_01 USING gin (search_vector); + +CREATE INDEX issue_search_data_02_issue_id_idx ON gitlab_partitions_static.issue_search_data_02 USING btree (issue_id); + +CREATE INDEX issue_search_data_02_search_vector_idx ON gitlab_partitions_static.issue_search_data_02 USING gin (search_vector); + +CREATE INDEX issue_search_data_03_issue_id_idx ON gitlab_partitions_static.issue_search_data_03 USING btree (issue_id); + +CREATE INDEX issue_search_data_03_search_vector_idx ON gitlab_partitions_static.issue_search_data_03 USING gin (search_vector); + +CREATE INDEX issue_search_data_04_issue_id_idx ON gitlab_partitions_static.issue_search_data_04 USING btree (issue_id); + +CREATE INDEX issue_search_data_04_search_vector_idx ON gitlab_partitions_static.issue_search_data_04 USING gin (search_vector); + +CREATE INDEX issue_search_data_05_issue_id_idx ON gitlab_partitions_static.issue_search_data_05 USING btree (issue_id); + +CREATE INDEX issue_search_data_05_search_vector_idx ON gitlab_partitions_static.issue_search_data_05 USING gin (search_vector); + +CREATE INDEX issue_search_data_06_issue_id_idx ON gitlab_partitions_static.issue_search_data_06 USING btree (issue_id); + +CREATE INDEX issue_search_data_06_search_vector_idx ON gitlab_partitions_static.issue_search_data_06 USING gin (search_vector); + +CREATE INDEX issue_search_data_07_issue_id_idx ON gitlab_partitions_static.issue_search_data_07 USING btree (issue_id); + +CREATE INDEX issue_search_data_07_search_vector_idx ON gitlab_partitions_static.issue_search_data_07 USING gin (search_vector); + +CREATE INDEX issue_search_data_08_issue_id_idx ON gitlab_partitions_static.issue_search_data_08 USING btree (issue_id); + +CREATE INDEX issue_search_data_08_search_vector_idx ON gitlab_partitions_static.issue_search_data_08 USING gin (search_vector); + +CREATE INDEX issue_search_data_09_issue_id_idx ON gitlab_partitions_static.issue_search_data_09 USING btree (issue_id); + +CREATE INDEX issue_search_data_09_search_vector_idx ON gitlab_partitions_static.issue_search_data_09 USING gin (search_vector); + +CREATE INDEX issue_search_data_10_issue_id_idx ON gitlab_partitions_static.issue_search_data_10 USING btree (issue_id); + +CREATE INDEX issue_search_data_10_search_vector_idx ON gitlab_partitions_static.issue_search_data_10 USING gin (search_vector); + +CREATE INDEX issue_search_data_11_issue_id_idx ON gitlab_partitions_static.issue_search_data_11 USING btree (issue_id); + +CREATE INDEX issue_search_data_11_search_vector_idx ON gitlab_partitions_static.issue_search_data_11 USING gin (search_vector); + +CREATE INDEX issue_search_data_12_issue_id_idx ON gitlab_partitions_static.issue_search_data_12 USING btree (issue_id); + +CREATE INDEX issue_search_data_12_search_vector_idx ON gitlab_partitions_static.issue_search_data_12 USING gin (search_vector); + +CREATE INDEX issue_search_data_13_issue_id_idx ON gitlab_partitions_static.issue_search_data_13 USING btree (issue_id); + +CREATE INDEX issue_search_data_13_search_vector_idx ON gitlab_partitions_static.issue_search_data_13 USING gin (search_vector); + +CREATE INDEX issue_search_data_14_issue_id_idx ON gitlab_partitions_static.issue_search_data_14 USING btree (issue_id); + +CREATE INDEX issue_search_data_14_search_vector_idx ON gitlab_partitions_static.issue_search_data_14 USING gin (search_vector); + +CREATE INDEX issue_search_data_15_issue_id_idx ON gitlab_partitions_static.issue_search_data_15 USING btree (issue_id); + +CREATE INDEX issue_search_data_15_search_vector_idx ON gitlab_partitions_static.issue_search_data_15 USING gin (search_vector); + +CREATE INDEX issue_search_data_16_issue_id_idx ON gitlab_partitions_static.issue_search_data_16 USING btree (issue_id); + +CREATE INDEX issue_search_data_16_search_vector_idx ON gitlab_partitions_static.issue_search_data_16 USING gin (search_vector); + +CREATE INDEX issue_search_data_17_issue_id_idx ON gitlab_partitions_static.issue_search_data_17 USING btree (issue_id); + +CREATE INDEX issue_search_data_17_search_vector_idx ON gitlab_partitions_static.issue_search_data_17 USING gin (search_vector); + +CREATE INDEX issue_search_data_18_issue_id_idx ON gitlab_partitions_static.issue_search_data_18 USING btree (issue_id); + +CREATE INDEX issue_search_data_18_search_vector_idx ON gitlab_partitions_static.issue_search_data_18 USING gin (search_vector); + +CREATE INDEX issue_search_data_19_issue_id_idx ON gitlab_partitions_static.issue_search_data_19 USING btree (issue_id); + +CREATE INDEX issue_search_data_19_search_vector_idx ON gitlab_partitions_static.issue_search_data_19 USING gin (search_vector); + +CREATE INDEX issue_search_data_20_issue_id_idx ON gitlab_partitions_static.issue_search_data_20 USING btree (issue_id); + +CREATE INDEX issue_search_data_20_search_vector_idx ON gitlab_partitions_static.issue_search_data_20 USING gin (search_vector); + +CREATE INDEX issue_search_data_21_issue_id_idx ON gitlab_partitions_static.issue_search_data_21 USING btree (issue_id); + +CREATE INDEX issue_search_data_21_search_vector_idx ON gitlab_partitions_static.issue_search_data_21 USING gin (search_vector); + +CREATE INDEX issue_search_data_22_issue_id_idx ON gitlab_partitions_static.issue_search_data_22 USING btree (issue_id); + +CREATE INDEX issue_search_data_22_search_vector_idx ON gitlab_partitions_static.issue_search_data_22 USING gin (search_vector); + +CREATE INDEX issue_search_data_23_issue_id_idx ON gitlab_partitions_static.issue_search_data_23 USING btree (issue_id); + +CREATE INDEX issue_search_data_23_search_vector_idx ON gitlab_partitions_static.issue_search_data_23 USING gin (search_vector); + +CREATE INDEX issue_search_data_24_issue_id_idx ON gitlab_partitions_static.issue_search_data_24 USING btree (issue_id); + +CREATE INDEX issue_search_data_24_search_vector_idx ON gitlab_partitions_static.issue_search_data_24 USING gin (search_vector); + +CREATE INDEX issue_search_data_25_issue_id_idx ON gitlab_partitions_static.issue_search_data_25 USING btree (issue_id); + +CREATE INDEX issue_search_data_25_search_vector_idx ON gitlab_partitions_static.issue_search_data_25 USING gin (search_vector); + +CREATE INDEX issue_search_data_26_issue_id_idx ON gitlab_partitions_static.issue_search_data_26 USING btree (issue_id); + +CREATE INDEX issue_search_data_26_search_vector_idx ON gitlab_partitions_static.issue_search_data_26 USING gin (search_vector); + +CREATE INDEX issue_search_data_27_issue_id_idx ON gitlab_partitions_static.issue_search_data_27 USING btree (issue_id); + +CREATE INDEX issue_search_data_27_search_vector_idx ON gitlab_partitions_static.issue_search_data_27 USING gin (search_vector); + +CREATE INDEX issue_search_data_28_issue_id_idx ON gitlab_partitions_static.issue_search_data_28 USING btree (issue_id); + +CREATE INDEX issue_search_data_28_search_vector_idx ON gitlab_partitions_static.issue_search_data_28 USING gin (search_vector); + +CREATE INDEX issue_search_data_29_issue_id_idx ON gitlab_partitions_static.issue_search_data_29 USING btree (issue_id); + +CREATE INDEX issue_search_data_29_search_vector_idx ON gitlab_partitions_static.issue_search_data_29 USING gin (search_vector); + +CREATE INDEX issue_search_data_30_issue_id_idx ON gitlab_partitions_static.issue_search_data_30 USING btree (issue_id); + +CREATE INDEX issue_search_data_30_search_vector_idx ON gitlab_partitions_static.issue_search_data_30 USING gin (search_vector); + +CREATE INDEX issue_search_data_31_issue_id_idx ON gitlab_partitions_static.issue_search_data_31 USING btree (issue_id); + +CREATE INDEX issue_search_data_31_search_vector_idx ON gitlab_partitions_static.issue_search_data_31 USING gin (search_vector); + +CREATE INDEX issue_search_data_32_issue_id_idx ON gitlab_partitions_static.issue_search_data_32 USING btree (issue_id); + +CREATE INDEX issue_search_data_32_search_vector_idx ON gitlab_partitions_static.issue_search_data_32 USING gin (search_vector); + +CREATE INDEX issue_search_data_33_issue_id_idx ON gitlab_partitions_static.issue_search_data_33 USING btree (issue_id); + +CREATE INDEX issue_search_data_33_search_vector_idx ON gitlab_partitions_static.issue_search_data_33 USING gin (search_vector); + +CREATE INDEX issue_search_data_34_issue_id_idx ON gitlab_partitions_static.issue_search_data_34 USING btree (issue_id); + +CREATE INDEX issue_search_data_34_search_vector_idx ON gitlab_partitions_static.issue_search_data_34 USING gin (search_vector); + +CREATE INDEX issue_search_data_35_issue_id_idx ON gitlab_partitions_static.issue_search_data_35 USING btree (issue_id); + +CREATE INDEX issue_search_data_35_search_vector_idx ON gitlab_partitions_static.issue_search_data_35 USING gin (search_vector); + +CREATE INDEX issue_search_data_36_issue_id_idx ON gitlab_partitions_static.issue_search_data_36 USING btree (issue_id); + +CREATE INDEX issue_search_data_36_search_vector_idx ON gitlab_partitions_static.issue_search_data_36 USING gin (search_vector); + +CREATE INDEX issue_search_data_37_issue_id_idx ON gitlab_partitions_static.issue_search_data_37 USING btree (issue_id); + +CREATE INDEX issue_search_data_37_search_vector_idx ON gitlab_partitions_static.issue_search_data_37 USING gin (search_vector); + +CREATE INDEX issue_search_data_38_issue_id_idx ON gitlab_partitions_static.issue_search_data_38 USING btree (issue_id); + +CREATE INDEX issue_search_data_38_search_vector_idx ON gitlab_partitions_static.issue_search_data_38 USING gin (search_vector); + +CREATE INDEX issue_search_data_39_issue_id_idx ON gitlab_partitions_static.issue_search_data_39 USING btree (issue_id); + +CREATE INDEX issue_search_data_39_search_vector_idx ON gitlab_partitions_static.issue_search_data_39 USING gin (search_vector); + +CREATE INDEX issue_search_data_40_issue_id_idx ON gitlab_partitions_static.issue_search_data_40 USING btree (issue_id); + +CREATE INDEX issue_search_data_40_search_vector_idx ON gitlab_partitions_static.issue_search_data_40 USING gin (search_vector); + +CREATE INDEX issue_search_data_41_issue_id_idx ON gitlab_partitions_static.issue_search_data_41 USING btree (issue_id); + +CREATE INDEX issue_search_data_41_search_vector_idx ON gitlab_partitions_static.issue_search_data_41 USING gin (search_vector); + +CREATE INDEX issue_search_data_42_issue_id_idx ON gitlab_partitions_static.issue_search_data_42 USING btree (issue_id); + +CREATE INDEX issue_search_data_42_search_vector_idx ON gitlab_partitions_static.issue_search_data_42 USING gin (search_vector); + +CREATE INDEX issue_search_data_43_issue_id_idx ON gitlab_partitions_static.issue_search_data_43 USING btree (issue_id); + +CREATE INDEX issue_search_data_43_search_vector_idx ON gitlab_partitions_static.issue_search_data_43 USING gin (search_vector); + +CREATE INDEX issue_search_data_44_issue_id_idx ON gitlab_partitions_static.issue_search_data_44 USING btree (issue_id); + +CREATE INDEX issue_search_data_44_search_vector_idx ON gitlab_partitions_static.issue_search_data_44 USING gin (search_vector); + +CREATE INDEX issue_search_data_45_issue_id_idx ON gitlab_partitions_static.issue_search_data_45 USING btree (issue_id); + +CREATE INDEX issue_search_data_45_search_vector_idx ON gitlab_partitions_static.issue_search_data_45 USING gin (search_vector); + +CREATE INDEX issue_search_data_46_issue_id_idx ON gitlab_partitions_static.issue_search_data_46 USING btree (issue_id); + +CREATE INDEX issue_search_data_46_search_vector_idx ON gitlab_partitions_static.issue_search_data_46 USING gin (search_vector); + +CREATE INDEX issue_search_data_47_issue_id_idx ON gitlab_partitions_static.issue_search_data_47 USING btree (issue_id); + +CREATE INDEX issue_search_data_47_search_vector_idx ON gitlab_partitions_static.issue_search_data_47 USING gin (search_vector); + +CREATE INDEX issue_search_data_48_issue_id_idx ON gitlab_partitions_static.issue_search_data_48 USING btree (issue_id); + +CREATE INDEX issue_search_data_48_search_vector_idx ON gitlab_partitions_static.issue_search_data_48 USING gin (search_vector); + +CREATE INDEX issue_search_data_49_issue_id_idx ON gitlab_partitions_static.issue_search_data_49 USING btree (issue_id); + +CREATE INDEX issue_search_data_49_search_vector_idx ON gitlab_partitions_static.issue_search_data_49 USING gin (search_vector); + +CREATE INDEX issue_search_data_50_issue_id_idx ON gitlab_partitions_static.issue_search_data_50 USING btree (issue_id); + +CREATE INDEX issue_search_data_50_search_vector_idx ON gitlab_partitions_static.issue_search_data_50 USING gin (search_vector); + +CREATE INDEX issue_search_data_51_issue_id_idx ON gitlab_partitions_static.issue_search_data_51 USING btree (issue_id); + +CREATE INDEX issue_search_data_51_search_vector_idx ON gitlab_partitions_static.issue_search_data_51 USING gin (search_vector); + +CREATE INDEX issue_search_data_52_issue_id_idx ON gitlab_partitions_static.issue_search_data_52 USING btree (issue_id); + +CREATE INDEX issue_search_data_52_search_vector_idx ON gitlab_partitions_static.issue_search_data_52 USING gin (search_vector); + +CREATE INDEX issue_search_data_53_issue_id_idx ON gitlab_partitions_static.issue_search_data_53 USING btree (issue_id); + +CREATE INDEX issue_search_data_53_search_vector_idx ON gitlab_partitions_static.issue_search_data_53 USING gin (search_vector); + +CREATE INDEX issue_search_data_54_issue_id_idx ON gitlab_partitions_static.issue_search_data_54 USING btree (issue_id); + +CREATE INDEX issue_search_data_54_search_vector_idx ON gitlab_partitions_static.issue_search_data_54 USING gin (search_vector); + +CREATE INDEX issue_search_data_55_issue_id_idx ON gitlab_partitions_static.issue_search_data_55 USING btree (issue_id); + +CREATE INDEX issue_search_data_55_search_vector_idx ON gitlab_partitions_static.issue_search_data_55 USING gin (search_vector); + +CREATE INDEX issue_search_data_56_issue_id_idx ON gitlab_partitions_static.issue_search_data_56 USING btree (issue_id); + +CREATE INDEX issue_search_data_56_search_vector_idx ON gitlab_partitions_static.issue_search_data_56 USING gin (search_vector); + +CREATE INDEX issue_search_data_57_issue_id_idx ON gitlab_partitions_static.issue_search_data_57 USING btree (issue_id); + +CREATE INDEX issue_search_data_57_search_vector_idx ON gitlab_partitions_static.issue_search_data_57 USING gin (search_vector); + +CREATE INDEX issue_search_data_58_issue_id_idx ON gitlab_partitions_static.issue_search_data_58 USING btree (issue_id); + +CREATE INDEX issue_search_data_58_search_vector_idx ON gitlab_partitions_static.issue_search_data_58 USING gin (search_vector); + +CREATE INDEX issue_search_data_59_issue_id_idx ON gitlab_partitions_static.issue_search_data_59 USING btree (issue_id); + +CREATE INDEX issue_search_data_59_search_vector_idx ON gitlab_partitions_static.issue_search_data_59 USING gin (search_vector); + +CREATE INDEX issue_search_data_60_issue_id_idx ON gitlab_partitions_static.issue_search_data_60 USING btree (issue_id); + +CREATE INDEX issue_search_data_60_search_vector_idx ON gitlab_partitions_static.issue_search_data_60 USING gin (search_vector); + +CREATE INDEX issue_search_data_61_issue_id_idx ON gitlab_partitions_static.issue_search_data_61 USING btree (issue_id); + +CREATE INDEX issue_search_data_61_search_vector_idx ON gitlab_partitions_static.issue_search_data_61 USING gin (search_vector); + +CREATE INDEX issue_search_data_62_issue_id_idx ON gitlab_partitions_static.issue_search_data_62 USING btree (issue_id); + +CREATE INDEX issue_search_data_62_search_vector_idx ON gitlab_partitions_static.issue_search_data_62 USING gin (search_vector); + +CREATE INDEX issue_search_data_63_issue_id_idx ON gitlab_partitions_static.issue_search_data_63 USING btree (issue_id); + +CREATE INDEX issue_search_data_63_search_vector_idx ON gitlab_partitions_static.issue_search_data_63 USING gin (search_vector); + CREATE INDEX index_product_analytics_events_experimental_project_and_time ON ONLY product_analytics_events_experimental USING btree (project_id, collector_tstamp); CREATE INDEX product_analytics_events_expe_project_id_collector_tstamp_idx10 ON gitlab_partitions_static.product_analytics_events_experimental_10 USING btree (project_id, collector_tstamp); @@ -25245,6 +26373,12 @@ CREATE INDEX approval_mr_rule_index_merge_request_id ON approval_merge_request_r CREATE UNIQUE INDEX bulk_import_trackers_uniq_relation_by_entity ON bulk_import_trackers USING btree (bulk_import_entity_id, relation); +CREATE INDEX ca_aggregations_last_consistency_check_updated_at ON analytics_cycle_analytics_aggregations USING btree (last_consistency_check_updated_at NULLS FIRST) WHERE (enabled IS TRUE); + +CREATE INDEX ca_aggregations_last_full_run_at ON analytics_cycle_analytics_aggregations USING btree (last_full_run_at NULLS FIRST) WHERE (enabled IS TRUE); + +CREATE INDEX ca_aggregations_last_incremental_run_at ON analytics_cycle_analytics_aggregations USING btree (last_incremental_run_at NULLS FIRST) WHERE (enabled IS TRUE); + CREATE INDEX cadence_create_iterations_automation ON iterations_cadences USING btree (automatic, duration_in_weeks, date((COALESCE(last_run_date, '1970-01-01'::date) + ((duration_in_weeks)::double precision * '7 days'::interval)))) WHERE (duration_in_weeks IS NOT NULL); CREATE INDEX ci_builds_gitlab_monitor_metrics ON ci_builds USING btree (status, created_at, project_id) WHERE ((type)::text = 'Ci::Build'::text); @@ -25289,6 +26423,8 @@ CREATE INDEX idx_audit_events_part_on_entity_id_desc_author_id_created_at ON ONL CREATE INDEX idx_award_emoji_on_user_emoji_name_awardable_type_awardable_id ON award_emoji USING btree (user_id, name, awardable_type, awardable_id); +CREATE INDEX idx_build_artifacts_size_refreshes_state_updated_at ON project_build_artifacts_size_refreshes USING btree (state, updated_at); + CREATE INDEX idx_ci_pipelines_artifacts_locked ON ci_pipelines USING btree (ci_ref_id, id) WHERE (locked = 1); CREATE INDEX idx_container_exp_policies_on_project_id_next_run_at ON container_expiration_policies USING btree (project_id, next_run_at) WHERE (enabled = true); @@ -25397,6 +26533,12 @@ CREATE UNIQUE INDEX idx_project_id_payload_key_self_managed_prometheus_alert_eve CREATE INDEX idx_project_repository_check_partial ON projects USING btree (repository_storage, created_at) WHERE (last_repository_check_at IS NULL); +CREATE INDEX idx_projects_api_created_at_id_for_archived ON projects USING btree (created_at, id) WHERE ((archived = true) AND (pending_delete = false) AND (hidden = false)); + +CREATE INDEX idx_projects_api_created_at_id_for_archived_vis20 ON projects USING btree (created_at, id) WHERE ((archived = true) AND (visibility_level = 20) AND (pending_delete = false) AND (hidden = false)); + +CREATE INDEX idx_projects_api_created_at_id_for_vis10 ON projects USING btree (created_at, id) WHERE ((visibility_level = 10) AND (pending_delete = false) AND (hidden = false)); + CREATE INDEX idx_projects_id_created_at_disable_overriding_approvers_false ON projects USING btree (id, created_at) WHERE ((disable_overriding_approvers_per_merge_request = false) OR (disable_overriding_approvers_per_merge_request IS NULL)); CREATE INDEX idx_projects_id_created_at_disable_overriding_approvers_true ON projects USING btree (id, created_at) WHERE (disable_overriding_approvers_per_merge_request = true); @@ -25805,6 +26947,8 @@ CREATE INDEX index_ci_job_artifacts_on_file_store ON ci_job_artifacts USING btre CREATE INDEX index_ci_job_artifacts_on_file_type_for_devops_adoption ON ci_job_artifacts USING btree (file_type, project_id, created_at) WHERE (file_type = ANY (ARRAY[5, 6, 8, 23])); +CREATE INDEX index_ci_job_artifacts_on_id_project_id_and_created_at ON ci_job_artifacts USING btree (project_id, created_at, id); + CREATE INDEX index_ci_job_artifacts_on_id_project_id_and_file_type ON ci_job_artifacts USING btree (project_id, file_type, id); CREATE UNIQUE INDEX index_ci_job_artifacts_on_job_id_and_file_type ON ci_job_artifacts USING btree (job_id, file_type); @@ -26751,6 +27895,8 @@ CREATE INDEX index_issues_on_description_trigram ON issues USING gin (descriptio CREATE INDEX index_issues_on_duplicated_to_id ON issues USING btree (duplicated_to_id) WHERE (duplicated_to_id IS NOT NULL); +CREATE INDEX index_issues_on_id_and_weight ON issues USING btree (id, weight); + CREATE INDEX index_issues_on_incident_issue_type ON issues USING btree (issue_type) WHERE (issue_type = 1); CREATE INDEX index_issues_on_last_edited_by_id ON issues USING btree (last_edited_by_id); @@ -27175,12 +28321,18 @@ CREATE INDEX index_on_identities_lower_extern_uid_and_provider ON identities USI CREATE UNIQUE INDEX index_on_instance_statistics_recorded_at_and_identifier ON analytics_usage_trends_measurements USING btree (identifier, recorded_at); +CREATE INDEX index_on_issues_closed_incidents_by_project_id_and_closed_at ON issues USING btree (project_id, closed_at) WHERE ((issue_type = 1) AND (state_id = 2)); + CREATE INDEX index_on_label_links_all_columns ON label_links USING btree (target_id, label_id, target_type); CREATE INDEX index_on_merge_request_assignees_state ON merge_request_assignees USING btree (state) WHERE (state = 2); +CREATE INDEX index_on_merge_request_assignees_updated_state_by_user_id ON merge_request_assignees USING btree (updated_state_by_user_id); + CREATE INDEX index_on_merge_request_reviewers_state ON merge_request_reviewers USING btree (state) WHERE (state = 2); +CREATE INDEX index_on_merge_request_reviewers_updated_state_by_user_id ON merge_request_reviewers USING btree (updated_state_by_user_id); + CREATE INDEX index_on_merge_requests_for_latest_diffs ON merge_requests USING btree (target_project_id) INCLUDE (id, latest_merge_request_diff_id); COMMENT ON INDEX index_on_merge_requests_for_latest_diffs IS 'Index used to efficiently obtain the oldest merge request for a commit SHA'; @@ -27367,8 +28519,6 @@ CREATE UNIQUE INDEX index_partial_am_alerts_on_project_id_and_fingerprint ON ale CREATE INDEX index_partial_ci_builds_on_user_id_name_parser_features ON ci_builds USING btree (user_id, name) WHERE (((type)::text = 'Ci::Build'::text) AND ((name)::text = ANY (ARRAY[('container_scanning'::character varying)::text, ('dast'::character varying)::text, ('dependency_scanning'::character varying)::text, ('license_management'::character varying)::text, ('license_scanning'::character varying)::text, ('sast'::character varying)::text, ('coverage_fuzzing'::character varying)::text, ('secret_detection'::character varying)::text]))); -CREATE UNIQUE INDEX index_partitioned_foreign_keys_unique_index ON partitioned_foreign_keys USING btree (to_table, from_table, from_column); - CREATE INDEX index_pat_on_user_id_and_expires_at ON personal_access_tokens USING btree (user_id, expires_at); CREATE INDEX index_path_locks_on_path ON path_locks USING btree (path); @@ -27405,10 +28555,10 @@ CREATE UNIQUE INDEX index_project_aliases_on_name ON project_aliases USING btree CREATE INDEX index_project_aliases_on_project_id ON project_aliases USING btree (project_id); -CREATE INDEX index_project_authorizations_on_project_id_user_id ON project_authorizations USING btree (project_id, user_id); - CREATE UNIQUE INDEX index_project_auto_devops_on_project_id ON project_auto_devops USING btree (project_id); +CREATE UNIQUE INDEX index_project_build_artifacts_size_refreshes_on_project_id ON project_build_artifacts_size_refreshes USING btree (project_id); + CREATE UNIQUE INDEX index_project_ci_cd_settings_on_project_id ON project_ci_cd_settings USING btree (project_id); CREATE UNIQUE INDEX index_project_ci_feature_usages_unique_columns ON project_ci_feature_usages USING btree (project_id, feature, default_branch); @@ -27509,12 +28659,6 @@ CREATE INDEX index_projects_aimed_for_deletion ON projects USING btree (marked_f CREATE INDEX index_projects_api_created_at_id_desc ON projects USING btree (created_at, id DESC); -CREATE INDEX index_projects_api_created_at_id_for_archived ON projects USING btree (created_at, id) WHERE ((archived = true) AND (pending_delete = false)); - -CREATE INDEX index_projects_api_created_at_id_for_archived_vis20 ON projects USING btree (created_at, id) WHERE ((archived = true) AND (visibility_level = 20) AND (pending_delete = false)); - -CREATE INDEX index_projects_api_created_at_id_for_vis10 ON projects USING btree (created_at, id) WHERE ((visibility_level = 10) AND (pending_delete = false)); - CREATE INDEX index_projects_api_last_activity_at_id_desc ON projects USING btree (last_activity_at, id DESC); CREATE INDEX index_projects_api_name_id_desc ON projects USING btree (name, id DESC); @@ -27673,13 +28817,21 @@ CREATE UNIQUE INDEX index_redirect_routes_on_path_unique_text_pattern_ops ON red CREATE INDEX index_redirect_routes_on_source_type_and_source_id ON redirect_routes USING btree (source_type, source_id); +CREATE INDEX index_related_epic_links_on_source_id ON related_epic_links USING btree (source_id); + +CREATE UNIQUE INDEX index_related_epic_links_on_source_id_and_target_id ON related_epic_links USING btree (source_id, target_id); + +CREATE INDEX index_related_epic_links_on_target_id ON related_epic_links USING btree (target_id); + CREATE UNIQUE INDEX index_release_links_on_release_id_and_name ON release_links USING btree (release_id, name); CREATE UNIQUE INDEX index_release_links_on_release_id_and_url ON release_links USING btree (release_id, url); CREATE INDEX index_releases_on_author_id_id_created_at ON releases USING btree (author_id, id, created_at); -CREATE INDEX index_releases_on_project_id_and_tag ON releases USING btree (project_id, tag); +CREATE INDEX index_releases_on_project_id_and_released_at_and_id ON releases USING btree (project_id, released_at, id); + +CREATE UNIQUE INDEX index_releases_on_project_tag_unique ON releases USING btree (project_id, tag); CREATE INDEX index_releases_on_released_at ON releases USING btree (released_at); @@ -27783,6 +28935,8 @@ CREATE UNIQUE INDEX index_saml_group_links_on_group_id_and_saml_group_name ON sa CREATE INDEX index_saml_providers_on_group_id ON saml_providers USING btree (group_id); +CREATE UNIQUE INDEX index_saved_replies_on_name_text_pattern_ops ON saved_replies USING btree (user_id, name text_pattern_ops); + CREATE INDEX index_scim_identities_on_group_id ON scim_identities USING btree (group_id); CREATE UNIQUE INDEX index_scim_identities_on_lower_extern_uid_and_group_id ON scim_identities USING btree (lower((extern_uid)::text), group_id); @@ -27793,7 +28947,7 @@ CREATE UNIQUE INDEX index_scim_oauth_access_tokens_on_group_id_and_token_encrypt CREATE INDEX index_secure_ci_builds_on_user_id_name_created_at ON ci_builds USING btree (user_id, name, created_at) WHERE (((type)::text = 'Ci::Build'::text) AND ((name)::text = ANY (ARRAY[('container_scanning'::character varying)::text, ('dast'::character varying)::text, ('dependency_scanning'::character varying)::text, ('license_management'::character varying)::text, ('license_scanning'::character varying)::text, ('sast'::character varying)::text, ('coverage_fuzzing'::character varying)::text, ('apifuzzer_fuzz'::character varying)::text, ('apifuzzer_fuzz_dnd'::character varying)::text, ('secret_detection'::character varying)::text]))); -CREATE INDEX index_security_ci_builds_on_name_and_id_parser_features ON ci_builds USING btree (name, id) 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, ('secret_detection'::character varying)::text, ('coverage_fuzzing'::character varying)::text, ('license_scanning'::character varying)::text])) AND ((type)::text = 'Ci::Build'::text)); +CREATE INDEX index_security_ci_builds_on_name_and_id_parser_features ON ci_builds USING btree (name, id) 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, ('secret_detection'::character varying)::text, ('coverage_fuzzing'::character varying)::text, ('license_scanning'::character varying)::text, ('apifuzzer_fuzz'::character varying)::text, ('apifuzzer_fuzz_dnd'::character varying)::text])) AND ((type)::text = 'Ci::Build'::text)); CREATE INDEX index_security_findings_on_confidence ON security_findings USING btree (confidence); @@ -27815,6 +28969,8 @@ CREATE INDEX index_security_scans_on_pipeline_id ON security_scans USING btree ( CREATE INDEX index_security_scans_on_project_id ON security_scans USING btree (project_id); +CREATE UNIQUE INDEX index_security_training_providers_on_unique_name ON security_training_providers USING btree (name); + CREATE INDEX index_security_trainings_on_project_id ON security_trainings USING btree (project_id); CREATE INDEX index_security_trainings_on_provider_id ON security_trainings USING btree (provider_id); @@ -27901,8 +29057,6 @@ CREATE INDEX index_software_licenses_on_spdx_identifier ON software_licenses USI CREATE UNIQUE INDEX index_software_licenses_on_unique_name ON software_licenses USING btree (name); -CREATE UNIQUE INDEX index_sop_configs_on_project_id ON security_orchestration_policy_configurations USING btree (project_id); - CREATE INDEX index_sop_configurations_project_id_policy_project_id ON security_orchestration_policy_configurations USING btree (security_policy_management_project_id, project_id); CREATE INDEX index_sop_schedules_on_sop_configuration_id ON security_orchestration_policy_rule_schedules USING btree (security_orchestration_policy_configuration_id); @@ -27919,12 +29073,8 @@ CREATE INDEX index_sprints_on_due_date ON sprints USING btree (due_date); CREATE INDEX index_sprints_on_group_id ON sprints USING btree (group_id); -CREATE UNIQUE INDEX index_sprints_on_iterations_cadence_id_and_title ON sprints USING btree (iterations_cadence_id, title); - CREATE UNIQUE INDEX index_sprints_on_project_id_and_iid ON sprints USING btree (project_id, iid); -CREATE UNIQUE INDEX index_sprints_on_project_id_and_title ON sprints USING btree (project_id, title) WHERE (project_id IS NOT NULL); - CREATE INDEX index_sprints_on_title ON sprints USING btree (title); CREATE INDEX index_sprints_on_title_trigram ON sprints USING gin (title gin_trgm_ops); @@ -28025,6 +29175,8 @@ CREATE UNIQUE INDEX index_token_with_ivs_on_hashed_token ON token_with_ivs USING CREATE INDEX index_topics_non_private_projects_count ON topics USING btree (non_private_projects_count DESC, id); +CREATE INDEX index_topics_on_lower_name ON topics USING btree (lower(name)); + CREATE UNIQUE INDEX index_topics_on_name ON topics USING btree (name); CREATE INDEX index_topics_on_name_trigram ON topics USING gin (name gin_trgm_ops); @@ -28043,6 +29195,8 @@ CREATE UNIQUE INDEX index_unique_ci_runner_projects_on_runner_id_and_project_id CREATE UNIQUE INDEX index_unique_issue_metrics_issue_id ON issue_metrics USING btree (issue_id); +CREATE UNIQUE INDEX index_unique_project_authorizations_on_project_id_user_id ON project_authorizations USING btree (project_id, user_id); + CREATE INDEX index_unit_test_failures_failed_at ON ci_unit_test_failures USING btree (failed_at DESC); CREATE UNIQUE INDEX index_unit_test_failures_unique_columns ON ci_unit_test_failures USING btree (unit_test_id, failed_at DESC, build_id); @@ -28395,6 +29549,10 @@ CREATE INDEX partial_index_deployments_for_legacy_successful_deployments ON depl CREATE INDEX partial_index_deployments_for_project_id_and_tag ON deployments USING btree (project_id) WHERE (tag IS TRUE); +CREATE UNIQUE INDEX partial_index_sop_configs_on_namespace_id ON security_orchestration_policy_configurations USING btree (namespace_id) WHERE (namespace_id IS NOT NULL); + +CREATE UNIQUE INDEX partial_index_sop_configs_on_project_id ON security_orchestration_policy_configurations USING btree (project_id) WHERE (project_id IS NOT NULL); + CREATE UNIQUE INDEX snippet_user_mentions_on_snippet_id_and_note_id_index ON snippet_user_mentions USING btree (snippet_id, note_id); CREATE UNIQUE INDEX snippet_user_mentions_on_snippet_id_index ON snippet_user_mentions USING btree (snippet_id) WHERE (note_id IS NULL); @@ -28409,8 +29567,12 @@ CREATE INDEX tmp_gitlab_subscriptions_max_seats_used_migration_2 ON gitlab_subsc CREATE INDEX tmp_idx_vulnerability_occurrences_on_id_where_report_type_7_99 ON vulnerability_occurrences USING btree (id) WHERE (report_type = ANY (ARRAY[7, 99])); +CREATE INDEX tmp_index_ci_job_artifacts_on_id_where_trace_and_expire_at ON ci_job_artifacts USING btree (id) WHERE ((file_type = 3) AND (expire_at = ANY (ARRAY['2021-04-22 00:00:00+00'::timestamp with time zone, '2021-05-22 00:00:00+00'::timestamp with time zone, '2021-06-22 00:00:00+00'::timestamp with time zone, '2022-01-22 00:00:00+00'::timestamp with time zone, '2022-02-22 00:00:00+00'::timestamp with time zone, '2022-03-22 00:00:00+00'::timestamp with time zone, '2022-04-22 00:00:00+00'::timestamp with time zone]))); + CREATE INDEX tmp_index_container_repositories_on_id_migration_state ON container_repositories USING btree (id, migration_state); +CREATE INDEX tmp_index_for_namespace_id_migration_on_group_members ON members USING btree (id) WHERE ((member_namespace_id IS NULL) AND ((type)::text = 'GroupMember'::text)); + CREATE INDEX tmp_index_for_namespace_id_migration_on_routes ON routes USING btree (id) WHERE ((namespace_id IS NULL) AND ((source_type)::text = 'Namespace'::text)); CREATE INDEX tmp_index_members_on_state ON members USING btree (state) WHERE (state = 2); @@ -28423,6 +29585,10 @@ CREATE UNIQUE INDEX tmp_index_on_tmp_project_id_on_namespaces ON namespaces USIN CREATE INDEX tmp_index_on_vulnerabilities_non_dismissed ON vulnerabilities USING btree (id) WHERE (state <> 2); +CREATE INDEX tmp_index_projects_on_id_and_runners_token ON projects USING btree (id, runners_token) WHERE (runners_token IS NOT NULL); + +CREATE INDEX tmp_index_projects_on_id_and_runners_token_encrypted ON projects USING btree (id, runners_token_encrypted) WHERE (runners_token_encrypted IS NOT NULL); + CREATE UNIQUE INDEX uniq_pkgs_deb_grp_architectures_on_distribution_id_and_name ON packages_debian_group_architectures USING btree (distribution_id, name); CREATE UNIQUE INDEX uniq_pkgs_deb_grp_components_on_distribution_id_and_name ON packages_debian_group_components USING btree (distribution_id, name); @@ -29089,6 +30255,390 @@ ALTER INDEX index_issue_stage_events_project_duration ATTACH PARTITION gitlab_pa ALTER INDEX index_issue_stage_events_group_in_progress_duration ATTACH PARTITION gitlab_partitions_static.index_ff8741d8d7; +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_00_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_00_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_00_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_01_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_01_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_01_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_02_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_02_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_02_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_03_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_03_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_03_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_04_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_04_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_04_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_05_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_05_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_05_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_06_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_06_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_06_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_07_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_07_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_07_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_08_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_08_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_08_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_09_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_09_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_09_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_10_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_10_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_10_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_11_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_11_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_11_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_12_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_12_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_12_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_13_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_13_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_13_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_14_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_14_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_14_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_15_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_15_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_15_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_16_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_16_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_16_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_17_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_17_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_17_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_18_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_18_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_18_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_19_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_19_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_19_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_20_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_20_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_20_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_21_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_21_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_21_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_22_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_22_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_22_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_23_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_23_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_23_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_24_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_24_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_24_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_25_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_25_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_25_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_26_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_26_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_26_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_27_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_27_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_27_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_28_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_28_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_28_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_29_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_29_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_29_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_30_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_30_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_30_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_31_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_31_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_31_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_32_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_32_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_32_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_33_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_33_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_33_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_34_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_34_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_34_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_35_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_35_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_35_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_36_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_36_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_36_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_37_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_37_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_37_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_38_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_38_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_38_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_39_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_39_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_39_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_40_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_40_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_40_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_41_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_41_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_41_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_42_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_42_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_42_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_43_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_43_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_43_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_44_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_44_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_44_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_45_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_45_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_45_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_46_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_46_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_46_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_47_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_47_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_47_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_48_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_48_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_48_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_49_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_49_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_49_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_50_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_50_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_50_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_51_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_51_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_51_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_52_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_52_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_52_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_53_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_53_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_53_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_54_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_54_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_54_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_55_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_55_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_55_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_56_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_56_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_56_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_57_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_57_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_57_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_58_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_58_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_58_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_59_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_59_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_59_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_60_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_60_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_60_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_61_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_61_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_61_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_62_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_62_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_62_search_vector_idx; + +ALTER INDEX index_issue_search_data_on_issue_id ATTACH PARTITION gitlab_partitions_static.issue_search_data_63_issue_id_idx; + +ALTER INDEX issue_search_data_pkey ATTACH PARTITION gitlab_partitions_static.issue_search_data_63_pkey; + +ALTER INDEX index_issue_search_data_on_search_vector ATTACH PARTITION gitlab_partitions_static.issue_search_data_63_search_vector_idx; + ALTER INDEX index_product_analytics_events_experimental_project_and_time ATTACH PARTITION gitlab_partitions_static.product_analytics_events_expe_project_id_collector_tstamp_idx10; ALTER INDEX index_product_analytics_events_experimental_project_and_time ATTACH PARTITION gitlab_partitions_static.product_analytics_events_expe_project_id_collector_tstamp_idx11; @@ -29355,8 +30905,6 @@ CREATE TRIGGER ci_pipelines_loose_fk_trigger AFTER DELETE ON ci_pipelines REFERE CREATE TRIGGER ci_runners_loose_fk_trigger AFTER DELETE ON ci_runners REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records(); -CREATE TRIGGER external_pull_requests_loose_fk_trigger AFTER DELETE ON external_pull_requests REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records(); - CREATE TRIGGER merge_requests_loose_fk_trigger AFTER DELETE ON merge_requests REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records(); CREATE TRIGGER namespaces_loose_fk_trigger AFTER DELETE ON namespaces REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records(); @@ -29617,6 +31165,9 @@ ALTER TABLE ONLY epics ALTER TABLE ONLY ci_pipelines ADD CONSTRAINT fk_3d34ab2e06 FOREIGN KEY (pipeline_schedule_id) REFERENCES ci_pipeline_schedules(id) ON DELETE SET NULL; +ALTER TABLE ONLY merge_request_reviewers + ADD CONSTRAINT fk_3d674b9f23 FOREIGN KEY (updated_state_by_user_id) REFERENCES users(id) ON DELETE SET NULL; + ALTER TABLE ONLY ci_pipeline_schedule_variables ADD CONSTRAINT fk_41c35fda51 FOREIGN KEY (pipeline_schedule_id) REFERENCES ci_pipeline_schedules(id) ON DELETE CASCADE; @@ -29905,6 +31456,9 @@ ALTER TABLE ONLY bulk_import_entities ALTER TABLE ONLY users ADD CONSTRAINT fk_a4b8fefe3e FOREIGN KEY (managing_group_id) REFERENCES namespaces(id) ON DELETE SET NULL; +ALTER TABLE ONLY security_orchestration_policy_configurations + ADD CONSTRAINT fk_a50430b375 FOREIGN KEY (namespace_id) REFERENCES namespaces(id) ON DELETE CASCADE; + ALTER TABLE ONLY lfs_objects_projects ADD CONSTRAINT fk_a56e02279c FOREIGN KEY (lfs_object_id) REFERENCES lfs_objects(id) ON DELETE RESTRICT NOT VALID; @@ -29941,6 +31495,9 @@ ALTER TABLE ONLY merge_request_metrics ALTER TABLE ONLY dast_profile_schedules ADD CONSTRAINT fk_aef03d62e5 FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL; +ALTER TABLE ONLY merge_request_assignees + ADD CONSTRAINT fk_af036e3261 FOREIGN KEY (updated_state_by_user_id) REFERENCES users(id) ON DELETE SET NULL; + ALTER TABLE ONLY analytics_cycle_analytics_group_stages ADD CONSTRAINT fk_analytics_cycle_analytics_group_stages_group_value_stream_id FOREIGN KEY (group_value_stream_id) REFERENCES analytics_cycle_analytics_group_value_streams(id) ON DELETE CASCADE; @@ -30301,6 +31858,9 @@ ALTER TABLE ONLY packages_debian_group_distributions ALTER TABLE ONLY packages_conan_file_metadata ADD CONSTRAINT fk_rails_0afabd9328 FOREIGN KEY (package_file_id) REFERENCES packages_package_files(id) ON DELETE CASCADE; +ALTER TABLE ONLY related_epic_links + ADD CONSTRAINT fk_rails_0b72027748 FOREIGN KEY (target_id) REFERENCES epics(id) ON DELETE CASCADE; + ALTER TABLE ONLY ci_build_pending_states ADD CONSTRAINT fk_rails_0bbbfeaf9d FOREIGN KEY (build_id) REFERENCES ci_builds(id) ON DELETE CASCADE; @@ -30367,6 +31927,9 @@ ALTER TABLE ONLY bulk_imports ALTER TABLE ONLY diff_note_positions ADD CONSTRAINT fk_rails_13c7212859 FOREIGN KEY (note_id) REFERENCES notes(id) ON DELETE CASCADE; +ALTER TABLE ONLY analytics_cycle_analytics_aggregations + ADD CONSTRAINT fk_rails_13c8374c7a FOREIGN KEY (group_id) REFERENCES namespaces(id) ON DELETE CASCADE; + ALTER TABLE ONLY users_security_dashboard_projects ADD CONSTRAINT fk_rails_150cd5682c FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; @@ -31135,6 +32698,9 @@ ALTER TABLE ONLY list_user_preferences ALTER TABLE ONLY merge_request_cleanup_schedules ADD CONSTRAINT fk_rails_92dd0e705c FOREIGN KEY (merge_request_id) REFERENCES merge_requests(id) ON DELETE CASCADE; +ALTER TABLE ONLY project_build_artifacts_size_refreshes + ADD CONSTRAINT fk_rails_936db5fc44 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; + ALTER TABLE ONLY board_labels ADD CONSTRAINT fk_rails_9374a16edd FOREIGN KEY (board_id) REFERENCES boards(id) ON DELETE CASCADE; @@ -31276,6 +32842,9 @@ ALTER TABLE ONLY resource_milestone_events ALTER TABLE ONLY term_agreements ADD CONSTRAINT fk_rails_a88721bcdf FOREIGN KEY (term_id) REFERENCES application_setting_terms(id); +ALTER TABLE ONLY saved_replies + ADD CONSTRAINT fk_rails_a8bf5bf111 FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE; + ALTER TABLE ONLY ci_pipeline_artifacts ADD CONSTRAINT fk_rails_a9e811a466 FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE; @@ -31432,6 +33001,9 @@ ALTER TABLE ONLY group_deploy_keys_groups ALTER TABLE ONLY merge_request_user_mentions ADD CONSTRAINT fk_rails_c440b9ea31 FOREIGN KEY (note_id) REFERENCES notes(id) ON DELETE CASCADE; +ALTER TABLE ONLY related_epic_links + ADD CONSTRAINT fk_rails_c464534def FOREIGN KEY (source_id) REFERENCES epics(id) ON DELETE CASCADE; + ALTER TABLE ONLY boards_epic_board_recent_visits ADD CONSTRAINT fk_rails_c4dcba4a3e FOREIGN KEY (group_id) REFERENCES namespaces(id) ON DELETE CASCADE; @@ -31801,6 +33373,12 @@ ALTER TABLE ONLY timelogs ALTER TABLE ONLY u2f_registrations ADD CONSTRAINT fk_u2f_registrations_user_id FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE; +ALTER TABLE issue_search_data + ADD CONSTRAINT issue_search_data_issue_id_fkey FOREIGN KEY (issue_id) REFERENCES issues(id) ON DELETE CASCADE; + +ALTER TABLE issue_search_data + ADD CONSTRAINT issue_search_data_project_id_fkey FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; + ALTER TABLE product_analytics_events_experimental ADD CONSTRAINT product_analytics_events_experimental_project_id_fkey FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; |