summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2022-08-22 14:32:28 +0100
committerGitHub <noreply@github.com>2022-08-22 14:32:28 +0100
commit9d6a2034bcf0f62dadb51cfe1471632eaa52e36c (patch)
tree8157ec8bb4cc08d98ca9ce66b2bc998cefabb99f
parentaedfc923addcb7aa013f96474e942951e3fda74c (diff)
downloadgitea-9d6a2034bcf0f62dadb51cfe1471632eaa52e36c.tar.gz
gitea-9d6a2034bcf0f62dadb51cfe1471632eaa52e36c.zip
Increase Content field size of gpg_key and public_key to MEDIUMTEXT (#20896)
Unfortunately some keys are too big to fix within the 65535 limit of TEXT on MySQL this causes issues with these large keys. Therefore increase these fields to MEDIUMTEXT. Fix #20894 Signed-off-by: Andrew Thornton <art27@cantab.net>
-rw-r--r--models/asymkey/gpg_key.go2
-rw-r--r--models/asymkey/ssh_key.go2
-rw-r--r--models/migrations/migrations.go7
-rw-r--r--models/migrations/v224.go2
-rw-r--r--models/migrations/v225.go29
5 files changed, 38 insertions, 4 deletions
diff --git a/models/asymkey/gpg_key.go b/models/asymkey/gpg_key.go
index 21554d2150..78dc453e0d 100644
--- a/models/asymkey/gpg_key.go
+++ b/models/asymkey/gpg_key.go
@@ -33,7 +33,7 @@ type GPGKey struct {
OwnerID int64 `xorm:"INDEX NOT NULL"`
KeyID string `xorm:"INDEX CHAR(16) NOT NULL"`
PrimaryKeyID string `xorm:"CHAR(16)"`
- Content string `xorm:"TEXT NOT NULL"`
+ Content string `xorm:"MEDIUMTEXT NOT NULL"`
CreatedUnix timeutil.TimeStamp `xorm:"created"`
ExpiredUnix timeutil.TimeStamp
AddedUnix timeutil.TimeStamp
diff --git a/models/asymkey/ssh_key.go b/models/asymkey/ssh_key.go
index 107a29e985..9f95bb5baf 100644
--- a/models/asymkey/ssh_key.go
+++ b/models/asymkey/ssh_key.go
@@ -41,7 +41,7 @@ type PublicKey struct {
OwnerID int64 `xorm:"INDEX NOT NULL"`
Name string `xorm:"NOT NULL"`
Fingerprint string `xorm:"INDEX NOT NULL"`
- Content string `xorm:"TEXT NOT NULL"`
+ Content string `xorm:"MEDIUMTEXT NOT NULL"`
Mode perm.AccessMode `xorm:"NOT NULL DEFAULT 2"`
Type KeyType `xorm:"NOT NULL DEFAULT 1"`
LoginSourceID int64 `xorm:"NOT NULL DEFAULT 0"`
diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go
index 30c4ad250c..28ffc99886 100644
--- a/models/migrations/migrations.go
+++ b/models/migrations/migrations.go
@@ -406,8 +406,13 @@ var migrations = []Migration{
NewMigration("Drop old CredentialID column", dropOldCredentialIDColumn),
// v223 -> v224
NewMigration("Rename CredentialIDBytes column to CredentialID", renameCredentialIDBytes),
+
+ // Gitea 1.17.0 ends at v224
+
// v224 -> v225
- NewMigration("Add badges to users", creatUserBadgesTable),
+ NewMigration("Add badges to users", createUserBadgesTable),
+ // v225 -> v226
+ NewMigration("Alter gpg_key/public_key content TEXT fields to MEDIUMTEXT", alterPublicGPGKeyContentFieldsToMediumText),
}
// GetCurrentDBVersion returns the current db version
diff --git a/models/migrations/v224.go b/models/migrations/v224.go
index d684d538df..2ed161ef4d 100644
--- a/models/migrations/v224.go
+++ b/models/migrations/v224.go
@@ -8,7 +8,7 @@ import (
"xorm.io/xorm"
)
-func creatUserBadgesTable(x *xorm.Engine) error {
+func createUserBadgesTable(x *xorm.Engine) error {
type Badge struct {
ID int64 `xorm:"pk autoincr"`
Description string
diff --git a/models/migrations/v225.go b/models/migrations/v225.go
new file mode 100644
index 0000000000..6dd460eb68
--- /dev/null
+++ b/models/migrations/v225.go
@@ -0,0 +1,29 @@
+// Copyright 2022 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package migrations
+
+import (
+ "code.gitea.io/gitea/modules/setting"
+
+ "xorm.io/xorm"
+)
+
+func alterPublicGPGKeyContentFieldsToMediumText(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_key` CHANGE `content` `content` MEDIUMTEXT"); err != nil {
+ return err
+ }
+ if _, err := sess.Exec("ALTER TABLE `public_key` CHANGE `content` `content` MEDIUMTEXT"); err != nil {
+ return err
+ }
+ }
+ return sess.Commit()
+}