Skip to content

Create partitioned merge_request_diff_commits copy

What does this MR do and why?

Create partitioned merge_request_diff_commits copy

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

Related to #422764 (closed) as part of &11271

DB

Up

main: == [advisory_lock_connection] object_id: 117480, pg_backend_pid: 86428
main: == [advisory_lock_connection] object_id: 119340, pg_backend_pid: 86452
main: == 20240205215337 CreatePartitionedMergeRequestDiffCommitsCopy: 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_commits_b5377a7a34 (\n  LIKE merge_request_diff_commits 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.0041s
main: -- remove_column("merge_request_diff_commits_b5377a7a34", "merge_request_diff_id")
main:    -> 0.0012s
main: -- rename_column("merge_request_diff_commits_b5377a7a34", "merge_request_diff_id_tmp", "merge_request_diff_id")
main:    -> 0.0027s
main: -- remove_column("merge_request_diff_commits_b5377a7a34", "relative_order")
main:    -> 0.0012s
main: -- rename_column("merge_request_diff_commits_b5377a7a34", "relative_order_tmp", "relative_order")
main:    -> 0.0038s
main:    -> 0.0133s
main: -- execute("CREATE TABLE gitlab_partitions_dynamic.merge_request_diff_commits_b5377a7a34_1 PARTITION OF merge_request_diff_commits_b5377a7a34\nFOR VALUES FROM (1) TO (10000001)\n")
main:    -> 0.0053s
main: -- execute("CREATE TABLE gitlab_partitions_dynamic.merge_request_diff_commits_b5377a7a34_10000001 PARTITION OF merge_request_diff_commits_b5377a7a34\nFOR VALUES FROM (10000001) TO (20000001)\n")
main:    -> 0.0039s
main: -- execute("CREATE TABLE gitlab_partitions_dynamic.merge_request_diff_commits_b5377a7a34_20000001 PARTITION OF merge_request_diff_commits_b5377a7a34\nFOR VALUES FROM (20000001) TO (30000001)\n")
main:    -> 0.0042s
main: -- execute("CREATE TABLE gitlab_partitions_dynamic.merge_request_diff_commits_b5377a7a34_30000001 PARTITION OF merge_request_diff_commits_b5377a7a34\nFOR VALUES FROM (30000001) TO (40000001)\n")
main:    -> 0.0035s
main: -- execute("CREATE TABLE gitlab_partitions_dynamic.merge_request_diff_commits_b5377a7a34_40000001 PARTITION OF merge_request_diff_commits_b5377a7a34\nFOR VALUES FROM (40000001) TO (50000001)\n")
main:    -> 0.0034s
main: -- execute("CREATE TABLE gitlab_partitions_dynamic.merge_request_diff_commits_b5377a7a34_50000001 PARTITION OF merge_request_diff_commits_b5377a7a34\nFOR VALUES FROM (50000001) TO (60000001)\n")
main:    -> 0.0042s
main: -- execute("CREATE TABLE gitlab_partitions_dynamic.merge_request_diff_commits_b5377a7a34_60000001 PARTITION OF merge_request_diff_commits_b5377a7a34\nFOR VALUES FROM (60000001) TO (70000001)\n")
main:    -> 0.0043s
main: -- execute("CREATE  FUNCTION table_sync_function_0992e728d3()\nRETURNS TRIGGER AS\n$$\nBEGIN\nIF (TG_OP = 'DELETE') THEN\n  DELETE FROM merge_request_diff_commits_b5377a7a34 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_commits_b5377a7a34\n  SET authored_date = NEW.authored_date,\n    committed_date = NEW.committed_date,\n    sha = NEW.sha,\n    message = NEW.message,\n    trailers = NEW.trailers,\n    commit_author_id = NEW.commit_author_id,\n    committer_id = NEW.committer_id\n  WHERE merge_request_diff_commits_b5377a7a34.merge_request_diff_id = NEW.merge_request_diff_id AND merge_request_diff_commits_b5377a7a34.relative_order = NEW.relative_order;\nELSIF (TG_OP = 'INSERT') THEN\n  INSERT INTO merge_request_diff_commits_b5377a7a34 (authored_date,\n    committed_date,\n    sha,\n    message,\n    trailers,\n    commit_author_id,\n    committer_id,\n    merge_request_diff_id,\n    relative_order)\n  VALUES (NEW.authored_date,\n    NEW.committed_date,\n    NEW.sha,\n    NEW.message,\n    NEW.trailers,\n    NEW.commit_author_id,\n    NEW.committer_id,\n    NEW.merge_request_diff_id,\n    NEW.relative_order);\nEND IF;\nRETURN NULL;\n\nEND\n$$ LANGUAGE PLPGSQL\n")
main:    -> 0.0020s
main: -- execute("COMMENT ON FUNCTION table_sync_function_0992e728d3 IS 'Partitioning migration: table sync for merge_request_diff_commits table'")
main:    -> 0.0008s
main: -- current_schema(nil)
main:    -> 0.0002s
main: -- execute("CREATE TRIGGER table_sync_trigger_57c8465cd7\nAFTER INSERT OR UPDATE OR DELETE ON merge_request_diff_commits\nFOR EACH ROW\n\nEXECUTE FUNCTION table_sync_function_0992e728d3()\n")
main:    -> 0.0009s
main: == 20240205215337 CreatePartitionedMergeRequestDiffCommitsCopy: migrated (0.1004s)

main: == [advisory_lock_connection] object_id: 119340, pg_backend_pid: 86452

Down

main: == [advisory_lock_connection] object_id: 117480, pg_backend_pid: 86428
main: == 20240205215337 CreatePartitionedMergeRequestDiffCommitsCopy: reverting =====
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- execute("DROP TRIGGER IF EXISTS table_sync_trigger_57c8465cd7 ON merge_request_diff_commits")
main:    -> 0.0006s
main: -- execute("DROP FUNCTION IF EXISTS table_sync_function_0992e728d3()")
main:    -> 0.0003s
main: -- drop_table("merge_request_diff_commits_b5377a7a34")
main:    -> 0.0105s
main: == 20240205215337 CreatePartitionedMergeRequestDiffCommitsCopy: reverted (0.0230s)

Merge request reports