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 (
project_id bigint NOT NULL,
ci_build_id bigint,
file_store smallint NOT NULL,
size integer NOT NULL,
file text NOT NULL,
file_count integer 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))
);
......
......@@ -578,7 +578,7 @@ module Gitlab
# 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
# 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"
# Using a descriptive name that includes orinal column's name risks
......@@ -604,7 +604,8 @@ module Gitlab
temp_undo_cleanup_column,
type: old_type,
batch_column_name: batch_column_name,
type_cast_function: type_cast_function
type_cast_function: type_cast_function,
limit: limit
)
transaction do
......@@ -1489,12 +1490,13 @@ into similar problems in the future (e.g. when new tables are created).
"ON DELETE #{on_delete.upcase}"
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)
new_type = type || old_col.type
new_limit = limit || old_col.limit
add_column(table, new, new_type,
limit: old_col.limit,
limit: new_limit,
precision: old_col.precision,
scale: old_col.scale)
......
......@@ -992,7 +992,8 @@ RSpec.describe Gitlab::Database::MigrationHelpers do
temp_undo_cleanup_column,
type: :string,
batch_column_name: :id,
type_cast_function: nil
type_cast_function: nil,
limit: nil
).and_return(true)
expect(model).to receive(:rename_column)
......@@ -1007,7 +1008,7 @@ RSpec.describe Gitlab::Database::MigrationHelpers do
model.undo_cleanup_concurrent_column_type_change(:users, :old, :string)
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(:check_trigger_permissions!).with(:users)
......@@ -1017,7 +1018,8 @@ RSpec.describe Gitlab::Database::MigrationHelpers do
temp_undo_cleanup_column,
type: :string,
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)
expect(model).to receive(:rename_column)
......@@ -1034,7 +1036,8 @@ RSpec.describe Gitlab::Database::MigrationHelpers do
:old,
:string,
type_cast_function: :custom_type_cast_function,
batch_column_name: :other_batch_column
batch_column_name: :other_batch_column,
limit: 8
)
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