diff --git a/db/post_migrate/20231206142250_sync_create_supporting_index_for_finding_id_backfill.rb b/db/post_migrate/20231206142250_sync_create_supporting_index_for_finding_id_backfill.rb new file mode 100644 index 0000000000000000000000000000000000000000..1371674a8d91fe9ced679f329fdca6061dcf3c50 --- /dev/null +++ b/db/post_migrate/20231206142250_sync_create_supporting_index_for_finding_id_backfill.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class SyncCreateSupportingIndexForFindingIdBackfill < Gitlab::Database::Migration[2.2] + milestone '16.7' + + disable_ddl_transaction! + + INDEX_NAME = "tmp_index_vulnerabilities_on_id_finding_id_empty" + + def up + add_concurrent_index( + :vulnerabilities, + :id, + where: "finding_id IS NULL", + name: INDEX_NAME + ) + end + + def down + remove_concurrent_index_by_name( + :vulnerabilities, + INDEX_NAME + ) + end +end diff --git a/db/schema_migrations/20231206142250 b/db/schema_migrations/20231206142250 new file mode 100644 index 0000000000000000000000000000000000000000..547e11e29fd267966464e3f39d66fcfb711b8902 --- /dev/null +++ b/db/schema_migrations/20231206142250 @@ -0,0 +1 @@ +4d8f16d926fc141a72a9d25f200dfe345f3bb4cff3cd8c71f4b4792df445119c \ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index a6a80d9e7732c1d05d4af49a6af0bd6e866aec9a..da8c21bff1dcc8ad8b82f3cfa15ce18c7c84ed61 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -35335,6 +35335,8 @@ CREATE INDEX tmp_index_project_statistics_cont_registry_size ON project_statisti CREATE INDEX tmp_index_project_statistics_updated_at ON project_statistics USING btree (project_id, updated_at) WHERE (repository_size > 0); +CREATE INDEX tmp_index_vulnerabilities_on_id_finding_id_empty ON vulnerabilities USING btree (id) WHERE (finding_id IS NULL); + CREATE INDEX tmp_index_vulnerability_dismissal_info ON vulnerabilities USING btree (id) WHERE ((state = 2) AND ((dismissed_at IS NULL) OR (dismissed_by_id IS NULL))); CREATE INDEX tmp_index_vulnerability_overlong_title_html ON vulnerabilities USING btree (id) WHERE (length(title_html) > 800); diff --git a/ee/spec/models/ee/vulnerability_spec.rb b/ee/spec/models/ee/vulnerability_spec.rb index 9628a8698aa072facdbcc2b9f19265809bb54665..a985c46b5935e104e4c34a955dd2971d3113e998 100644 --- a/ee/spec/models/ee/vulnerability_spec.rb +++ b/ee/spec/models/ee/vulnerability_spec.rb @@ -29,7 +29,7 @@ let_it_be(:vulnerability) { create(:vulnerability, :sast, :confirmed, :low, :with_state_transition, project: project) } let_it_be(:finding) { create(:vulnerabilities_finding, vulnerability: vulnerability) } - it { is_expected.to have_locked_schema('5a36734541ebab0070a5f5e2b67761be8522357d175a0c7a43aaacedf9603f7c').reference('https://gitlab.com/gitlab-org/gitlab/-/issues/349315') } + it { is_expected.to have_locked_schema('acd1e63fcaaeba6f545d3420da5f3407914227b57ff584bb98b5c3f2e0411877').reference('https://gitlab.com/gitlab-org/gitlab/-/issues/349315') } it_behaves_like 'vulnerability and finding shared examples' do let(:transformer_method) { :itself }