diff options
author | Douwe Maan <douwe@gitlab.com> | 2018-11-07 13:20:59 +0000 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2018-11-07 13:20:59 +0000 |
commit | 0cd22a382ef390cda6dab001ab5e4738dd25b3a5 (patch) | |
tree | 625d02d37686529cbd19cb90bc003550cae5d70e /db | |
parent | 681d927f18f81755d88c56c0b6e267c9866c7bb4 (diff) | |
parent | 1208d55206128266690f46f0165df0fc10c24941 (diff) | |
download | gitlab-ce-0cd22a382ef390cda6dab001ab5e4738dd25b3a5.tar.gz |
Merge branch 'refactor-snippets-finder' into 'master'
Rewrite SnippetsFinder to improve performance
Closes #52639
See merge request gitlab-org/gitlab-ce!22606
Diffstat (limited to 'db')
-rw-r--r-- | db/migrate/20181026143227_migrate_snippets_access_level_default_value.rb | 42 | ||||
-rw-r--r-- | db/schema.rb | 2 |
2 files changed, 43 insertions, 1 deletions
diff --git a/db/migrate/20181026143227_migrate_snippets_access_level_default_value.rb b/db/migrate/20181026143227_migrate_snippets_access_level_default_value.rb new file mode 100644 index 00000000000..ede0ee27b8a --- /dev/null +++ b/db/migrate/20181026143227_migrate_snippets_access_level_default_value.rb @@ -0,0 +1,42 @@ +# frozen_string_literal: true + +# See http://doc.gitlab.com/ce/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class MigrateSnippetsAccessLevelDefaultValue < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + ENABLED = 20 + + disable_ddl_transaction! + + class ProjectFeature < ActiveRecord::Base + include EachBatch + + self.table_name = 'project_features' + end + + def up + change_column_default :project_features, :snippets_access_level, ENABLED + + # On GitLab.com this will update about 28 000 rows. Since our updates are + # very small and this column is not indexed, these updates should be very + # lightweight. + ProjectFeature.where(snippets_access_level: nil).each_batch do |batch| + batch.update_all(snippets_access_level: ENABLED) + end + + # We do not need to perform this in a post-deployment migration as the + # ProjectFeature model already enforces a default value for all new rows. + change_column_null :project_features, :snippets_access_level, false + end + + def down + change_column_null :project_features, :snippets_access_level, true + change_column_default :project_features, :snippets_access_level, nil + + # We can't migrate from 20 -> NULL, as some projects may have explicitly set + # the access level to 20. + end +end diff --git a/db/schema.rb b/db/schema.rb index 7509941325f..3ccf9056c93 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1631,7 +1631,7 @@ ActiveRecord::Schema.define(version: 20181107054254) do t.integer "merge_requests_access_level" t.integer "issues_access_level" t.integer "wiki_access_level" - t.integer "snippets_access_level" + t.integer "snippets_access_level", default: 20, null: false t.integer "builds_access_level" t.datetime "created_at" t.datetime "updated_at" |