summaryrefslogtreecommitdiff
path: root/db/migrate/20171103000000_set_uploads_path_size_for_mysql.rb
blob: 93cec87f999846883cd775604aaff3e418b70f2e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# See http://doc.gitlab.com/ce/development/migration_style_guide.html
# for more information on how to write migrations for GitLab.

class SetUploadsPathSizeForMysql < ActiveRecord::Migration[4.2]
  include Gitlab::Database::MigrationHelpers

  # Set this constant to true if this migration requires downtime.
  DOWNTIME = false

  def up
    # We need at least 297 at the moment. For more detail on that number, see:
    # https://gitlab.com/gitlab-org/gitlab-ce/issues/40168#what-is-the-expected-correct-behavior
    #
    # Rails + PostgreSQL `string` is equivalent to a `text` field, but
    # Rails + MySQL `string` is `varchar(255)` by default. Also, note that we
    # have an upper limit because with a unique index, MySQL has a max key
    # length of 3072 bytes which seems to correspond to `varchar(1024)`.
    change_column :uploads, :path, :string, limit: 511
  end

  def down
    # It was unspecified, which is varchar(255) by default in Rails for MySQL.
    change_column :uploads, :path, :string
  end
end