diff --git a/db/post_migrate/20240401074304_init_conversion_for_vulnerability_feedback_pipeline_id_bigint.rb b/db/post_migrate/20240401074304_init_conversion_for_vulnerability_feedback_pipeline_id_bigint.rb new file mode 100644 index 0000000000000000000000000000000000000000..20f746b5acd051976b39bbc1c7b233010f651964 --- /dev/null +++ b/db/post_migrate/20240401074304_init_conversion_for_vulnerability_feedback_pipeline_id_bigint.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class InitConversionForVulnerabilityFeedbackPipelineIdBigint < Gitlab::Database::Migration[2.2] + disable_ddl_transaction! + milestone '16.11' + + TABLE = :vulnerability_feedback + COLUMN = :pipeline_id + + def up + initialize_conversion_of_integer_to_bigint(TABLE, COLUMN) + end + + def down + revert_initialize_conversion_of_integer_to_bigint(TABLE, COLUMN) + end +end diff --git a/db/post_migrate/20240404084304_backfill_vulnerability_feedback_pipeline_id_bigint.rb b/db/post_migrate/20240404084304_backfill_vulnerability_feedback_pipeline_id_bigint.rb new file mode 100644 index 0000000000000000000000000000000000000000..1547e1dea0d1b3a075b1517d57ab67f092227023 --- /dev/null +++ b/db/post_migrate/20240404084304_backfill_vulnerability_feedback_pipeline_id_bigint.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class BackfillVulnerabilityFeedbackPipelineIdBigint < Gitlab::Database::Migration[2.2] + restrict_gitlab_migration gitlab_schema: :gitlab_main + milestone '16.11' + + TABLE = :vulnerability_feedback + COLUMN = :pipeline_id + + def up + backfill_conversion_of_integer_to_bigint(TABLE, COLUMN) + end + + def down + revert_backfill_conversion_of_integer_to_bigint(TABLE, COLUMN) + end +end diff --git a/db/schema_migrations/20240401074304 b/db/schema_migrations/20240401074304 new file mode 100644 index 0000000000000000000000000000000000000000..580a7798fa93e6d08fefd95dd5dc84435bd3bf14 --- /dev/null +++ b/db/schema_migrations/20240401074304 @@ -0,0 +1 @@ +c322765311ff994cbd102fe6cf005341a67ab1ff3502cd21f5597fab3ceba29d \ No newline at end of file diff --git a/db/schema_migrations/20240404084304 b/db/schema_migrations/20240404084304 new file mode 100644 index 0000000000000000000000000000000000000000..fb49d2f80c4151b20ec54a8bd6ee80eaa0d4d815 --- /dev/null +++ b/db/schema_migrations/20240404084304 @@ -0,0 +1 @@ +c613226d8f2a25f7a1fe6cc9bdee229c8d858059c75387f3c915d3c34fee6dbf \ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index fdde49d90db1a7f6f5a98852777baa47e13dd30d..895c3df52d56e2022a0beebe85076e94d4fce5c3 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -659,6 +659,15 @@ BEGIN END; $$; +CREATE FUNCTION trigger_2428b5519042() RETURNS trigger + LANGUAGE plpgsql + AS $$ +BEGIN + NEW."pipeline_id_convert_to_bigint" := NEW."pipeline_id"; + RETURN NEW; +END; +$$; + CREATE FUNCTION trigger_b2d852e1e2cb() RETURNS trigger LANGUAGE plpgsql AS $$ @@ -17313,7 +17322,8 @@ CREATE TABLE vulnerability_feedback ( comment_timestamp timestamp with time zone, finding_uuid uuid, dismissal_reason smallint, - migrated_to_state_transition boolean DEFAULT false + migrated_to_state_transition boolean DEFAULT false, + pipeline_id_convert_to_bigint bigint ); CREATE SEQUENCE vulnerability_feedback_id_seq @@ -29579,6 +29589,8 @@ CREATE TRIGGER tags_loose_fk_trigger AFTER DELETE ON tags REFERENCING OLD TABLE CREATE TRIGGER trigger_10ee1357e825 BEFORE INSERT OR UPDATE ON p_ci_builds FOR EACH ROW EXECUTE FUNCTION trigger_10ee1357e825(); +CREATE TRIGGER trigger_2428b5519042 BEFORE INSERT OR UPDATE ON vulnerability_feedback FOR EACH ROW EXECUTE FUNCTION trigger_2428b5519042(); + CREATE TRIGGER trigger_b2d852e1e2cb BEFORE INSERT OR UPDATE ON ci_pipelines FOR EACH ROW EXECUTE FUNCTION trigger_b2d852e1e2cb(); CREATE TRIGGER trigger_catalog_resource_sync_event_on_project_update AFTER UPDATE ON projects FOR EACH ROW WHEN ((((old.name)::text IS DISTINCT FROM (new.name)::text) OR (old.description IS DISTINCT FROM new.description) OR (old.visibility_level IS DISTINCT FROM new.visibility_level))) EXECUTE FUNCTION insert_catalog_resource_sync_event(); diff --git a/ee/app/models/vulnerabilities/feedback.rb b/ee/app/models/vulnerabilities/feedback.rb index edd37d78ff9a5ba77518ef7711afed6c585412ff..c806a4a6148a3f6566c1ce66592f3e91945661c3 100644 --- a/ee/app/models/vulnerabilities/feedback.rb +++ b/ee/app/models/vulnerabilities/feedback.rb @@ -3,6 +3,10 @@ module Vulnerabilities class Feedback < ApplicationRecord include EachBatch + include IgnorableColumns + + ignore_columns :pipeline_id_convert_to_bigint, remove_with: '17.1', remove_after: '2024-06-14' + self.table_name = 'vulnerability_feedback' paginates_per 50