diff --git a/db/post_migrate/20230914054914_index_finding_id_for_vulnerabilities_sync.rb b/db/post_migrate/20230914054914_index_finding_id_for_vulnerabilities_sync.rb new file mode 100644 index 0000000000000000000000000000000000000000..37cd13a4dfa81354b13febcd0bb7e4bbbd63c306 --- /dev/null +++ b/db/post_migrate/20230914054914_index_finding_id_for_vulnerabilities_sync.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class IndexFindingIdForVulnerabilitiesSync < Gitlab::Database::Migration[2.1] + INDEX_NAME = 'index_vulnerabilities_on_finding_id' + + disable_ddl_transaction! + + def up + add_concurrent_index :vulnerabilities, :finding_id, name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :vulnerabilities, INDEX_NAME + end +end diff --git a/db/schema_migrations/20230914054914 b/db/schema_migrations/20230914054914 new file mode 100644 index 0000000000000000000000000000000000000000..c5cc5595ce68a1341cd000776b2d148ea4ce7c13 --- /dev/null +++ b/db/schema_migrations/20230914054914 @@ -0,0 +1 @@ +9702393eb6db18d5d3d106c0a77c21419af828fe5a422dd5c06a2621ef10cf03 \ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index b66130e90c2d9f5b34c6430c7dfc1d1bc4ca3b7a..628c8609159fdfd854c202e580aa9a32f883fc6c 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -34162,6 +34162,8 @@ CREATE INDEX index_vulnerabilities_on_due_date_sourcing_milestone_id ON vulnerab CREATE INDEX index_vulnerabilities_on_epic_id ON vulnerabilities USING btree (epic_id); +CREATE INDEX index_vulnerabilities_on_finding_id ON vulnerabilities USING btree (finding_id); + CREATE INDEX index_vulnerabilities_on_last_edited_by_id ON vulnerabilities USING btree (last_edited_by_id); CREATE INDEX index_vulnerabilities_on_milestone_id ON vulnerabilities USING btree (milestone_id); diff --git a/ee/spec/models/ee/vulnerability_spec.rb b/ee/spec/models/ee/vulnerability_spec.rb index 244c70ffa1718f2064fa02cc69321a3fc50eb311..5dd0e36c5305e6842874ed5cbd72963c33f7a8b2 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('3ddf9cf697cf69f0d621d6d0a789ca0ccb497d255a7f48549afdd601a0a5a694').reference('https://gitlab.com/gitlab-org/gitlab/-/issues/349315') } + it { is_expected.to have_locked_schema('bd611bb22d07b989340d2b982d0f7503907c87102ee02513285900637e53a584').reference('https://gitlab.com/gitlab-org/gitlab/-/issues/349315') } it_behaves_like 'vulnerability and finding shared examples' do let(:transformer_method) { :itself } diff --git a/spec/db/schema_spec.rb b/spec/db/schema_spec.rb index 04a83a1f6ab7d4020d9587b0f638804a9563580e..fbd9c4d32ccadff62b0674209af1e33490048d92 100644 --- a/spec/db/schema_spec.rb +++ b/spec/db/schema_spec.rb @@ -14,8 +14,7 @@ # but in Search::NamespaceIndexAssignment model, only `search_index_id` is used as foreign key and indexed search_namespace_index_assignments: [%w[search_index_id index_type]], slack_integrations_scopes: [%w[slack_api_scope_id]], - notes: %w[namespace_id], # this index is added in an async manner, hence it needs to be ignored in the first phase. - vulnerabilities: [%w[finding_id]] # index will be created in https://gitlab.com/gitlab-org/gitlab/-/issues/423541 + notes: %w[namespace_id] # this index is added in an async manner, hence it needs to be ignored in the first phase. }.with_indifferent_access.freeze TABLE_PARTITIONS = %w[ci_builds_metadata].freeze