diff options
| author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-05-08 15:18:11 +0000 |
|---|---|---|
| committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-05-08 15:18:11 +0000 |
| commit | dcc56fe601580b5d8f6c3da32550c6523f2baff3 (patch) | |
| tree | f68c28bf7c8715de7242464b344620ae5c394036 /db | |
| parent | 571b02efc9442e73538c3438eb593a83d7807779 (diff) | |
| download | gitlab-ce-dcc56fe601580b5d8f6c3da32550c6523f2baff3.tar.gz | |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'db')
| -rw-r--r-- | db/docs/p_ci_builds.yml | 14 | ||||
| -rw-r--r-- | db/migrate/20230504084524_remove_gitlab_import_source.rb | 32 | ||||
| -rw-r--r-- | db/migrate/20230504112809_add_anthropic_api_key_application_setting.rb | 8 | ||||
| -rw-r--r-- | db/post_migrate/20230501090213_convert_ci_builds_to_list_partitioning.rb | 85 | ||||
| -rw-r--r-- | db/post_migrate/20230501165244_remove_software_license_policies_without_scan_result_policy_id.rb | 21 | ||||
| -rw-r--r-- | db/schema_migrations/20230501090213 | 1 | ||||
| -rw-r--r-- | db/schema_migrations/20230501165244 | 1 | ||||
| -rw-r--r-- | db/schema_migrations/20230504084524 | 1 | ||||
| -rw-r--r-- | db/schema_migrations/20230504112809 | 1 | ||||
| -rw-r--r-- | db/structure.sql | 178 |
10 files changed, 330 insertions, 12 deletions
diff --git a/db/docs/p_ci_builds.yml b/db/docs/p_ci_builds.yml new file mode 100644 index 00000000000..3fafd1e177f --- /dev/null +++ b/db/docs/p_ci_builds.yml @@ -0,0 +1,14 @@ +--- +table_name: p_ci_builds +classes: +- Ci::Bridge +- Ci::Build +- Ci::Processable +- CommitStatus +- GenericCommitStatus +feature_categories: +- continuous_integration +description: Routing table for ci_builds +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/115485 +milestone: '16.0' +gitlab_schema: gitlab_ci diff --git a/db/migrate/20230504084524_remove_gitlab_import_source.rb b/db/migrate/20230504084524_remove_gitlab_import_source.rb new file mode 100644 index 00000000000..287b1cd3139 --- /dev/null +++ b/db/migrate/20230504084524_remove_gitlab_import_source.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +class RemoveGitlabImportSource < Gitlab::Database::Migration[2.1] + include Gitlab::Utils::StrongMemoize + disable_ddl_transaction! + + restrict_gitlab_migration gitlab_schema: :gitlab_main + + class ApplicationSetting < MigrationRecord + end + + def up + return if import_sources.empty? + + new_sources = import_sources - ['gitlab'] + + ApplicationSetting.update_all(import_sources: new_sources.to_yaml) + end + + def down + ## a reversion is not needed as the Gitlab.com importer is no longer + # a supported import source. Attempting to save it as one will result + # in an ActiveRecord error. + end + + def import_sources + ## the last ApplicationSetting record is used to determine application settings + import_sources = ApplicationSetting.last&.import_sources + import_sources.nil? ? [] : YAML.safe_load(import_sources) + end + strong_memoize_attr(:import_sources) +end diff --git a/db/migrate/20230504112809_add_anthropic_api_key_application_setting.rb b/db/migrate/20230504112809_add_anthropic_api_key_application_setting.rb new file mode 100644 index 00000000000..aacb26643b9 --- /dev/null +++ b/db/migrate/20230504112809_add_anthropic_api_key_application_setting.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +class AddAnthropicApiKeyApplicationSetting < Gitlab::Database::Migration[2.1] + def change + add_column :application_settings, :encrypted_anthropic_api_key, :binary + add_column :application_settings, :encrypted_anthropic_api_key_iv, :binary + end +end diff --git a/db/post_migrate/20230501090213_convert_ci_builds_to_list_partitioning.rb b/db/post_migrate/20230501090213_convert_ci_builds_to_list_partitioning.rb new file mode 100644 index 00000000000..bfc0b43f8f5 --- /dev/null +++ b/db/post_migrate/20230501090213_convert_ci_builds_to_list_partitioning.rb @@ -0,0 +1,85 @@ +# frozen_string_literal: true + +class ConvertCiBuildsToListPartitioning < Gitlab::Database::Migration[2.1] + include Gitlab::Database::PartitioningMigrationHelpers + + disable_ddl_transaction! + + TABLE_NAME = :ci_builds + PARENT_TABLE_NAME = :p_ci_builds + FIRST_PARTITION = 100 + PARTITION_COLUMN = :partition_id + FOREIGN_KEYS = { + p_ci_builds_metadata: :fk_e20479742e_p, + p_ci_runner_machine_builds: :fk_bb490f12fe_p + } + + def up + convert_table_to_first_list_partition( + table_name: TABLE_NAME, + partitioning_column: PARTITION_COLUMN, + parent_table_name: PARENT_TABLE_NAME, + initial_partitioning_value: FIRST_PARTITION, + lock_tables: %w[ci_pipelines ci_stages ci_builds ci_resource_groups] + ) + end + + def down + # rubocop:disable Migration/WithLockRetriesDisallowedMethod + with_lock_retries(raise_on_exhaustion: true) do + drop_foreign_keys + + execute(<<~SQL) + ALTER TABLE #{PARENT_TABLE_NAME} DETACH PARTITION #{TABLE_NAME}; + ALTER SEQUENCE ci_builds_id_seq OWNED BY #{TABLE_NAME}.id; + SQL + + drop_table PARENT_TABLE_NAME + recreate_partition_foreign_keys + end + # rubocop:enable Migration/WithLockRetriesDisallowedMethod + + finalize_foreign_keys_creation + + prepare_constraint_for_list_partitioning( + table_name: TABLE_NAME, + partitioning_column: PARTITION_COLUMN, + parent_table_name: PARENT_TABLE_NAME, + initial_partitioning_value: FIRST_PARTITION + ) + end + + private + + def drop_foreign_keys + FOREIGN_KEYS.each do |source, name| + remove_foreign_key_if_exists source, name: name + end + end + + def recreate_partition_foreign_keys + FOREIGN_KEYS.each do |source, name| + Gitlab::Database::PostgresPartitionedTable.each_partition(source) do |partition| + execute(<<~SQL) + ALTER TABLE #{partition.identifier} + ADD CONSTRAINT #{name} FOREIGN KEY (partition_id, build_id) + REFERENCES #{TABLE_NAME}(partition_id, id) + ON UPDATE CASCADE ON DELETE CASCADE NOT VALID; + SQL + end + end + end + + def finalize_foreign_keys_creation + FOREIGN_KEYS.each do |source, name| + add_concurrent_partitioned_foreign_key(source, TABLE_NAME, + column: [:partition_id, :build_id], + target_column: [:partition_id, :id], + reverse_lock_order: true, + on_update: :cascade, + on_delete: :cascade, + name: name + ) + end + end +end diff --git a/db/post_migrate/20230501165244_remove_software_license_policies_without_scan_result_policy_id.rb b/db/post_migrate/20230501165244_remove_software_license_policies_without_scan_result_policy_id.rb new file mode 100644 index 00000000000..0e3b15a933c --- /dev/null +++ b/db/post_migrate/20230501165244_remove_software_license_policies_without_scan_result_policy_id.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +class RemoveSoftwareLicensePoliciesWithoutScanResultPolicyId < Gitlab::Database::Migration[2.1] + disable_ddl_transaction! + + restrict_gitlab_migration gitlab_schema: :gitlab_main + + BATCH_SIZE = 1000 + + def up + each_batch_range('software_license_policies', + scope: ->(table) { table.where(scan_result_policy_id: nil) }, + of: BATCH_SIZE) do |min, max| + execute("DELETE FROM software_license_policies WHERE id BETWEEN #{min} AND #{max}") + end + end + + def down + # NO-OP + end +end diff --git a/db/schema_migrations/20230501090213 b/db/schema_migrations/20230501090213 new file mode 100644 index 00000000000..64147bd9018 --- /dev/null +++ b/db/schema_migrations/20230501090213 @@ -0,0 +1 @@ +99b301394b83a9260da47d2bb56356f2421fcb7d8cf0600f56af13f5f57ab127
\ No newline at end of file diff --git a/db/schema_migrations/20230501165244 b/db/schema_migrations/20230501165244 new file mode 100644 index 00000000000..df068bbd3fd --- /dev/null +++ b/db/schema_migrations/20230501165244 @@ -0,0 +1 @@ +8d1f891b30ff45432ae9dff5d97d6d241dd98c168f4b5fe6db6637bf93dd18e3
\ No newline at end of file diff --git a/db/schema_migrations/20230504084524 b/db/schema_migrations/20230504084524 new file mode 100644 index 00000000000..00d15c6398c --- /dev/null +++ b/db/schema_migrations/20230504084524 @@ -0,0 +1 @@ +f9022593be2e4304e2a0bc34410284ba3543211d2e3faa6fa7b7ba8cd703ffb4
\ No newline at end of file diff --git a/db/schema_migrations/20230504112809 b/db/schema_migrations/20230504112809 new file mode 100644 index 00000000000..cdf2abc6d7b --- /dev/null +++ b/db/schema_migrations/20230504112809 @@ -0,0 +1 @@ +73e02a60ed38365748c54399ccdd7ccfdfaac901682e84c1f52b113b30f682e6
\ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index 79bc3c1c793..e93f83f425c 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -11829,6 +11829,8 @@ CREATE TABLE application_settings ( encrypted_tofa_access_token_expires_in bytea, encrypted_tofa_access_token_expires_in_iv bytea, remember_me_enabled boolean DEFAULT true NOT NULL, + encrypted_anthropic_api_key bytea, + encrypted_anthropic_api_key_iv bytea, CONSTRAINT app_settings_container_reg_cleanup_tags_max_list_size_positive CHECK ((container_registry_cleanup_tags_service_max_list_size >= 0)), CONSTRAINT app_settings_container_registry_pre_import_tags_rate_positive CHECK ((container_registry_pre_import_tags_rate >= (0)::numeric)), CONSTRAINT app_settings_dep_proxy_ttl_policies_worker_capacity_positive CHECK ((dependency_proxy_ttl_group_policy_worker_capacity >= 0)), @@ -13071,7 +13073,7 @@ CREATE TABLE ci_build_trace_metadata ( partition_id bigint DEFAULT 100 NOT NULL ); -CREATE TABLE ci_builds ( +CREATE TABLE p_ci_builds ( status character varying, finished_at timestamp without time zone, created_at timestamp without time zone, @@ -13116,9 +13118,9 @@ CREATE TABLE ci_builds ( id bigint NOT NULL, stage_id bigint, partition_id bigint NOT NULL, - CONSTRAINT check_1e2fbd1b39 CHECK ((lock_version IS NOT NULL)), - CONSTRAINT partitioning_constraint CHECK ((partition_id = 100)) -); + CONSTRAINT check_1e2fbd1b39 CHECK ((lock_version IS NOT NULL)) +) +PARTITION BY LIST (partition_id); CREATE SEQUENCE ci_builds_id_seq START WITH 1 @@ -13127,7 +13129,56 @@ CREATE SEQUENCE ci_builds_id_seq NO MAXVALUE CACHE 1; -ALTER SEQUENCE ci_builds_id_seq OWNED BY ci_builds.id; +ALTER SEQUENCE ci_builds_id_seq OWNED BY p_ci_builds.id; + +CREATE TABLE ci_builds ( + status character varying, + finished_at timestamp without time zone, + created_at timestamp without time zone, + updated_at timestamp without time zone, + started_at timestamp without time zone, + runner_id integer, + coverage double precision, + commit_id integer, + name character varying, + options text, + allow_failure boolean DEFAULT false NOT NULL, + stage character varying, + trigger_request_id integer, + stage_idx integer, + tag boolean, + ref character varying, + user_id integer, + type character varying, + target_url character varying, + description character varying, + project_id integer, + erased_by_id integer, + erased_at timestamp without time zone, + artifacts_expire_at timestamp without time zone, + environment character varying, + "when" character varying, + yaml_variables text, + queued_at timestamp without time zone, + lock_version integer DEFAULT 0, + coverage_regex character varying, + auto_canceled_by_id integer, + retried boolean, + protected boolean, + failure_reason integer, + scheduled_at timestamp with time zone, + token_encrypted character varying, + upstream_pipeline_id integer, + resource_group_id bigint, + waiting_for_resource_at timestamp with time zone, + processed boolean, + scheduling_type smallint, + id bigint DEFAULT nextval('ci_builds_id_seq'::regclass) NOT NULL, + stage_id bigint, + partition_id bigint NOT NULL, + CONSTRAINT check_1e2fbd1b39 CHECK ((lock_version IS NOT NULL)) +); +ALTER TABLE ONLY p_ci_builds ATTACH PARTITION ci_builds FOR VALUES IN ('100'); CREATE TABLE p_ci_builds_metadata ( project_id integer NOT NULL, @@ -24841,8 +24892,6 @@ ALTER TABLE ONLY ci_build_pending_states ALTER COLUMN id SET DEFAULT nextval('ci ALTER TABLE ONLY ci_build_trace_chunks ALTER COLUMN id SET DEFAULT nextval('ci_build_trace_chunks_id_seq'::regclass); -ALTER TABLE ONLY ci_builds ALTER COLUMN id SET DEFAULT nextval('ci_builds_id_seq'::regclass); - ALTER TABLE ONLY ci_builds_runner_session ALTER COLUMN id SET DEFAULT nextval('ci_builds_runner_session_id_seq'::regclass); ALTER TABLE ONLY ci_daily_build_group_report_results ALTER COLUMN id SET DEFAULT nextval('ci_daily_build_group_report_results_id_seq'::regclass); @@ -25361,6 +25410,8 @@ ALTER TABLE ONLY operations_user_lists ALTER COLUMN id SET DEFAULT nextval('oper ALTER TABLE ONLY organizations ALTER COLUMN id SET DEFAULT nextval('organizations_id_seq'::regclass); +ALTER TABLE ONLY p_ci_builds ALTER COLUMN id SET DEFAULT nextval('ci_builds_id_seq'::regclass); + ALTER TABLE ONLY p_ci_builds_metadata ALTER COLUMN id SET DEFAULT nextval('ci_builds_metadata_id_seq'::regclass); ALTER TABLE ONLY packages_build_infos ALTER COLUMN id SET DEFAULT nextval('packages_build_infos_id_seq'::regclass); @@ -26672,6 +26723,9 @@ ALTER TABLE ONLY p_ci_builds_metadata ALTER TABLE ONLY ci_builds_metadata ADD CONSTRAINT ci_builds_metadata_pkey PRIMARY KEY (id, partition_id); +ALTER TABLE ONLY p_ci_builds + ADD CONSTRAINT p_ci_builds_pkey PRIMARY KEY (id, partition_id); + ALTER TABLE ONLY ci_builds ADD CONSTRAINT ci_builds_pkey PRIMARY KEY (id, partition_id); @@ -29289,6 +29343,8 @@ CREATE INDEX ca_aggregations_last_full_run_at ON analytics_cycle_analytics_aggre 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 p_ci_builds_status_created_at_project_id_idx ON ONLY p_ci_builds USING btree (status, created_at, project_id) WHERE ((type)::text = 'Ci::Build'::text); + CREATE INDEX ci_builds_gitlab_monitor_metrics ON ci_builds USING btree (status, created_at, project_id) WHERE ((type)::text = 'Ci::Build'::text); CREATE UNIQUE INDEX ci_job_token_scope_links_source_and_target_project_direction ON ci_job_token_project_scope_links USING btree (source_project_id, target_project_id, direction); @@ -29903,40 +29959,76 @@ CREATE INDEX p_ci_builds_metadata_project_id_idx ON ONLY p_ci_builds_metadata US CREATE INDEX index_ci_builds_metadata_on_project_id ON ci_builds_metadata USING btree (project_id); +CREATE INDEX p_ci_builds_auto_canceled_by_id_idx ON ONLY p_ci_builds USING btree (auto_canceled_by_id); + CREATE INDEX index_ci_builds_on_auto_canceled_by_id ON ci_builds USING btree (auto_canceled_by_id); +CREATE INDEX p_ci_builds_commit_id_stage_idx_created_at_idx ON ONLY p_ci_builds USING btree (commit_id, stage_idx, created_at); + CREATE INDEX index_ci_builds_on_commit_id_and_stage_idx_and_created_at ON ci_builds USING btree (commit_id, stage_idx, created_at); +CREATE INDEX p_ci_builds_commit_id_status_type_idx ON ONLY p_ci_builds USING btree (commit_id, status, type); + CREATE INDEX index_ci_builds_on_commit_id_and_status_and_type ON ci_builds USING btree (commit_id, status, type); +CREATE INDEX p_ci_builds_commit_id_type_name_ref_idx ON ONLY p_ci_builds USING btree (commit_id, type, name, ref); + CREATE INDEX index_ci_builds_on_commit_id_and_type_and_name_and_ref ON ci_builds USING btree (commit_id, type, name, ref); +CREATE INDEX p_ci_builds_commit_id_type_ref_idx ON ONLY p_ci_builds USING btree (commit_id, type, ref); + CREATE INDEX index_ci_builds_on_commit_id_and_type_and_ref ON ci_builds USING btree (commit_id, type, ref); +CREATE INDEX p_ci_builds_commit_id_artifacts_expire_at_id_idx ON ONLY p_ci_builds USING btree (commit_id, artifacts_expire_at, id) WHERE (((type)::text = 'Ci::Build'::text) AND ((retried = false) OR (retried IS NULL)) AND ((name)::text = ANY (ARRAY[('sast'::character varying)::text, ('secret_detection'::character varying)::text, ('dependency_scanning'::character varying)::text, ('container_scanning'::character varying)::text, ('dast'::character varying)::text]))); + CREATE INDEX index_ci_builds_on_commit_id_artifacts_expired_at_and_id ON ci_builds USING btree (commit_id, artifacts_expire_at, id) WHERE (((type)::text = 'Ci::Build'::text) AND ((retried = false) OR (retried IS NULL)) AND ((name)::text = ANY (ARRAY[('sast'::character varying)::text, ('secret_detection'::character varying)::text, ('dependency_scanning'::character varying)::text, ('container_scanning'::character varying)::text, ('dast'::character varying)::text]))); +CREATE INDEX p_ci_builds_project_id_id_idx ON ONLY p_ci_builds USING btree (project_id, id); + CREATE INDEX index_ci_builds_on_project_id_and_id ON ci_builds USING btree (project_id, id); +CREATE INDEX p_ci_builds_project_id_name_ref_idx ON ONLY p_ci_builds USING btree (project_id, name, ref) WHERE (((type)::text = 'Ci::Build'::text) AND ((status)::text = 'success'::text) AND ((retried = false) OR (retried IS NULL))); + CREATE INDEX index_ci_builds_on_project_id_and_name_and_ref ON ci_builds USING btree (project_id, name, ref) WHERE (((type)::text = 'Ci::Build'::text) AND ((status)::text = 'success'::text) AND ((retried = false) OR (retried IS NULL))); +CREATE INDEX p_ci_builds_resource_group_id_status_commit_id_idx ON ONLY p_ci_builds USING btree (resource_group_id, status, commit_id) WHERE (resource_group_id IS NOT NULL); + CREATE INDEX index_ci_builds_on_resource_group_and_status_and_commit_id ON ci_builds USING btree (resource_group_id, status, commit_id) WHERE (resource_group_id IS NOT NULL); +CREATE INDEX p_ci_builds_runner_id_id_idx ON ONLY p_ci_builds USING btree (runner_id, id DESC); + CREATE INDEX index_ci_builds_on_runner_id_and_id_desc ON ci_builds USING btree (runner_id, id DESC); +CREATE INDEX p_ci_builds_stage_id_idx ON ONLY p_ci_builds USING btree (stage_id); + CREATE INDEX index_ci_builds_on_stage_id ON ci_builds USING btree (stage_id); +CREATE INDEX p_ci_builds_status_type_runner_id_idx ON ONLY p_ci_builds USING btree (status, type, runner_id); + CREATE INDEX index_ci_builds_on_status_and_type_and_runner_id ON ci_builds USING btree (status, type, runner_id); +CREATE INDEX p_ci_builds_updated_at_idx ON ONLY p_ci_builds USING btree (updated_at); + CREATE INDEX index_ci_builds_on_updated_at ON ci_builds USING btree (updated_at); +CREATE INDEX p_ci_builds_upstream_pipeline_id_idx ON ONLY p_ci_builds USING btree (upstream_pipeline_id) WHERE (upstream_pipeline_id IS NOT NULL); + CREATE INDEX index_ci_builds_on_upstream_pipeline_id ON ci_builds USING btree (upstream_pipeline_id) WHERE (upstream_pipeline_id IS NOT NULL); +CREATE INDEX p_ci_builds_user_id_idx ON ONLY p_ci_builds USING btree (user_id); + CREATE INDEX index_ci_builds_on_user_id ON ci_builds USING btree (user_id); +CREATE INDEX p_ci_builds_user_id_created_at_idx ON ONLY p_ci_builds USING btree (user_id, created_at) WHERE ((type)::text = 'Ci::Build'::text); + CREATE INDEX index_ci_builds_on_user_id_and_created_at_and_type_eq_ci_build ON ci_builds USING btree (user_id, created_at) WHERE ((type)::text = 'Ci::Build'::text); +CREATE INDEX p_ci_builds_project_id_status_idx ON ONLY p_ci_builds USING btree (project_id, status) WHERE (((type)::text = 'Ci::Build'::text) AND ((status)::text = ANY (ARRAY[('running'::character varying)::text, ('pending'::character varying)::text, ('created'::character varying)::text]))); + CREATE INDEX index_ci_builds_project_id_and_status_for_live_jobs_partial2 ON ci_builds USING btree (project_id, status) WHERE (((type)::text = 'Ci::Build'::text) AND ((status)::text = ANY (ARRAY[('running'::character varying)::text, ('pending'::character varying)::text, ('created'::character varying)::text]))); +CREATE INDEX p_ci_builds_runner_id_idx ON ONLY p_ci_builds USING btree (runner_id) WHERE (((status)::text = 'running'::text) AND ((type)::text = 'Ci::Build'::text)); + CREATE INDEX index_ci_builds_runner_id_running ON ci_builds USING btree (runner_id) WHERE (((status)::text = 'running'::text) AND ((type)::text = 'Ci::Build'::text)); CREATE UNIQUE INDEX index_ci_builds_runner_session_on_build_id ON ci_builds_runner_session USING btree (build_id); @@ -31755,6 +31847,8 @@ CREATE INDEX index_pages_domains_on_verified_at_and_enabled_until ON pages_domai CREATE INDEX index_pages_domains_on_wildcard ON pages_domains USING btree (wildcard); +CREATE INDEX p_ci_builds_user_id_name_idx ON ONLY p_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 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 INDEX index_pat_on_user_id_and_expires_at ON personal_access_tokens USING btree (user_id, expires_at); @@ -32287,8 +32381,12 @@ CREATE UNIQUE INDEX index_search_namespace_index_assignments_uniqueness_index_ty CREATE UNIQUE INDEX index_search_namespace_index_assignments_uniqueness_on_index_id ON search_namespace_index_assignments USING btree (namespace_id, search_index_id); +CREATE INDEX p_ci_builds_user_id_name_created_at_idx ON ONLY p_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_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 p_ci_builds_name_id_idx ON ONLY p_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_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_policy_configurations_on_bot_user_id ON security_orchestration_policy_configurations USING btree (bot_user_id) WHERE (bot_user_id IS NOT NULL); @@ -32987,6 +33085,10 @@ CREATE INDEX note_mentions_temp_index ON notes USING btree (id, noteable_type) W CREATE UNIQUE INDEX one_canonical_wiki_page_slug_per_metadata ON wiki_page_slugs USING btree (wiki_page_meta_id) WHERE (canonical = true); +CREATE INDEX p_ci_builds_scheduled_at_idx ON ONLY p_ci_builds USING btree (scheduled_at) WHERE ((scheduled_at IS NOT NULL) AND ((type)::text = 'Ci::Build'::text) AND ((status)::text = 'scheduled'::text)); + +CREATE UNIQUE INDEX p_ci_builds_token_encrypted_partition_id_idx ON ONLY p_ci_builds USING btree (token_encrypted, partition_id) WHERE (token_encrypted IS NOT NULL); + CREATE INDEX package_name_index ON packages_packages USING btree (name); CREATE INDEX packages_packages_failed_verification ON packages_package_files USING btree (verification_retry_at NULLS FIRST) WHERE (verification_state = 3); @@ -34407,8 +34509,12 @@ ALTER INDEX product_analytics_events_experimental_pkey ATTACH PARTITION gitlab_p ALTER INDEX product_analytics_events_experimental_pkey ATTACH PARTITION gitlab_partitions_static.product_analytics_events_experimental_63_pkey; +ALTER INDEX p_ci_builds_status_created_at_project_id_idx ATTACH PARTITION ci_builds_gitlab_monitor_metrics; + ALTER INDEX p_ci_builds_metadata_pkey ATTACH PARTITION ci_builds_metadata_pkey; +ALTER INDEX p_ci_builds_pkey ATTACH PARTITION ci_builds_pkey; + ALTER INDEX p_ci_builds_metadata_build_id_idx ATTACH PARTITION index_ci_builds_metadata_on_build_id_and_has_exposed_artifacts; ALTER INDEX p_ci_builds_metadata_build_id_id_idx ATTACH PARTITION index_ci_builds_metadata_on_build_id_and_id_and_interruptible; @@ -34417,6 +34523,52 @@ ALTER INDEX p_ci_builds_metadata_build_id_partition_id_idx ATTACH PARTITION inde ALTER INDEX p_ci_builds_metadata_project_id_idx ATTACH PARTITION index_ci_builds_metadata_on_project_id; +ALTER INDEX p_ci_builds_auto_canceled_by_id_idx ATTACH PARTITION index_ci_builds_on_auto_canceled_by_id; + +ALTER INDEX p_ci_builds_commit_id_stage_idx_created_at_idx ATTACH PARTITION index_ci_builds_on_commit_id_and_stage_idx_and_created_at; + +ALTER INDEX p_ci_builds_commit_id_status_type_idx ATTACH PARTITION index_ci_builds_on_commit_id_and_status_and_type; + +ALTER INDEX p_ci_builds_commit_id_type_name_ref_idx ATTACH PARTITION index_ci_builds_on_commit_id_and_type_and_name_and_ref; + +ALTER INDEX p_ci_builds_commit_id_type_ref_idx ATTACH PARTITION index_ci_builds_on_commit_id_and_type_and_ref; + +ALTER INDEX p_ci_builds_commit_id_artifacts_expire_at_id_idx ATTACH PARTITION index_ci_builds_on_commit_id_artifacts_expired_at_and_id; + +ALTER INDEX p_ci_builds_project_id_id_idx ATTACH PARTITION index_ci_builds_on_project_id_and_id; + +ALTER INDEX p_ci_builds_project_id_name_ref_idx ATTACH PARTITION index_ci_builds_on_project_id_and_name_and_ref; + +ALTER INDEX p_ci_builds_resource_group_id_status_commit_id_idx ATTACH PARTITION index_ci_builds_on_resource_group_and_status_and_commit_id; + +ALTER INDEX p_ci_builds_runner_id_id_idx ATTACH PARTITION index_ci_builds_on_runner_id_and_id_desc; + +ALTER INDEX p_ci_builds_stage_id_idx ATTACH PARTITION index_ci_builds_on_stage_id; + +ALTER INDEX p_ci_builds_status_type_runner_id_idx ATTACH PARTITION index_ci_builds_on_status_and_type_and_runner_id; + +ALTER INDEX p_ci_builds_updated_at_idx ATTACH PARTITION index_ci_builds_on_updated_at; + +ALTER INDEX p_ci_builds_upstream_pipeline_id_idx ATTACH PARTITION index_ci_builds_on_upstream_pipeline_id; + +ALTER INDEX p_ci_builds_user_id_idx ATTACH PARTITION index_ci_builds_on_user_id; + +ALTER INDEX p_ci_builds_user_id_created_at_idx ATTACH PARTITION index_ci_builds_on_user_id_and_created_at_and_type_eq_ci_build; + +ALTER INDEX p_ci_builds_project_id_status_idx ATTACH PARTITION index_ci_builds_project_id_and_status_for_live_jobs_partial2; + +ALTER INDEX p_ci_builds_runner_id_idx ATTACH PARTITION index_ci_builds_runner_id_running; + +ALTER INDEX p_ci_builds_user_id_name_idx ATTACH PARTITION index_partial_ci_builds_on_user_id_name_parser_features; + +ALTER INDEX p_ci_builds_user_id_name_created_at_idx ATTACH PARTITION index_secure_ci_builds_on_user_id_name_created_at; + +ALTER INDEX p_ci_builds_name_id_idx ATTACH PARTITION index_security_ci_builds_on_name_and_id_parser_features; + +ALTER INDEX p_ci_builds_scheduled_at_idx ATTACH PARTITION partial_index_ci_builds_on_scheduled_at_with_scheduled_jobs; + +ALTER INDEX p_ci_builds_token_encrypted_partition_id_idx ATTACH PARTITION unique_ci_builds_token_encrypted_and_partition_id; + CREATE TRIGGER chat_names_loose_fk_trigger AFTER DELETE ON chat_names REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records(); CREATE TRIGGER ci_builds_loose_fk_trigger AFTER DELETE ON ci_builds REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records(); @@ -34435,6 +34587,8 @@ CREATE TRIGGER namespaces_loose_fk_trigger AFTER DELETE ON namespaces REFERENCIN CREATE TRIGGER nullify_merge_request_metrics_build_data_on_update BEFORE UPDATE ON merge_request_metrics FOR EACH ROW EXECUTE FUNCTION nullify_merge_request_metrics_build_data(); +CREATE TRIGGER p_ci_builds_loose_fk_trigger AFTER DELETE ON p_ci_builds REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records(); + CREATE TRIGGER projects_loose_fk_trigger AFTER DELETE ON projects REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records(); CREATE TRIGGER push_rules_loose_fk_trigger AFTER DELETE ON push_rules REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records(); @@ -34764,7 +34918,7 @@ ALTER TABLE ONLY incident_management_timeline_events ALTER TABLE ONLY bulk_import_exports ADD CONSTRAINT fk_39c726d3b5 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; -ALTER TABLE ONLY ci_builds +ALTER TABLE p_ci_builds ADD CONSTRAINT fk_3a9eaa254d FOREIGN KEY (stage_id) REFERENCES ci_stages(id) ON DELETE CASCADE; ALTER TABLE ONLY agent_activity_events @@ -34905,7 +35059,7 @@ ALTER TABLE ONLY vulnerability_reads ALTER TABLE ONLY merge_requests ADD CONSTRAINT fk_641731faff FOREIGN KEY (updated_by_id) REFERENCES users(id) ON DELETE SET NULL; -ALTER TABLE ONLY ci_builds +ALTER TABLE p_ci_builds ADD CONSTRAINT fk_6661f4f0e8 FOREIGN KEY (resource_group_id) REFERENCES ci_resource_groups(id) ON DELETE SET NULL; ALTER TABLE ONLY project_wiki_repository_states @@ -35025,7 +35179,7 @@ ALTER TABLE ONLY geo_event_log ALTER TABLE ONLY packages_package_files ADD CONSTRAINT fk_86f0f182f8 FOREIGN KEY (package_id) REFERENCES packages_packages(id) ON DELETE CASCADE; -ALTER TABLE ONLY ci_builds +ALTER TABLE p_ci_builds ADD CONSTRAINT fk_87f4cefcda FOREIGN KEY (upstream_pipeline_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE; ALTER TABLE ONLY vulnerabilities @@ -35127,7 +35281,7 @@ ALTER TABLE ONLY issues ALTER TABLE ONLY ml_candidates ADD CONSTRAINT fk_a1d5f1bc45 FOREIGN KEY (package_id) REFERENCES packages_packages(id) ON DELETE SET NULL; -ALTER TABLE ONLY ci_builds +ALTER TABLE p_ci_builds ADD CONSTRAINT fk_a2141b1522 FOREIGN KEY (auto_canceled_by_id) REFERENCES ci_pipelines(id) ON DELETE SET NULL; ALTER TABLE ONLY bulk_import_entities @@ -35340,7 +35494,7 @@ ALTER TABLE ONLY project_mirror_data ALTER TABLE ONLY environments ADD CONSTRAINT fk_d1c8c1da6a FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; -ALTER TABLE ONLY ci_builds +ALTER TABLE p_ci_builds ADD CONSTRAINT fk_d3130c9a7f FOREIGN KEY (commit_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE; ALTER TABLE ONLY ci_sources_pipelines |
