summaryrefslogtreecommitdiff
path: root/db/post_migrate/20171207150344_remove_deleted_at_columns.rb
diff options
context:
space:
mode:
authorYorick Peterse <yorickpeterse@gmail.com>2018-01-02 17:21:28 +0100
committerYorick Peterse <yorickpeterse@gmail.com>2018-01-05 17:46:53 +0100
commitb8e852429468154a2eda04b490b7a6662e8a3e57 (patch)
tree91a5e6ac366cc5db18ae9341eedae42b37372fda /db/post_migrate/20171207150344_remove_deleted_at_columns.rb
parent0788b37fba26ab7113ff4a580d3fb92c926299b7 (diff)
downloadgitlab-ce-b8e852429468154a2eda04b490b7a6662e8a3e57.tar.gz
Remove soft removals related coderemove-soft-removals-2
This removes all usage of soft removals except for the "pending delete" system implemented for projects. This in turn simplifies all the query plans of the models that used soft removals. Since we don't really use soft removals for anything useful there's no point in keeping it around. This _does_ mean that hard removals of issues (which only admins can do if I'm not mistaken) can influence the "iid" values, but that code is broken to begin with. More on this (and how to fix it) can be found in https://gitlab.com/gitlab-org/gitlab-ce/issues/31114. Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/37447
Diffstat (limited to 'db/post_migrate/20171207150344_remove_deleted_at_columns.rb')
-rw-r--r--db/post_migrate/20171207150344_remove_deleted_at_columns.rb31
1 files changed, 31 insertions, 0 deletions
diff --git a/db/post_migrate/20171207150344_remove_deleted_at_columns.rb b/db/post_migrate/20171207150344_remove_deleted_at_columns.rb
new file mode 100644
index 00000000000..154d7a1b926
--- /dev/null
+++ b/db/post_migrate/20171207150344_remove_deleted_at_columns.rb
@@ -0,0 +1,31 @@
+# See http://doc.gitlab.com/ce/development/migration_style_guide.html
+# for more information on how to write migrations for GitLab.
+
+class RemoveDeletedAtColumns < ActiveRecord::Migration
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ TABLES = %i[issues merge_requests namespaces ci_pipeline_schedules ci_triggers].freeze
+ COLUMN = :deleted_at
+
+ def up
+ TABLES.each do |table|
+ remove_column(table, COLUMN) if column_exists?(table, COLUMN)
+ end
+ end
+
+ def down
+ TABLES.each do |table|
+ unless column_exists?(table, COLUMN)
+ add_column(table, COLUMN, :datetime_with_timezone)
+ end
+
+ unless index_exists?(table, COLUMN)
+ add_concurrent_index(table, COLUMN)
+ end
+ end
+ end
+end