Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Jérome Perrin
gitlab-ce
Commits
5d9762b3
Commit
5d9762b3
authored
Mar 07, 2017
by
Douwe Maan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add cop to ensure reversibility of add_concurrent_index
parent
6a52cda3
Changes
22
Show whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
186 additions
and
22 deletions
+186
-22
db/migrate/20160615142710_add_index_on_requested_at_to_members.rb
...te/20160615142710_add_index_on_requested_at_to_members.rb
+5
-1
db/migrate/20160620115026_add_index_on_runners_locked.rb
db/migrate/20160620115026_add_index_on_runners_locked.rb
+5
-1
db/migrate/20160715134306_add_index_for_pipeline_user_id.rb
db/migrate/20160715134306_add_index_for_pipeline_user_id.rb
+5
-1
db/migrate/20160805041956_add_deleted_at_to_namespaces.rb
db/migrate/20160805041956_add_deleted_at_to_namespaces.rb
+8
-1
db/migrate/20160808085602_add_index_for_build_token.rb
db/migrate/20160808085602_add_index_for_build_token.rb
+5
-1
db/migrate/20160819221631_add_index_to_note_discussion_id.rb
db/migrate/20160819221631_add_index_to_note_discussion_id.rb
+5
-1
db/migrate/20160819232256_add_incoming_email_token_to_users.rb
...grate/20160819232256_add_incoming_email_token_to_users.rb
+8
-1
db/migrate/20160919145149_add_group_id_to_labels.rb
db/migrate/20160919145149_add_group_id_to_labels.rb
+7
-1
db/migrate/20160920160832_add_index_to_labels_title.rb
db/migrate/20160920160832_add_index_to_labels_title.rb
+5
-1
db/migrate/20161020083353_add_pipeline_id_to_merge_request_metrics.rb
...0161020083353_add_pipeline_id_to_merge_request_metrics.rb
+8
-2
db/migrate/20161106185620_add_project_import_data_project_index.rb
...e/20161106185620_add_project_import_data_project_index.rb
+5
-1
db/migrate/20161124111395_add_index_to_parent_id.rb
db/migrate/20161124111395_add_index_to_parent_id.rb
+5
-1
db/migrate/20161202152035_add_index_to_routes.rb
db/migrate/20161202152035_add_index_to_routes.rb
+6
-1
db/migrate/20161209153400_add_unique_index_for_environment_slug.rb
...e/20161209153400_add_unique_index_for_environment_slug.rb
+5
-1
db/migrate/20170204181513_add_index_to_labels_for_type_and_project.rb
...0170204181513_add_index_to_labels_for_type_and_project.rb
+5
-1
db/migrate/20170210062829_add_index_to_labels_for_title_and_project.rb
...170210062829_add_index_to_labels_for_title_and_project.rb
+6
-1
db/migrate/20170210075922_add_index_to_ci_trigger_requests_for_commit_id.rb
...0075922_add_index_to_ci_trigger_requests_for_commit_id.rb
+5
-1
db/migrate/20170210103609_add_index_to_user_agent_detail.rb
db/migrate/20170210103609_add_index_to_user_agent_detail.rb
+6
-2
db/migrate/20170216135621_add_index_for_latest_successful_pipeline.rb
...0170216135621_add_index_for_latest_successful_pipeline.rb
+6
-2
rubocop/cop/migration/add_concurrent_index.rb
rubocop/cop/migration/add_concurrent_index.rb
+34
-0
rubocop/rubocop.rb
rubocop/rubocop.rb
+1
-0
spec/rubocop/cop/migration/add_concurrent_index_spec.rb
spec/rubocop/cop/migration/add_concurrent_index_spec.rb
+41
-0
No files found.
db/migrate/20160615142710_add_index_on_requested_at_to_members.rb
View file @
5d9762b3
...
@@ -3,7 +3,11 @@ class AddIndexOnRequestedAtToMembers < ActiveRecord::Migration
...
@@ -3,7 +3,11 @@ class AddIndexOnRequestedAtToMembers < ActiveRecord::Migration
disable_ddl_transaction!
disable_ddl_transaction!
def
change
def
up
add_concurrent_index
:members
,
:requested_at
add_concurrent_index
:members
,
:requested_at
end
end
def
down
remove_index
:members
,
:requested_at
if
index_exists?
:members
,
:requested_at
end
end
end
db/migrate/20160620115026_add_index_on_runners_locked.rb
View file @
5d9762b3
...
@@ -6,7 +6,11 @@ class AddIndexOnRunnersLocked < ActiveRecord::Migration
...
@@ -6,7 +6,11 @@ class AddIndexOnRunnersLocked < ActiveRecord::Migration
disable_ddl_transaction!
disable_ddl_transaction!
def
change
def
up
add_concurrent_index
:ci_runners
,
:locked
add_concurrent_index
:ci_runners
,
:locked
end
end
def
down
remove_index
:ci_runners
,
:locked
if
index_exists?
:ci_runners
,
:locked
end
end
end
db/migrate/20160715134306_add_index_for_pipeline_user_id.rb
View file @
5d9762b3
...
@@ -3,7 +3,11 @@ class AddIndexForPipelineUserId < ActiveRecord::Migration
...
@@ -3,7 +3,11 @@ class AddIndexForPipelineUserId < ActiveRecord::Migration
disable_ddl_transaction!
disable_ddl_transaction!
def
change
def
up
add_concurrent_index
:ci_commits
,
:user_id
add_concurrent_index
:ci_commits
,
:user_id
end
end
def
down
remove_index
:ci_commits
,
:user_id
if
index_exists?
:ci_commits
,
:user_id
end
end
end
db/migrate/20160805041956_add_deleted_at_to_namespaces.rb
View file @
5d9762b3
...
@@ -5,8 +5,15 @@ class AddDeletedAtToNamespaces < ActiveRecord::Migration
...
@@ -5,8 +5,15 @@ class AddDeletedAtToNamespaces < ActiveRecord::Migration
disable_ddl_transaction!
disable_ddl_transaction!
def
change
def
up
add_column
:namespaces
,
:deleted_at
,
:datetime
add_column
:namespaces
,
:deleted_at
,
:datetime
add_concurrent_index
:namespaces
,
:deleted_at
add_concurrent_index
:namespaces
,
:deleted_at
end
end
def
down
remove_index
:namespaces
,
:deleted_at
if
index_exists?
:namespaces
,
:deleted_at
remove_column
:namespaces
,
:deleted_at
end
end
end
db/migrate/20160808085602_add_index_for_build_token.rb
View file @
5d9762b3
...
@@ -6,7 +6,11 @@ class AddIndexForBuildToken < ActiveRecord::Migration
...
@@ -6,7 +6,11 @@ class AddIndexForBuildToken < ActiveRecord::Migration
disable_ddl_transaction!
disable_ddl_transaction!
def
change
def
up
add_concurrent_index
:ci_builds
,
:token
,
unique:
true
add_concurrent_index
:ci_builds
,
:token
,
unique:
true
end
end
def
down
remove_index
:ci_builds
,
:token
,
unique:
true
if
index_exists?
:ci_builds
,
:token
,
unique:
true
end
end
end
db/migrate/20160819221631_add_index_to_note_discussion_id.rb
View file @
5d9762b3
...
@@ -8,7 +8,11 @@ class AddIndexToNoteDiscussionId < ActiveRecord::Migration
...
@@ -8,7 +8,11 @@ class AddIndexToNoteDiscussionId < ActiveRecord::Migration
disable_ddl_transaction!
disable_ddl_transaction!
def
change
def
up
add_concurrent_index
:notes
,
:discussion_id
add_concurrent_index
:notes
,
:discussion_id
end
end
def
down
remove_index
:notes
,
:discussion_id
if
index_exists?
:notes
,
:discussion_id
end
end
end
db/migrate/20160819232256_add_incoming_email_token_to_users.rb
View file @
5d9762b3
...
@@ -9,8 +9,15 @@ class AddIncomingEmailTokenToUsers < ActiveRecord::Migration
...
@@ -9,8 +9,15 @@ class AddIncomingEmailTokenToUsers < ActiveRecord::Migration
disable_ddl_transaction!
disable_ddl_transaction!
def
change
def
up
add_column
:users
,
:incoming_email_token
,
:string
add_column
:users
,
:incoming_email_token
,
:string
add_concurrent_index
:users
,
:incoming_email_token
add_concurrent_index
:users
,
:incoming_email_token
end
end
def
down
remove_index
:users
,
:incoming_email_token
if
index_exists?
:users
,
:incoming_email_token
remove_column
:users
,
:incoming_email_token
end
end
end
db/migrate/20160919145149_add_group_id_to_labels.rb
View file @
5d9762b3
...
@@ -5,9 +5,15 @@ class AddGroupIdToLabels < ActiveRecord::Migration
...
@@ -5,9 +5,15 @@ class AddGroupIdToLabels < ActiveRecord::Migration
disable_ddl_transaction!
disable_ddl_transaction!
def
change
def
up
add_column
:labels
,
:group_id
,
:integer
add_column
:labels
,
:group_id
,
:integer
add_foreign_key
:labels
,
:namespaces
,
column: :group_id
,
on_delete: :cascade
# rubocop: disable Migration/AddConcurrentForeignKey
add_foreign_key
:labels
,
:namespaces
,
column: :group_id
,
on_delete: :cascade
# rubocop: disable Migration/AddConcurrentForeignKey
add_concurrent_index
:labels
,
:group_id
add_concurrent_index
:labels
,
:group_id
end
end
def
down
remove_index
:labels
,
:group_id
if
index_exists?
:labels
,
:group_id
remove_foreign_key
:labels
,
:namespaces
,
column: :group_id
remove_column
:labels
,
:group_id
end
end
end
db/migrate/20160920160832_add_index_to_labels_title.rb
View file @
5d9762b3
...
@@ -5,7 +5,11 @@ class AddIndexToLabelsTitle < ActiveRecord::Migration
...
@@ -5,7 +5,11 @@ class AddIndexToLabelsTitle < ActiveRecord::Migration
disable_ddl_transaction!
disable_ddl_transaction!
def
change
def
up
add_concurrent_index
:labels
,
:title
add_concurrent_index
:labels
,
:title
end
end
def
down
remove_index
:labels
,
:title
if
index_exists?
:labels
,
:title
end
end
end
db/migrate/20161020083353_add_pipeline_id_to_merge_request_metrics.rb
View file @
5d9762b3
...
@@ -25,9 +25,15 @@ class AddPipelineIdToMergeRequestMetrics < ActiveRecord::Migration
...
@@ -25,9 +25,15 @@ class AddPipelineIdToMergeRequestMetrics < ActiveRecord::Migration
# comments:
# comments:
# disable_ddl_transaction!
# disable_ddl_transaction!
def
change
def
up
add_column
:merge_request_metrics
,
:pipeline_id
,
:integer
add_column
:merge_request_metrics
,
:pipeline_id
,
:integer
add_concurrent_index
:merge_request_metrics
,
:pipeline_id
add_foreign_key
:merge_request_metrics
,
:ci_commits
,
column: :pipeline_id
,
on_delete: :cascade
# rubocop: disable Migration/AddConcurrentForeignKey
add_foreign_key
:merge_request_metrics
,
:ci_commits
,
column: :pipeline_id
,
on_delete: :cascade
# rubocop: disable Migration/AddConcurrentForeignKey
add_concurrent_index
:merge_request_metrics
,
:pipeline_id
end
def
down
remove_index
:merge_request_metrics
,
:pipeline_id
if
index_exists?
:merge_request_metrics
,
:pipeline_id
remove_foreign_key
:merge_request_metrics
,
:ci_commits
,
column: :pipeline_id
remove_column
:merge_request_metrics
,
:pipeline_id
end
end
end
end
db/migrate/20161106185620_add_project_import_data_project_index.rb
View file @
5d9762b3
...
@@ -6,7 +6,11 @@ class AddProjectImportDataProjectIndex < ActiveRecord::Migration
...
@@ -6,7 +6,11 @@ class AddProjectImportDataProjectIndex < ActiveRecord::Migration
disable_ddl_transaction!
disable_ddl_transaction!
def
change
def
up
add_concurrent_index
:project_import_data
,
:project_id
add_concurrent_index
:project_import_data
,
:project_id
end
end
def
down
remove_index
:project_import_data
,
:project_id
if
index_exists?
:project_import_data
,
:project_id
end
end
end
db/migrate/20161124111395_add_index_to_parent_id.rb
View file @
5d9762b3
...
@@ -8,7 +8,11 @@ class AddIndexToParentId < ActiveRecord::Migration
...
@@ -8,7 +8,11 @@ class AddIndexToParentId < ActiveRecord::Migration
disable_ddl_transaction!
disable_ddl_transaction!
def
change
def
up
add_concurrent_index
(
:namespaces
,
[
:parent_id
,
:id
],
unique:
true
)
add_concurrent_index
(
:namespaces
,
[
:parent_id
,
:id
],
unique:
true
)
end
end
def
down
remove_index
:namespaces
,
[
:parent_id
,
:id
]
if
index_exists?
:namespaces
,
[
:parent_id
,
:id
]
end
end
end
db/migrate/20161202152035_add_index_to_routes.rb
View file @
5d9762b3
...
@@ -9,8 +9,13 @@ class AddIndexToRoutes < ActiveRecord::Migration
...
@@ -9,8 +9,13 @@ class AddIndexToRoutes < ActiveRecord::Migration
disable_ddl_transaction!
disable_ddl_transaction!
def
change
def
up
add_concurrent_index
(
:routes
,
:path
,
unique:
true
)
add_concurrent_index
(
:routes
,
:path
,
unique:
true
)
add_concurrent_index
(
:routes
,
[
:source_type
,
:source_id
],
unique:
true
)
add_concurrent_index
(
:routes
,
[
:source_type
,
:source_id
],
unique:
true
)
end
end
def
down
remove_index
(
:routes
,
:path
)
if
index_exists?
:routes
,
:path
remove_index
(
:routes
,
[
:source_type
,
:source_id
])
if
index_exists?
:routes
,
[
:source_type
,
:source_id
]
end
end
end
db/migrate/20161209153400_add_unique_index_for_environment_slug.rb
View file @
5d9762b3
...
@@ -9,7 +9,11 @@ class AddUniqueIndexForEnvironmentSlug < ActiveRecord::Migration
...
@@ -9,7 +9,11 @@ class AddUniqueIndexForEnvironmentSlug < ActiveRecord::Migration
disable_ddl_transaction!
disable_ddl_transaction!
def
change
def
up
add_concurrent_index
:environments
,
[
:project_id
,
:slug
],
unique:
true
add_concurrent_index
:environments
,
[
:project_id
,
:slug
],
unique:
true
end
end
def
down
remove_index
:environments
,
[
:project_id
,
:slug
],
unique:
true
if
index_exists?
:environments
,
[
:project_id
,
:slug
]
end
end
end
db/migrate/20170204181513_add_index_to_labels_for_type_and_project.rb
View file @
5d9762b3
...
@@ -5,7 +5,11 @@ class AddIndexToLabelsForTypeAndProject < ActiveRecord::Migration
...
@@ -5,7 +5,11 @@ class AddIndexToLabelsForTypeAndProject < ActiveRecord::Migration
disable_ddl_transaction!
disable_ddl_transaction!
def
change
def
up
add_concurrent_index
:labels
,
[
:type
,
:project_id
]
add_concurrent_index
:labels
,
[
:type
,
:project_id
]
end
end
def
down
remove_index
:labels
,
[
:type
,
:project_id
]
if
index_exists?
:labels
,
[
:type
,
:project_id
]
end
end
end
db/migrate/20170210062829_add_index_to_labels_for_title_and_project.rb
View file @
5d9762b3
...
@@ -5,8 +5,13 @@ class AddIndexToLabelsForTitleAndProject < ActiveRecord::Migration
...
@@ -5,8 +5,13 @@ class AddIndexToLabelsForTitleAndProject < ActiveRecord::Migration
disable_ddl_transaction!
disable_ddl_transaction!
def
change
def
up
add_concurrent_index
:labels
,
:title
add_concurrent_index
:labels
,
:title
add_concurrent_index
:labels
,
:project_id
add_concurrent_index
:labels
,
:project_id
end
end
def
down
remove_index
:labels
,
:title
if
index_exists?
:labels
,
:title
remove_index
:labels
,
:project_id
if
index_exists?
:labels
,
:project_id
end
end
end
db/migrate/20170210075922_add_index_to_ci_trigger_requests_for_commit_id.rb
View file @
5d9762b3
...
@@ -5,7 +5,11 @@ class AddIndexToCiTriggerRequestsForCommitId < ActiveRecord::Migration
...
@@ -5,7 +5,11 @@ class AddIndexToCiTriggerRequestsForCommitId < ActiveRecord::Migration
disable_ddl_transaction!
disable_ddl_transaction!
def
change
def
up
add_concurrent_index
:ci_trigger_requests
,
:commit_id
add_concurrent_index
:ci_trigger_requests
,
:commit_id
end
end
def
down
remove_index
:ci_trigger_requests
,
:commit_id
if
index_exists?
:ci_trigger_requests
,
:commit_id
end
end
end
db/migrate/20170210103609_add_index_to_user_agent_detail.rb
View file @
5d9762b3
...
@@ -8,7 +8,11 @@ class AddIndexToUserAgentDetail < ActiveRecord::Migration
...
@@ -8,7 +8,11 @@ class AddIndexToUserAgentDetail < ActiveRecord::Migration
disable_ddl_transaction!
disable_ddl_transaction!
def
change
def
up
add_concurrent_index
(
:user_agent_details
,
[
:subject_id
,
:subject_type
])
add_concurrent_index
:user_agent_details
,
[
:subject_id
,
:subject_type
]
end
def
down
remove_index
:user_agent_details
,
[
:subject_id
,
:subject_type
]
if
index_exists?
:user_agent_details
,
[
:subject_id
,
:subject_type
]
end
end
end
end
db/migrate/20170216135621_add_index_for_latest_successful_pipeline.rb
View file @
5d9762b3
...
@@ -4,7 +4,11 @@ class AddIndexForLatestSuccessfulPipeline < ActiveRecord::Migration
...
@@ -4,7 +4,11 @@ class AddIndexForLatestSuccessfulPipeline < ActiveRecord::Migration
disable_ddl_transaction!
disable_ddl_transaction!
def
change
def
up
add_concurrent_index
(
:ci_commits
,
[
:gl_project_id
,
:ref
,
:status
])
add_concurrent_index
:ci_commits
,
[
:gl_project_id
,
:ref
,
:status
]
end
def
down
remove_index
:ci_commits
,
[
:gl_project_id
,
:ref
,
:status
]
if
index_exists?
:ci_commits
,
[
:gl_project_id
,
:ref
,
:status
]
end
end
end
end
rubocop/cop/migration/add_concurrent_index.rb
0 → 100644
View file @
5d9762b3
require_relative
'../../migration_helpers'
module
RuboCop
module
Cop
module
Migration
# Cop that checks if `add_concurrent_index` is used with `up`/`down` methods
# and not `change`.
class
AddConcurrentIndex
<
RuboCop
::
Cop
::
Cop
include
MigrationHelpers
MSG
=
'`add_concurrent_index` is not reversible so you must manually define '
\
'the `up` and `down` methods in your migration class, using `remove_index` in `down`'
.
freeze
def
on_send
(
node
)
return
unless
in_migration?
(
node
)
name
=
node
.
children
[
1
]
return
unless
name
==
:add_concurrent_index
node
.
each_ancestor
(
:def
)
do
|
def_node
|
next
unless
method_name
(
def_node
)
==
:change
add_offense
(
def_node
,
:name
)
end
end
def
method_name
(
node
)
node
.
children
.
first
end
end
end
end
end
rubocop/rubocop.rb
View file @
5d9762b3
...
@@ -3,4 +3,5 @@ require_relative 'cop/gem_fetcher'
...
@@ -3,4 +3,5 @@ require_relative 'cop/gem_fetcher'
require_relative
'cop/migration/add_column'
require_relative
'cop/migration/add_column'
require_relative
'cop/migration/add_column_with_default'
require_relative
'cop/migration/add_column_with_default'
require_relative
'cop/migration/add_concurrent_foreign_key'
require_relative
'cop/migration/add_concurrent_foreign_key'
require_relative
'cop/migration/add_concurrent_index'
require_relative
'cop/migration/add_index'
require_relative
'cop/migration/add_index'
spec/rubocop/cop/migration/add_concurrent_index_spec.rb
0 → 100644
View file @
5d9762b3
require
'spec_helper'
require
'rubocop'
require
'rubocop/rspec/support'
require_relative
'../../../../rubocop/cop/migration/add_concurrent_index'
describe
RuboCop
::
Cop
::
Migration
::
AddConcurrentIndex
do
include
CopHelper
subject
(
:cop
)
{
described_class
.
new
}
context
'in migration'
do
before
do
allow
(
cop
).
to
receive
(
:in_migration?
).
and_return
(
true
)
end
it
'registers an offense when add_concurrent_index is used inside a change method'
do
inspect_source
(
cop
,
'def change; add_concurrent_index :table, :column; end'
)
aggregate_failures
do
expect
(
cop
.
offenses
.
size
).
to
eq
(
1
)
expect
(
cop
.
offenses
.
map
(
&
:line
)).
to
eq
([
1
])
end
end
it
'registers no offense when add_concurrent_index is used inside an up method'
do
inspect_source
(
cop
,
'def up; add_concurrent_index :table, :column; end'
)
expect
(
cop
.
offenses
.
size
).
to
eq
(
0
)
end
end
context
'outside of migration'
do
it
'registers no offense'
do
inspect_source
(
cop
,
'def change; add_concurrent_index :table, :column; end'
)
expect
(
cop
.
offenses
.
size
).
to
eq
(
0
)
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment