From d000638f9ab3589c287b3584996838f3f78824ad Mon Sep 17 00:00:00 2001 From: Kerri Miller <kerrizor@kerrizor.com> Date: Mon, 17 Feb 2025 21:10:22 +0000 Subject: [PATCH] Drop merge_request_diff_files_99208b8fac table --- config/initializers/postgres_partitioning.rb | 13 --- .../merge_request_diff_files_99208b8fac.yml | 3 + ...drop_merge_request_diff_files_partition.rb | 24 ++++++ db/schema_migrations/20250127230017 | 1 + db/structure.sql | 86 ------------------- .../database/desired_sharding_key_spec.rb | 3 +- rubocop/rubocop-migrations.yml | 1 - spec/db/schema_spec.rb | 3 - spec/lib/gitlab/database/sharding_key_spec.rb | 1 - 9 files changed, 29 insertions(+), 106 deletions(-) rename db/docs/{ => deleted_tables}/merge_request_diff_files_99208b8fac.yml (85%) create mode 100644 db/post_migrate/20250127230017_drop_merge_request_diff_files_partition.rb create mode 100644 db/schema_migrations/20250127230017 diff --git a/config/initializers/postgres_partitioning.rb b/config/initializers/postgres_partitioning.rb index af6a906ed84ee..de71af20d8f85 100644 --- a/config/initializers/postgres_partitioning.rb +++ b/config/initializers/postgres_partitioning.rb @@ -94,19 +94,6 @@ ] ) -# Enable partition management for the backfill table during merge_request_diff_files partitioning. -# This way new partitions will be created as the trigger syncs new rows across to this table. -# -Gitlab::Database::Partitioning.register_tables( - [ - { - limit_connection_names: %i[main], - table_name: 'merge_request_diff_files_99208b8fac', - partitioned_column: :merge_request_diff_id, strategy: :int_range, partition_size: 200_000_000 - } - ] -) - # Enable partition management for the backfill table during web_hook_logs partitioning. # This way new partitions will be created as the trigger syncs new rows across to this table. Gitlab::Database::Partitioning.register_tables( diff --git a/db/docs/merge_request_diff_files_99208b8fac.yml b/db/docs/deleted_tables/merge_request_diff_files_99208b8fac.yml similarity index 85% rename from db/docs/merge_request_diff_files_99208b8fac.yml rename to db/docs/deleted_tables/merge_request_diff_files_99208b8fac.yml index bc7b69029ab53..b7f58934c4e31 100644 --- a/db/docs/merge_request_diff_files_99208b8fac.yml +++ b/db/docs/deleted_tables/merge_request_diff_files_99208b8fac.yml @@ -6,7 +6,9 @@ feature_categories: - code_review_workflow description: Temporary table for partitioning the main merge_request_diff_files table introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/149181 +removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/179313 milestone: '17.0' +removed_in_milestone: '17.9' gitlab_schema: gitlab_main_cell desired_sharding_key: project_id: @@ -18,3 +20,4 @@ desired_sharding_key: sharding_key: project_id belongs_to: merge_request_diff table_size: over_limit + diff --git a/db/post_migrate/20250127230017_drop_merge_request_diff_files_partition.rb b/db/post_migrate/20250127230017_drop_merge_request_diff_files_partition.rb new file mode 100644 index 0000000000000..2639414770545 --- /dev/null +++ b/db/post_migrate/20250127230017_drop_merge_request_diff_files_partition.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +class DropMergeRequestDiffFilesPartition < Gitlab::Database::Migration[2.2] + Gitlab::Database::Migration[2.2] + include Gitlab::Database::PartitioningMigrationHelpers + + milestone '17.9' + disable_ddl_transaction! + + def up + drop_partitioned_table_for('merge_request_diff_files') + end + + def down + partition_table_by_int_range( + 'merge_request_diff_files', + 'merge_request_diff_id', + partition_size: 200_000_000, + primary_key: %w[merge_request_diff_id relative_order] + ) + + add_column :merge_request_diff_files_99208b8fac, :project_id, :bigint + end +end diff --git a/db/schema_migrations/20250127230017 b/db/schema_migrations/20250127230017 new file mode 100644 index 0000000000000..fd04628f1a3de --- /dev/null +++ b/db/schema_migrations/20250127230017 @@ -0,0 +1 @@ +e47acb862f06277a2761acadc3195c01cd9dbedf481ff7b45b0c275e26ca678c \ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index 8466dddedd5f8..0a7294a6797a9 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -890,67 +890,6 @@ $$; COMMENT ON FUNCTION table_sync_function_29bc99d6db() IS 'Partitioning migration: table sync for web_hook_logs table'; -CREATE FUNCTION table_sync_function_3f39f64fc3() RETURNS trigger - LANGUAGE plpgsql - AS $$ -BEGIN -IF (TG_OP = 'DELETE') THEN - DELETE FROM merge_request_diff_files_99208b8fac where "merge_request_diff_id" = OLD."merge_request_diff_id" AND "relative_order" = OLD."relative_order"; -ELSIF (TG_OP = 'UPDATE') THEN - UPDATE merge_request_diff_files_99208b8fac - SET "new_file" = NEW."new_file", - "renamed_file" = NEW."renamed_file", - "deleted_file" = NEW."deleted_file", - "too_large" = NEW."too_large", - "a_mode" = NEW."a_mode", - "b_mode" = NEW."b_mode", - "new_path" = NEW."new_path", - "old_path" = NEW."old_path", - "diff" = NEW."diff", - "binary" = NEW."binary", - "external_diff_offset" = NEW."external_diff_offset", - "external_diff_size" = NEW."external_diff_size", - "generated" = NEW."generated" - WHERE merge_request_diff_files_99208b8fac."merge_request_diff_id" = NEW."merge_request_diff_id" AND merge_request_diff_files_99208b8fac."relative_order" = NEW."relative_order"; -ELSIF (TG_OP = 'INSERT') THEN - INSERT INTO merge_request_diff_files_99208b8fac ("new_file", - "renamed_file", - "deleted_file", - "too_large", - "a_mode", - "b_mode", - "new_path", - "old_path", - "diff", - "binary", - "external_diff_offset", - "external_diff_size", - "generated", - "merge_request_diff_id", - "relative_order") - VALUES (NEW."new_file", - NEW."renamed_file", - NEW."deleted_file", - NEW."too_large", - NEW."a_mode", - NEW."b_mode", - NEW."new_path", - NEW."old_path", - NEW."diff", - NEW."binary", - NEW."external_diff_offset", - NEW."external_diff_size", - NEW."generated", - NEW."merge_request_diff_id", - NEW."relative_order"); -END IF; -RETURN NULL; - -END -$$; - -COMMENT ON FUNCTION table_sync_function_3f39f64fc3() IS 'Partitioning migration: table sync for merge_request_diff_files table'; - CREATE FUNCTION table_sync_function_686d6c7993() RETURNS trigger LANGUAGE plpgsql AS $$ @@ -4362,26 +4301,6 @@ CREATE TABLE merge_request_diff_commits_b5377a7a34 ( ) PARTITION BY RANGE (merge_request_diff_id); -CREATE TABLE merge_request_diff_files_99208b8fac ( - new_file boolean NOT NULL, - renamed_file boolean NOT NULL, - deleted_file boolean NOT NULL, - too_large boolean NOT NULL, - a_mode character varying NOT NULL, - b_mode character varying NOT NULL, - new_path text NOT NULL, - old_path text NOT NULL, - diff text, - "binary" boolean, - external_diff_offset integer, - external_diff_size integer, - generated boolean, - merge_request_diff_id bigint NOT NULL, - relative_order integer NOT NULL, - project_id bigint -) -PARTITION BY RANGE (merge_request_diff_id); - CREATE TABLE p_batched_git_ref_updates_deletions ( id bigint NOT NULL, project_id bigint NOT NULL, @@ -28200,9 +28119,6 @@ ALTER TABLE ONLY merge_request_diff_commits ALTER TABLE ONLY merge_request_diff_details ADD CONSTRAINT merge_request_diff_details_pkey PRIMARY KEY (merge_request_diff_id); -ALTER TABLE ONLY merge_request_diff_files_99208b8fac - ADD CONSTRAINT merge_request_diff_files_99208b8fac_pkey PRIMARY KEY (merge_request_diff_id, relative_order); - ALTER TABLE ONLY merge_request_diff_files ADD CONSTRAINT merge_request_diff_files_pkey PRIMARY KEY (merge_request_diff_id, relative_order); @@ -38224,8 +38140,6 @@ CREATE TRIGGER table_sync_trigger_b99eb6998c AFTER INSERT OR DELETE OR UPDATE ON CREATE TRIGGER table_sync_trigger_bc3e7b56bd AFTER INSERT OR DELETE OR UPDATE ON ci_runner_machines FOR EACH ROW EXECUTE FUNCTION table_sync_function_e438f29263(); -CREATE TRIGGER table_sync_trigger_cd362c20e2 AFTER INSERT OR DELETE OR UPDATE ON merge_request_diff_files FOR EACH ROW EXECUTE FUNCTION table_sync_function_3f39f64fc3(); - CREATE TRIGGER tags_loose_fk_trigger AFTER DELETE ON tags REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE FUNCTION insert_into_loose_foreign_keys_deleted_records(); CREATE TRIGGER trigger_01b3fc052119 BEFORE INSERT OR UPDATE ON approval_merge_request_rules FOR EACH ROW EXECUTE FUNCTION trigger_01b3fc052119(); diff --git a/ee/spec/lib/gitlab/database/desired_sharding_key_spec.rb b/ee/spec/lib/gitlab/database/desired_sharding_key_spec.rb index d5a54f447a942..c84f5d6431543 100644 --- a/ee/spec/lib/gitlab/database/desired_sharding_key_spec.rb +++ b/ee/spec/lib/gitlab/database/desired_sharding_key_spec.rb @@ -13,8 +13,7 @@ # below table(s) will get a foreign key after its partitioning backfill finishes, # before the application begins using it. # - 'merge_request_diff_commits_b5377a7a34.merge_request_diff_id', - 'merge_request_diff_files_99208b8fac.merge_request_diff_id' + 'merge_request_diff_commits_b5377a7a34.merge_request_diff_id' ] end diff --git a/rubocop/rubocop-migrations.yml b/rubocop/rubocop-migrations.yml index 6c040c4e1d544..c4a2d03d97948 100644 --- a/rubocop/rubocop-migrations.yml +++ b/rubocop/rubocop-migrations.yml @@ -31,7 +31,6 @@ Migration/UpdateLargeTable: - :merge_request_diff_commits_b5377a7a34_1000000001 - :merge_request_diff_commits_b5377a7a34_800000001 - :merge_request_diff_files - - :merge_request_diff_files_99208b8fac_1000000001 - :merge_request_diffs - :merge_request_metrics - :merge_requests diff --git a/spec/db/schema_spec.rb b/spec/db/schema_spec.rb index 5af52a5f8702b..2f3a076a30b74 100644 --- a/spec/db/schema_spec.rb +++ b/spec/db/schema_spec.rb @@ -174,9 +174,6 @@ # merge_request_diff_commits_b5377a7a34 is the temporary table for the merge_request_diff_commits partitioning # backfill. It will get foreign keys after the partitioning is finished. merge_request_diff_commits_b5377a7a34: %w[merge_request_diff_id commit_author_id committer_id project_id], - # merge_request_diff_files_99208b8fac is the temporary table for the merge_request_diff_commits partitioning - # backfill. It will get foreign keys after the partitioning is finished. - merge_request_diff_files_99208b8fac: %w[merge_request_diff_id project_id], merge_request_user_mentions: %w[project_id], namespaces: %w[owner_id parent_id], namespace_descendants: %w[namespace_id], diff --git a/spec/lib/gitlab/database/sharding_key_spec.rb b/spec/lib/gitlab/database/sharding_key_spec.rb index d2863883cdd21..0f2998dc3af79 100644 --- a/spec/lib/gitlab/database/sharding_key_spec.rb +++ b/spec/lib/gitlab/database/sharding_key_spec.rb @@ -10,7 +10,6 @@ let(:allowed_to_be_missing_sharding_key) do [ 'merge_request_diff_commits_b5377a7a34', # has a desired sharding key instead - 'merge_request_diff_files_99208b8fac', # has a desired sharding key instead 'p_ci_pipeline_variables', # has a desired sharding key instead 'web_hook_logs_daily' # temporary copy of web_hook_logs ] -- GitLab