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
path: root/db
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-04-06 18:08:20 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-04-06 18:08:20 +0300
commit78782cd1eb5273265668ca3e438bb8cbb1344004 (patch)
tree63e9715611d41a0c9dac52aca6613c1fc2af7b58 /db
parentb161512b300e70c1e786dd299867dad284e11019 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'db')
-rw-r--r--db/post_migrate/20230404030757_ensure_epic_user_mentions_bigint_backfill_is_finished_for_gitlab_dot_com.rb29
-rw-r--r--db/post_migrate/20230404031041_swap_epic_user_mentions_note_id_to_bigint_for_gitlab_dot_com.rb74
-rw-r--r--db/schema_migrations/202304040307571
-rw-r--r--db/schema_migrations/202304040310411
-rw-r--r--db/structure.sql4
5 files changed, 107 insertions, 2 deletions
diff --git a/db/post_migrate/20230404030757_ensure_epic_user_mentions_bigint_backfill_is_finished_for_gitlab_dot_com.rb b/db/post_migrate/20230404030757_ensure_epic_user_mentions_bigint_backfill_is_finished_for_gitlab_dot_com.rb
new file mode 100644
index 00000000000..9b90d144042
--- /dev/null
+++ b/db/post_migrate/20230404030757_ensure_epic_user_mentions_bigint_backfill_is_finished_for_gitlab_dot_com.rb
@@ -0,0 +1,29 @@
+# frozen_string_literal: true
+
+class EnsureEpicUserMentionsBigintBackfillIsFinishedForGitlabDotCom < Gitlab::Database::Migration[2.1]
+ include Gitlab::Database::MigrationHelpers::ConvertToBigint
+
+ restrict_gitlab_migration gitlab_schema: :gitlab_main
+ disable_ddl_transaction!
+
+ def up
+ return unless should_run?
+
+ ensure_batched_background_migration_is_finished(
+ job_class_name: 'CopyColumnUsingBackgroundMigrationJob',
+ table_name: 'epic_user_mentions',
+ column_name: 'id',
+ job_arguments: [['note_id'], ['note_id_convert_to_bigint']]
+ )
+ end
+
+ def down
+ # no-op
+ end
+
+ private
+
+ def should_run?
+ com_or_dev_or_test_but_not_jh?
+ end
+end
diff --git a/db/post_migrate/20230404031041_swap_epic_user_mentions_note_id_to_bigint_for_gitlab_dot_com.rb b/db/post_migrate/20230404031041_swap_epic_user_mentions_note_id_to_bigint_for_gitlab_dot_com.rb
new file mode 100644
index 00000000000..3d0478c15dd
--- /dev/null
+++ b/db/post_migrate/20230404031041_swap_epic_user_mentions_note_id_to_bigint_for_gitlab_dot_com.rb
@@ -0,0 +1,74 @@
+# frozen_string_literal: true
+
+class SwapEpicUserMentionsNoteIdToBigintForGitlabDotCom < Gitlab::Database::Migration[2.1]
+ include Gitlab::Database::MigrationHelpers::ConvertToBigint
+
+ disable_ddl_transaction!
+
+ TABLE_NAME = 'epic_user_mentions'
+
+ def up
+ return unless should_run?
+
+ swap
+ end
+
+ def down
+ return unless should_run?
+
+ swap
+ end
+
+ def swap
+ # This will replace the existing epic_user_mentions_on_epic_id_and_note_id_index
+ add_concurrent_index TABLE_NAME, [:epic_id, :note_id_convert_to_bigint], unique: true,
+ name: 'epic_user_mentions_on_epic_id_and_note_id_convert_to_bigint'
+
+ # This will replace the existing epic_user_mentions_on_epic_id_index
+ add_concurrent_index TABLE_NAME, :epic_id, unique: true,
+ name: 'tmp_epic_user_mentions_on_epic_id_index',
+ where: 'note_id_convert_to_bigint IS NULL'
+
+ # This will replace the existing index_epic_user_mentions_on_note_id
+ add_concurrent_index TABLE_NAME, :note_id_convert_to_bigint, unique: true,
+ name: 'index_epic_user_mentions_on_note_id_convert_to_bigint',
+ where: 'note_id_convert_to_bigint IS NOT NULL'
+
+ # This will replace the existing fk_rails_1c65976a49
+ add_concurrent_foreign_key TABLE_NAME, :notes, column: :note_id_convert_to_bigint,
+ name: 'fk_epic_user_mentions_note_id_convert_to_bigint',
+ on_delete: :cascade
+
+ with_lock_retries(raise_on_exhaustion: true) do
+ execute "LOCK TABLE notes, #{TABLE_NAME} IN ACCESS EXCLUSIVE MODE"
+
+ execute "ALTER TABLE #{TABLE_NAME} RENAME COLUMN note_id TO note_id_tmp"
+ execute "ALTER TABLE #{TABLE_NAME} RENAME COLUMN note_id_convert_to_bigint TO note_id"
+ execute "ALTER TABLE #{TABLE_NAME} RENAME COLUMN note_id_tmp TO note_id_convert_to_bigint"
+
+ function_name = Gitlab::Database::UnidirectionalCopyTrigger
+ .on_table(TABLE_NAME, connection: connection)
+ .name(:note_id, :note_id_convert_to_bigint)
+ execute "ALTER FUNCTION #{quote_table_name(function_name)} RESET ALL"
+
+ execute 'DROP INDEX IF EXISTS epic_user_mentions_on_epic_id_and_note_id_index'
+ rename_index TABLE_NAME, 'epic_user_mentions_on_epic_id_and_note_id_convert_to_bigint',
+ 'epic_user_mentions_on_epic_id_and_note_id_index'
+
+ execute 'DROP INDEX IF EXISTS epic_user_mentions_on_epic_id_index'
+ rename_index TABLE_NAME, 'tmp_epic_user_mentions_on_epic_id_index',
+ 'epic_user_mentions_on_epic_id_index'
+
+ execute 'DROP INDEX IF EXISTS index_epic_user_mentions_on_note_id'
+ rename_index TABLE_NAME, 'index_epic_user_mentions_on_note_id_convert_to_bigint',
+ 'index_epic_user_mentions_on_note_id'
+
+ execute "ALTER TABLE #{TABLE_NAME} DROP CONSTRAINT IF EXISTS fk_rails_1c65976a49"
+ rename_constraint(TABLE_NAME, 'fk_epic_user_mentions_note_id_convert_to_bigint', 'fk_rails_1c65976a49')
+ end
+ end
+
+ def should_run?
+ com_or_dev_or_test_but_not_jh?
+ end
+end
diff --git a/db/schema_migrations/20230404030757 b/db/schema_migrations/20230404030757
new file mode 100644
index 00000000000..989df2048b0
--- /dev/null
+++ b/db/schema_migrations/20230404030757
@@ -0,0 +1 @@
+3968fc8d21184f48f85209546fe515d0b4a407ad0837ef052ccbbbe15d0f9163 \ No newline at end of file
diff --git a/db/schema_migrations/20230404031041 b/db/schema_migrations/20230404031041
new file mode 100644
index 00000000000..24b24fb6dc9
--- /dev/null
+++ b/db/schema_migrations/20230404031041
@@ -0,0 +1 @@
+a3e306b8ebe149c319788311f4f81386c9362d081babca8bcd7c850ae1cbc183 \ No newline at end of file
diff --git a/db/structure.sql b/db/structure.sql
index bb42846943c..352ff598cb5 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -15738,11 +15738,11 @@ ALTER SEQUENCE epic_metrics_id_seq OWNED BY epic_metrics.id;
CREATE TABLE epic_user_mentions (
id bigint NOT NULL,
epic_id integer NOT NULL,
- note_id integer,
+ note_id_convert_to_bigint integer,
mentioned_users_ids integer[],
mentioned_projects_ids integer[],
mentioned_groups_ids integer[],
- note_id_convert_to_bigint bigint
+ note_id bigint
);
CREATE SEQUENCE epic_user_mentions_id_seq