Skip to content

Create partitioned merge_request_diff_files copy

What does this MR do and why?

Create partitioned merge_request_diff_files copy

This is the first step of partitioning the merge_request_diff_files table by int range.

Related to #422765 (closed)

DB

Up

main: == 20240410200046 CreatePartitionedMergeRequestDiffFilesCopy: migrating =======
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- transaction(nil)
main: -- execute("CREATE TABLE merge_request_diff_files_99208b8fac (\n  LIKE merge_request_diff_files INCLUDING ALL EXCLUDING INDEXES,\n   merge_request_diff_id_tmp bigint NOT NULL, relative_order_tmp integer NOT NULL,\n  PRIMARY KEY (merge_request_diff_id_tmp, relative_order_tmp)\n) PARTITION BY RANGE (merge_request_diff_id_tmp)\n")
main:    -> 0.0021s
main: -- remove_column("merge_request_diff_files_99208b8fac", "merge_request_diff_id")
main:    -> 0.0006s
main: -- rename_column("merge_request_diff_files_99208b8fac", "merge_request_diff_id_tmp", "merge_request_diff_id")
main:    -> 0.0021s
main: -- remove_column("merge_request_diff_files_99208b8fac", "relative_order")
main:    -> 0.0003s
main: -- rename_column("merge_request_diff_files_99208b8fac", "relative_order_tmp", "relative_order")
main:    -> 0.0013s
main:    -> 0.0065s
main: -- execute("CREATE TABLE gitlab_partitions_dynamic.merge_request_diff_files_99208b8fac_1 PARTITION OF merge_request_diff_files_99208b8fac\nFOR VALUES FROM (1) TO (200000001)\n")
main:    -> 0.0022s
main: -- execute("CREATE TABLE gitlab_partitions_dynamic.merge_request_diff_files_99208b8fac_200000001 PARTITION OF merge_request_diff_files_99208b8fac\nFOR VALUES FROM (200000001) TO (400000001)\n")
main:    -> 0.0029s
main: -- execute("CREATE TABLE gitlab_partitions_dynamic.merge_request_diff_files_99208b8fac_400000001 PARTITION OF merge_request_diff_files_99208b8fac\nFOR VALUES FROM (400000001) TO (600000001)\n")
main:    -> 0.0031s
main: -- execute("CREATE TABLE gitlab_partitions_dynamic.merge_request_diff_files_99208b8fac_600000001 PARTITION OF merge_request_diff_files_99208b8fac\nFOR VALUES FROM (600000001) TO (800000001)\n")
main:    -> 0.0027s
main: -- execute("CREATE TABLE gitlab_partitions_dynamic.merge_request_diff_files_99208b8fac_800000001 PARTITION OF merge_request_diff_files_99208b8fac\nFOR VALUES FROM (800000001) TO (1000000001)\n")
main:    -> 0.0019s
main: -- execute("CREATE TABLE gitlab_partitions_dynamic.merge_request_diff_files_99208b8fac_1000000001 PARTITION OF merge_request_diff_files_99208b8fac\nFOR VALUES FROM (1000000001) TO (1200000001)\n")
main:    -> 0.0027s
main: -- execute("CREATE TABLE gitlab_partitions_dynamic.merge_request_diff_files_99208b8fac_1200000001 PARTITION OF merge_request_diff_files_99208b8fac\nFOR VALUES FROM (1200000001) TO (1400000001)\n")
main:    -> 0.0029s
main: -- execute("CREATE  FUNCTION table_sync_function_3f39f64fc3()\nRETURNS TRIGGER AS\n$$\nBEGIN\nIF (TG_OP = 'DELETE') THEN\n  DELETE FROM merge_request_diff_files_99208b8fac where \"merge_request_diff_id\" = OLD.\"merge_request_diff_id\" AND \"relative_order\" = OLD.\"relative_order\";\nELSIF (TG_OP = 'UPDATE') THEN\n  UPDATE merge_request_diff_files_99208b8fac\n  SET \"new_file\" = NEW.\"new_file\",\n    \"renamed_file\" = NEW.\"renamed_file\",\n    \"deleted_file\" = NEW.\"deleted_file\",\n    \"too_large\" = NEW.\"too_large\",\n    \"a_mode\" = NEW.\"a_mode\",\n    \"b_mode\" = NEW.\"b_mode\",\n    \"new_path\" = NEW.\"new_path\",\n    \"old_path\" = NEW.\"old_path\",\n    \"diff\" = NEW.\"diff\",\n    \"binary\" = NEW.\"binary\",\n    \"external_diff_offset\" = NEW.\"external_diff_offset\",\n    \"external_diff_size\" = NEW.\"external_diff_size\",\n    \"generated\" = NEW.\"generated\"\n  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\";\nELSIF (TG_OP = 'INSERT') THEN\n  INSERT INTO merge_request_diff_files_99208b8fac (\"new_file\",\n    \"renamed_file\",\n    \"deleted_file\",\n    \"too_large\",\n    \"a_mode\",\n    \"b_mode\",\n    \"new_path\",\n    \"old_path\",\n    \"diff\",\n    \"binary\",\n    \"external_diff_offset\",\n    \"external_diff_size\",\n    \"generated\",\n    \"merge_request_diff_id\",\n    \"relative_order\")\n  VALUES (NEW.\"new_file\",\n    NEW.\"renamed_file\",\n    NEW.\"deleted_file\",\n    NEW.\"too_large\",\n    NEW.\"a_mode\",\n    NEW.\"b_mode\",\n    NEW.\"new_path\",\n    NEW.\"old_path\",\n    NEW.\"diff\",\n    NEW.\"binary\",\n    NEW.\"external_diff_offset\",\n    NEW.\"external_diff_size\",\n    NEW.\"generated\",\n    NEW.\"merge_request_diff_id\",\n    NEW.\"relative_order\");\nEND IF;\nRETURN NULL;\n\nEND\n$$ LANGUAGE PLPGSQL\n")
main:    -> 0.0027s
main: -- execute("COMMENT ON FUNCTION table_sync_function_3f39f64fc3 IS 'Partitioning migration: table sync for merge_request_diff_files table'")
main:    -> 0.0005s
main: -- current_schema(nil)
main:    -> 0.0002s
main: -- execute("CREATE TRIGGER table_sync_trigger_cd362c20e2\nAFTER INSERT OR UPDATE OR DELETE ON merge_request_diff_files\nFOR EACH ROW\n\nEXECUTE FUNCTION table_sync_function_3f39f64fc3()\n")
main:    -> 0.0017s
main: == 20240410200046 CreatePartitionedMergeRequestDiffFilesCopy: migrated (0.0768s)

main: == [advisory_lock_connection] object_id: 124220, pg_backend_pid: 93721

Down

main: == [advisory_lock_connection] object_id: 122360, pg_backend_pid: 93690
main: == 20240410200046 CreatePartitionedMergeRequestDiffFilesCopy: reverting =======
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- execute("DROP TRIGGER IF EXISTS table_sync_trigger_cd362c20e2 ON merge_request_diff_files")
main:    -> 0.0007s
main: -- execute("DROP FUNCTION IF EXISTS table_sync_function_3f39f64fc3()")
main:    -> 0.0003s
main: -- drop_table("merge_request_diff_files_99208b8fac")
main:    -> 0.0130s
main: == 20240410200046 CreatePartitionedMergeRequestDiffFilesCopy: reverted (0.0268s)

main: == [advisory_lock_connection] object_id: 122360, pg_backend_pid: 93690
main: == [advisory_lock_connection] object_id: 124220, pg_backend_pid: 93721
Edited by Kerri Miller

Merge request reports