From c6142fb68ebbb47163b8df64c5db65faf0533d0a Mon Sep 17 00:00:00 2001 From: Andrew Thornton Date: Mon, 13 Feb 2023 21:34:48 +0000 Subject: [PATCH] Increase Content field size of gpg_import_key to MEDIUMTEXT Unfortunately #20896 does not completely prevent Data too long issues and GPGImportKey needs to be increased too. Fix #22896 Signed-off-by: Andrew Thornton --- models/asymkey/gpg_key_import.go | 2 +- models/migrations/migrations.go | 2 ++ models/migrations/v1_19/v242.go | 25 +++++++++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 models/migrations/v1_19/v242.go diff --git a/models/asymkey/gpg_key_import.go b/models/asymkey/gpg_key_import.go index 5b5ef4faba5ed..83881b5c22b1a 100644 --- a/models/asymkey/gpg_key_import.go +++ b/models/asymkey/gpg_key_import.go @@ -23,7 +23,7 @@ import "code.gitea.io/gitea/models/db" // GPGKeyImport the original import of key type GPGKeyImport struct { KeyID string `xorm:"pk CHAR(16) NOT NULL"` - Content string `xorm:"TEXT NOT NULL"` + Content string `xorm:"MEDIUMTEXT NOT NULL"` } func init() { diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go index 79e857388165d..af6e019884ea3 100644 --- a/models/migrations/migrations.go +++ b/models/migrations/migrations.go @@ -457,6 +457,8 @@ var migrations = []Migration{ NewMigration("Add actions tables", v1_19.AddActionsTables), // v241 -> v242 NewMigration("Add card_type column to project table", v1_19.AddCardTypeToProjectTable), + // v242 -> v243 + NewMigration("Alter gpg_import_key content TEXT field to MEDIUMTEXT", v1_19.AlterPublicGPGImportKeyContentFieldToMediumText), } // GetCurrentDBVersion returns the current db version diff --git a/models/migrations/v1_19/v242.go b/models/migrations/v1_19/v242.go new file mode 100644 index 0000000000000..9f200a4eb475a --- /dev/null +++ b/models/migrations/v1_19/v242.go @@ -0,0 +1,25 @@ +// Copyright 2022 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package v1_19 //nolint + +import ( + "code.gitea.io/gitea/modules/setting" + "xorm.io/xorm" +) + +// AlterPublicGPGImportKeyContentFieldToMediumText: set GPGImportKey Content field to MEDIUMTEXT +func AlterPublicGPGImportKeyContentFieldToMediumText(x *xorm.Engine) error { + sess := x.NewSession() + defer sess.Close() + if err := sess.Begin(); err != nil { + return err + } + + if setting.Database.UseMySQL { + if _, err := sess.Exec("ALTER TABLE `gpg_import_key` CHANGE `content` `content` MEDIUMTEXT"); err != nil { + return err + } + } + return sess.Commit() +}