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 'rubocop/cop/migration/update_large_table.rb')
-rw-r--r--rubocop/cop/migration/update_large_table.rb49
1 files changed, 0 insertions, 49 deletions
diff --git a/rubocop/cop/migration/update_large_table.rb b/rubocop/cop/migration/update_large_table.rb
deleted file mode 100644
index e44eadbdb92..00000000000
--- a/rubocop/cop/migration/update_large_table.rb
+++ /dev/null
@@ -1,49 +0,0 @@
-require_relative '../../migration_helpers'
-
-module RuboCop
- module Cop
- module Migration
- # This cop checks for `add_column_with_default` on a table that's been
- # explicitly blacklisted because of its size.
- #
- # Even though this helper performs the update in batches to avoid
- # downtime, using it with tables with millions of rows still causes a
- # significant delay in the deploy process and is best avoided.
- #
- # See https://gitlab.com/gitlab-com/infrastructure/issues/1602 for more
- # information.
- class UpdateLargeTable < RuboCop::Cop::Cop
- include MigrationHelpers
-
- MSG = 'Using `%s` on the `%s` table will take a long time to ' \
- 'complete, and should be avoided unless absolutely ' \
- 'necessary'.freeze
-
- BATCH_UPDATE_METHODS = %w[
- :add_column_with_default
- :change_column_type_concurrently
- :rename_column_concurrently
- :update_column_in_batches
- ].join(' ').freeze
-
- def_node_matcher :batch_update?, <<~PATTERN
- (send nil? ${#{BATCH_UPDATE_METHODS}} $(sym ...) ...)
- PATTERN
-
- def on_send(node)
- return unless in_migration?(node)
-
- matches = batch_update?(node)
- return unless matches
-
- update_method = matches.first
- table = matches.last.to_a.first
-
- return unless BLACKLISTED_TABLES.include?(table)
-
- add_offense(node, location: :expression, message: format(MSG, update_method, table))
- end
- end
- end
- end
-end