Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'db/post_migrate/20211105135157_drop_ci_build_trace_sections.rb')
-rw-r--r--db/post_migrate/20211105135157_drop_ci_build_trace_sections.rb99
1 files changed, 99 insertions, 0 deletions
diff --git a/db/post_migrate/20211105135157_drop_ci_build_trace_sections.rb b/db/post_migrate/20211105135157_drop_ci_build_trace_sections.rb
new file mode 100644
index 00000000000..1595068952d
--- /dev/null
+++ b/db/post_migrate/20211105135157_drop_ci_build_trace_sections.rb
@@ -0,0 +1,99 @@
+# frozen_string_literal: true
+
+class DropCiBuildTraceSections < Gitlab::Database::Migration[1.0]
+ include Gitlab::Database::SchemaHelpers
+
+ disable_ddl_transaction!
+
+ def up
+ with_lock_retries do
+ remove_foreign_key_if_exists(:dep_ci_build_trace_sections, column: :project_id)
+ end
+
+ with_lock_retries do
+ remove_foreign_key_if_exists(:dep_ci_build_trace_section_names, column: :project_id)
+ end
+
+ if table_exists?(:dep_ci_build_trace_sections)
+ with_lock_retries do
+ drop_table :dep_ci_build_trace_sections
+ end
+ end
+
+ if table_exists?(:dep_ci_build_trace_section_names)
+ with_lock_retries do
+ drop_table :dep_ci_build_trace_section_names
+ end
+ end
+
+ drop_function('trigger_91dc388a5fe6')
+ end
+
+ def down
+ execute(<<~SQL)
+ CREATE OR REPLACE FUNCTION trigger_91dc388a5fe6() RETURNS trigger
+ LANGUAGE plpgsql
+ AS $$
+ BEGIN
+ NEW."build_id_convert_to_bigint" := NEW."build_id";
+ RETURN NEW;
+ END;
+ $$;
+ SQL
+
+ execute_in_transaction(<<~SQL, !table_exists?(:dep_ci_build_trace_section_names))
+ CREATE TABLE dep_ci_build_trace_section_names (
+ id integer NOT NULL,
+ project_id integer NOT NULL,
+ name character varying NOT NULL
+ );
+
+ CREATE SEQUENCE dep_ci_build_trace_section_names_id_seq
+ AS integer
+ START WITH 1
+ INCREMENT BY 1
+ NO MINVALUE
+ NO MAXVALUE
+ CACHE 1;
+
+ ALTER SEQUENCE dep_ci_build_trace_section_names_id_seq OWNED BY dep_ci_build_trace_section_names.id;
+
+ ALTER TABLE ONLY dep_ci_build_trace_section_names ALTER COLUMN id SET DEFAULT nextval('dep_ci_build_trace_section_names_id_seq'::regclass);
+ ALTER TABLE ONLY dep_ci_build_trace_section_names ADD CONSTRAINT dep_ci_build_trace_section_names_pkey PRIMARY KEY (id);
+ SQL
+
+ execute_in_transaction(<<~SQL, !table_exists?(:dep_ci_build_trace_sections))
+ CREATE TABLE dep_ci_build_trace_sections (
+ project_id integer NOT NULL,
+ date_start timestamp without time zone NOT NULL,
+ date_end timestamp without time zone NOT NULL,
+ byte_start bigint NOT NULL,
+ byte_end bigint NOT NULL,
+ build_id integer NOT NULL,
+ section_name_id integer NOT NULL,
+ build_id_convert_to_bigint bigint DEFAULT 0 NOT NULL
+ );
+
+ ALTER TABLE ONLY dep_ci_build_trace_sections ADD CONSTRAINT ci_build_trace_sections_pkey PRIMARY KEY (build_id, section_name_id);
+ CREATE TRIGGER trigger_91dc388a5fe6 BEFORE INSERT OR UPDATE ON dep_ci_build_trace_sections FOR EACH ROW EXECUTE FUNCTION trigger_91dc388a5fe6();
+ SQL
+
+ add_concurrent_index :dep_ci_build_trace_section_names, [:project_id, :name], unique: true, name: 'index_dep_ci_build_trace_section_names_on_project_id_and_name'
+ add_concurrent_index :dep_ci_build_trace_sections, :project_id, name: 'index_dep_ci_build_trace_sections_on_project_id'
+ add_concurrent_index :dep_ci_build_trace_sections, :section_name_id, name: 'index_dep_ci_build_trace_sections_on_section_name_id'
+
+ add_concurrent_foreign_key :dep_ci_build_trace_sections, :dep_ci_build_trace_section_names, column: :section_name_id, on_delete: :cascade, name: 'fk_264e112c66'
+ add_concurrent_foreign_key :dep_ci_build_trace_sections, :projects, column: :project_id, on_delete: :cascade, name: 'fk_ab7c104e26'
+ add_concurrent_foreign_key :dep_ci_build_trace_section_names, :projects, column: :project_id, on_delete: :cascade, name: 'fk_f8cd72cd26'
+ end
+
+ private
+
+ def execute_in_transaction(sql, condition)
+ return unless condition
+
+ transaction do
+ execute(sql)
+ end
+ end
+end