Commit e495f2d8 authored by Patrick Bair's avatar Patrick Bair

Merge branch...

Merge branch '294221-gitlab-pages-deployments-over-the-max-int-size-in-bytes-fail-to-upload' into 'master'

Change pages deployments size column to bigint

See merge request gitlab-org/gitlab!50262
parents 8639c778 2e787ef4
---
title: Change pages deployments size to bigint
merge_request: 50262
author:
type: fixed
# frozen_string_literal: true
class ChangePagesDeploymentSizeToBigint < ActiveRecord::Migration[6.0]
include Gitlab::Database::MigrationHelpers
DOWNTIME = false
disable_ddl_transaction!
def up
change_column_type_concurrently :pages_deployments, :size, :bigint
end
def down
undo_change_column_type_concurrently :pages_deployments, :size
end
end
# frozen_string_literal: true
class ChangePagesDeploymentSizeToBigintCleanup < ActiveRecord::Migration[6.0]
include Gitlab::Database::MigrationHelpers
DOWNTIME = false
disable_ddl_transaction!
def up
cleanup_concurrent_column_type_change :pages_deployments, :size
end
def down
undo_cleanup_concurrent_column_type_change :pages_deployments, :size, :integer, limit: 4
end
end
32330327aa8db01b5bc2c533af5387e77ad3dc0c34eacaac16a793df75634ce6
\ No newline at end of file
938aa97919e5a15143a72f33bebb27e501d5ef7cc53cf4e7debe9dee398b7255
\ No newline at end of file
...@@ -14869,10 +14869,11 @@ CREATE TABLE pages_deployments ( ...@@ -14869,10 +14869,11 @@ CREATE TABLE pages_deployments (
project_id bigint NOT NULL, project_id bigint NOT NULL,
ci_build_id bigint, ci_build_id bigint,
file_store smallint NOT NULL, file_store smallint NOT NULL,
size integer NOT NULL,
file text NOT NULL, file text NOT NULL,
file_count integer NOT NULL, file_count integer NOT NULL,
file_sha256 bytea NOT NULL, file_sha256 bytea NOT NULL,
size bigint,
CONSTRAINT check_5f9132a958 CHECK ((size IS NOT NULL)),
CONSTRAINT check_f0fe8032dd CHECK ((char_length(file) <= 255)) CONSTRAINT check_f0fe8032dd CHECK ((char_length(file) <= 255))
); );
......
...@@ -578,7 +578,7 @@ module Gitlab ...@@ -578,7 +578,7 @@ module Gitlab
# type_cast_function - Required if the conversion back to the original type is not automatic # type_cast_function - Required if the conversion back to the original type is not automatic
# batch_column_name - option for tables without a primary key, in this case # batch_column_name - option for tables without a primary key, in this case
# another unique integer column can be used. Example: :user_id # another unique integer column can be used. Example: :user_id
def undo_cleanup_concurrent_column_type_change(table, column, old_type, type_cast_function: nil, batch_column_name: :id) def undo_cleanup_concurrent_column_type_change(table, column, old_type, type_cast_function: nil, batch_column_name: :id, limit: nil)
temp_column = "#{column}_for_type_change" temp_column = "#{column}_for_type_change"
# Using a descriptive name that includes orinal column's name risks # Using a descriptive name that includes orinal column's name risks
...@@ -604,7 +604,8 @@ module Gitlab ...@@ -604,7 +604,8 @@ module Gitlab
temp_undo_cleanup_column, temp_undo_cleanup_column,
type: old_type, type: old_type,
batch_column_name: batch_column_name, batch_column_name: batch_column_name,
type_cast_function: type_cast_function type_cast_function: type_cast_function,
limit: limit
) )
transaction do transaction do
...@@ -1489,12 +1490,13 @@ into similar problems in the future (e.g. when new tables are created). ...@@ -1489,12 +1490,13 @@ into similar problems in the future (e.g. when new tables are created).
"ON DELETE #{on_delete.upcase}" "ON DELETE #{on_delete.upcase}"
end end
def create_column_from(table, old, new, type: nil, batch_column_name: :id, type_cast_function: nil) def create_column_from(table, old, new, type: nil, batch_column_name: :id, type_cast_function: nil, limit: nil)
old_col = column_for(table, old) old_col = column_for(table, old)
new_type = type || old_col.type new_type = type || old_col.type
new_limit = limit || old_col.limit
add_column(table, new, new_type, add_column(table, new, new_type,
limit: old_col.limit, limit: new_limit,
precision: old_col.precision, precision: old_col.precision,
scale: old_col.scale) scale: old_col.scale)
......
...@@ -992,7 +992,8 @@ RSpec.describe Gitlab::Database::MigrationHelpers do ...@@ -992,7 +992,8 @@ RSpec.describe Gitlab::Database::MigrationHelpers do
temp_undo_cleanup_column, temp_undo_cleanup_column,
type: :string, type: :string,
batch_column_name: :id, batch_column_name: :id,
type_cast_function: nil type_cast_function: nil,
limit: nil
).and_return(true) ).and_return(true)
expect(model).to receive(:rename_column) expect(model).to receive(:rename_column)
...@@ -1007,7 +1008,7 @@ RSpec.describe Gitlab::Database::MigrationHelpers do ...@@ -1007,7 +1008,7 @@ RSpec.describe Gitlab::Database::MigrationHelpers do
model.undo_cleanup_concurrent_column_type_change(:users, :old, :string) model.undo_cleanup_concurrent_column_type_change(:users, :old, :string)
end end
it 'passes the type_cast_function and batch_column_name' do it 'passes the type_cast_function, batch_column_name and limit' do
expect(model).to receive(:column_exists?).with(:users, :other_batch_column).and_return(true) expect(model).to receive(:column_exists?).with(:users, :other_batch_column).and_return(true)
expect(model).to receive(:check_trigger_permissions!).with(:users) expect(model).to receive(:check_trigger_permissions!).with(:users)
...@@ -1017,7 +1018,8 @@ RSpec.describe Gitlab::Database::MigrationHelpers do ...@@ -1017,7 +1018,8 @@ RSpec.describe Gitlab::Database::MigrationHelpers do
temp_undo_cleanup_column, temp_undo_cleanup_column,
type: :string, type: :string,
batch_column_name: :other_batch_column, batch_column_name: :other_batch_column,
type_cast_function: :custom_type_cast_function type_cast_function: :custom_type_cast_function,
limit: 8
).and_return(true) ).and_return(true)
expect(model).to receive(:rename_column) expect(model).to receive(:rename_column)
...@@ -1034,7 +1036,8 @@ RSpec.describe Gitlab::Database::MigrationHelpers do ...@@ -1034,7 +1036,8 @@ RSpec.describe Gitlab::Database::MigrationHelpers do
:old, :old,
:string, :string,
type_cast_function: :custom_type_cast_function, type_cast_function: :custom_type_cast_function,
batch_column_name: :other_batch_column batch_column_name: :other_batch_column,
limit: 8
) )
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment