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 'lib/gitlab/database/rename_table_helpers.rb')
-rw-r--r--lib/gitlab/database/rename_table_helpers.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/gitlab/database/rename_table_helpers.rb b/lib/gitlab/database/rename_table_helpers.rb
new file mode 100644
index 00000000000..7f5af038c6d
--- /dev/null
+++ b/lib/gitlab/database/rename_table_helpers.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Database
+ module RenameTableHelpers
+ def rename_table_safely(old_table_name, new_table_name)
+ with_lock_retries do
+ rename_table(old_table_name, new_table_name)
+ execute("CREATE VIEW #{old_table_name} AS SELECT * FROM #{new_table_name}")
+ end
+ end
+
+ def undo_rename_table_safely(old_table_name, new_table_name)
+ with_lock_retries do
+ execute("DROP VIEW IF EXISTS #{old_table_name}")
+ rename_table(new_table_name, old_table_name)
+ end
+ end
+
+ def finalize_table_rename(old_table_name, new_table_name)
+ with_lock_retries do
+ execute("DROP VIEW IF EXISTS #{old_table_name}")
+ end
+ end
+
+ def undo_finalize_table_rename(old_table_name, new_table_name)
+ with_lock_retries do
+ execute("CREATE VIEW #{old_table_name} AS SELECT * FROM #{new_table_name}")
+ end
+ end
+ end
+ end
+end