summaryrefslogtreecommitdiff
path: root/db
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2018-11-07 13:20:59 +0000
committerDouwe Maan <douwe@gitlab.com>2018-11-07 13:20:59 +0000
commit0cd22a382ef390cda6dab001ab5e4738dd25b3a5 (patch)
tree625d02d37686529cbd19cb90bc003550cae5d70e /db
parent681d927f18f81755d88c56c0b6e267c9866c7bb4 (diff)
parent1208d55206128266690f46f0165df0fc10c24941 (diff)
downloadgitlab-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.rb42
-rw-r--r--db/schema.rb2
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"